XSS là gì? Tầm nguy hiểm và cách khắc phục lỗ hổng XSS
Xem nhanh
XSS luôn được xem là nỗi đau đầu đối với dân IT hiện nay khi nhắc đến vấn đề lỗ hổng bảo mật. Vậy bạn đã hiểu rõ được cụ thể XSS là gì hay chưa? Làm sao để có thể bảo vệ hệ thống dữ liệu trước sự tấn công của XSS? Để có đáp án cho câu hỏi này bạn hãy cùng FPT Cloud để tìm đáp án cụ thể.
XSS là gì? Thực tế đây là từ được viết tắt từ cụm tiếng Anh Cross Site Scripting. Bản chất đây là một trong các loại tấn công bảo mật phổ biến và thường xuyên xảy ra nhất ở hệ thống web mà hầu hết các tester có kinh nghiệm đều biết đến.
XSS được đánh giá là một trong những loại tấn công bảo mật khá nguy hiểm đối với các ứng dụng web. Thậm chí nó còn được xem là có thể gây ra những hậu quả cực kỳ nghiêm trọng đối với hệ thống dữ liệu thông tin.
Hiểu một cách đơn giản hơn thì XSS là một đoạn mã độc mà Hacker chèn vào hệ thống. Cách thức mà Hacker sử dụng là thông qua các đoạn Script và thực thi ăn cắp thông tin ở phía Client. Trong đó hầu hết các cuộc tấn công được sử dụng để vượt qua các truy cập, mạo danh người dùng để lấy cắp thông tin.
Mục đích chính của quá trình tấn công chính là đánh cắp dữ liệu nhận dạng của người dùng. Bao gồm như Cookies, Session Tokens cùng các thông tin liên quan khác. Ở hầu hết các trường hợp tấn công này chủ yếu được sử dụng để ăn cắp Cookie của người khác. Mà như các bạn cũng biết Cookies giúp cho người dùng đăng nhập tự động. Do đó nếu như cookies bị đánh cắp đồng nghĩa với việc các hacker cũng có thể đăng nhập bằng thông tin nhận dạng khác vào hệ thống dư liệu. Chính vì thế đây được xem là cuộc tấn công nguy hiểm nhất ở những lỗ hổng hệ thống hiện nay.
Tấn công XSS hiện nay đang được thực hiện ở phía Client. Kiểu tấn công này hoàn toàn có thể thực hiện với hầu hết các ngôn ngữ lập trình khác. Thế nhưng thường xuyên xảy ra nhất trong các cuộc tấn công vẫn là Javascript và HTML.Vậy cuộc tấn công diễn ra như thế nào?
Nhìn chung cách tấn công này thực tế có thể thực hiện thông qua nhiều cách khác nhau. Trong đó chủ yếu phụ thuộc vào các loại tấn công XSS. Những mã độc có thể phản chiếu ở các trình duyệt hệ thống hoặc là lưu trữ trong cơ sở dữ liệu. Mã đọc này sẽ được vận hành một khi người dùng gọi chức năng thích hợp.
Nguyên nhân chính của tấn công này là xác thực đầu vào dữ liệu người dùng không phù hợp. Dữ liệu độc hại ở đầu vào có thể xâm lấn vào dữ liệu đầu ra. Mã độc có thể nhập một Script sau đó chèn vào mã nguồn website. Khi đó, trình duyệt của người dùng sẽ khó để biết mã thực thi có độc hay không. Vậy nên mã độc hại trong cuộc tấn công XSS có thể đang được thực thi trên trình duyệt nạn nhân hoặc thông qua bất cứ hình thức giả nào đang được hiển thị mà mọi người không biết.
Hiện nay trên thực tế có rất nhiều hình thức tấn công XSS có thể xuất hiện để đánh cắp thông tin, dữ liệu. Trong đó bạn có thể tham khảo một số hình thức phổ biến nhất của XSS như sau:
Bạn có thể tìm hiểu chi tiết qua ví dụ phân tích cụ thể. Ví dụ chúng ta có 1 trang web với trường Search. Nếu trường Search là trường có lỗ hổng vậy thì khi người dùng nhập bất kỳ một đoạn Script thì có sẽ được thực thi.
Ví dụ như người dùng nhập đoạn Script đơn giản như hình đây. Một khi nhấn nút “Search” Script được nhập sẽ được thực hiện.
Như bạn có thể thấy trong ví dụ, Script đã nhập vào trường Search được thực thi. Điều này cho thấy lỗ hổng trong cuộc tấn công XSS. Thế nhưng một tập lệnh có hại hơn cũng được nhập. Nhiều Tester kết hợp tấn công Cross Site Scripting Javascrip Injection cũng được thực hiện ở Client. Trong cả 2, những Script tấn công độc hại sẽ được tiêm vào. Song trường hợp tấn công XSS các thẻ script không cần thiết để thực thi script.
>>> Xem thêm: Mã hóa là gì? Vai trò và Các loại mã hóa phổ biến nhất
Như cũng đã nói trên cách tấn công của XSS phụ thuộc vào các loại tấn công cụ thể. Và theo như phân tích hiện nay XSS thực tế gồm 3 loại tấn công phổ biến. Vậy các loại tấn công XSS là gì? Chi tiết đã được phân tích như sau:
Một thực tế cho thấy có rất nhiều hướng khác nhau để khai thác thông tin, dữ liệu thông qua lỗi Reflected XSS. Đây cũng là một trong số các cách được sử dụng phổ biến để chiếm phiên việc làm (Session) của người dùng. Thông qua đây các Hacker có thể truy cập được vào dữ liệu dễ dàng để chiếm quyền của người dùng trên các website. Chi tiết quá trình như sau:
Không giống như cuộc tấn công Reflected XSS thực hiện công cuộc tấn công trực tiếp tới hệ thống của một người dùng mà hacker đã nhắn đến. Stored XSS là loại tấn công sẽ thực hiện trấn áp đến nhiều hệ thống người dùng. Lỗi này không hết sẽ xảy ra ở trường hợp ứng dụng web không được thực hiện kiểm tra kỹ lưỡng những dữ liệu đầu vào trước khi lưu vào cơ sở dữ liệu. Ví dụ như đối với những form góp ý hay các comment,.... xuất hiện trên website.
Đối với loại tấn công Stored các hacker thực tế không thể khai thác trực tiếp mà phải tuân thủ tối thiểu qua 2 bước như sau:
Đầu tiên Hacker thông qua các điểm đầu vào như form, input, textarea,... không được thực hiện kiểm tra kỹ lưỡng để chèn vào các đoạn mã nguy hiểm.
Sau đó người dùng thực hiện lệnh truy cập vào các ứng dụng web. Một khi người dùng tiến hành những thao tác có liên quan đến dữ liệu được lưu này thì các đoạn mã của Hacker sẽ được thực thi. Quá trình thực thi sẽ được thực hiện trên trình duyệt của người dùng đang sử dụng.
So với Reflected XSS thì Stored XSS được đánh giá là nguy hiểm hơn rất nhiều. Đối tượng bị ảnh hưởng có thể là tất cả những người sử dụng ứng dụng web đó. Trong trường hợp nếu nạn nhân là quản trị viên thì còn có nguy cơ bị chiếm quyền vận hành web
Đối với hai loại tấn công này thực tế có 2 sự khác biệt lớn trong quá trình thực hiện tấn công xâm nhập dữ liệu. Chi tiết như sau:
Một loại hình tấn công tới cơ sở dữ liệu có phổ biến không kém đó chính là DOM Based XSS. Vậy bản chất DOM Based XSS là gì? Đây được xem là kỹ thuật khai thác XSS dựa vào cơ sở thay đổi những cấu trúc DOM của tài liệu. Cụ thể chính là HTML.
Giả sử như một website có đường dẫn đăng ký và khi truy cập vào sẽ thấy một form bình thường. Lúc này người dùng sẽ không có chút nghi ngờ gì mà lựa chọn điền các thông tin như được yêu cầu. Thế nhưng Script sẽ ngay lập tức thực thi vào cơ sở dữ liệu, thông tin hệ thống đã bị hack. Chỉ cần mẹo đơn giản là áp dụng DOM Based XSS các hacker đã có thể nhanh chóng xâm nhập vào hệ thống để chiếm đoạt thông tin mà họ cần.
Vậy nên DOM Based XSS cũng được xếp vào dạng hình thức tấn công vô cùng nguy hiểm hiện nay. Chi tiết hơn bạn có thể tham khảo qua kịch bản tấn công được mô phỏng theo hình dưới đây.
XSS thường xuyên tấn công người dùng dưới dạng âm thầm mà không hề hay biết. Thế nhưng bạn hoàn toàn có thể áp dụng các cách kiểm tra cụ thể hoặc sử dụng chiến thuật ngăn chặn các đợt tấn công. Vậy bạn còn chờ gì mà không nhanh tay ghi chép ngay cho mình các thông tin thiết yếu sau đây:
Để có thể biết liệu các hacker có tấn công XSS vào hệ thống cơ sở dữ liệu hay không bạn hãy áp dụng cách kiểm tra thử hộp đen trước. Với cách này bạn có thể hiểu là chúng ta sẽ thực hiện test mà không cần xem xét đến code. Tất nhiên việc kiểm tra code luôn được các chuyên gia khuyến khích vì nó mang đến kết quả khả quan và đáng tin cậy hơn.
Trong quá trình kiểm tra thử, các tester nên nên xem xét những phần nào của website có nguy cơ bị tấn công bởi XSS. Bạn cũng nên liệt kê toàn bộ những nghi ngờ đó thành một tài liệu kiểm thử để giảm thiểu tình trạng bị thiếu sót. Sau đó, các tester hãy lập một bảng kế hoạch để xác định liệu Script nào thực sự cần thực hiện kiểm tra nhất. Trong đó điều quan trọng là kết quả liệu có ý nghĩa gì, ứng dụng ấy dễ bị lỗ hổng hay không và cần được phân tích kết quả sao cho kỹ càng nhất.
Trong khi thực hiện kiểm tra thử nghiệm các cuộc tấn công bạn cần lưu ý kiểm tra xem nó đáp ứng như thế nào đối với những kịch bạn đã nhập? Liệu các kịch bản ấy có đang được thực thi không?
Có thể nhận định rằng XSS được xem là một dạng tấn công cơ sở dữ liệu khá nguy hiểm với nhiều rủi ro tiềm ẩn xảy ra nhất. Thế nhưng người dùng vẫn nên lập cho mình một kế hoạch cụ thể để ngăn ngừa tình trạng này xảy ra. Và thật may với độ phổ biến của các cuộc tấn công hiện đã có khá nhiều cách để ngăn chặn. Trong đó điển hình như Data Validation, Filtering, Escaping. Chi tiết như sau:
Đặc biệt công tác phòng chống tấn công đầu tiên bạn cần thực hiện đó là xác thực đầu vào. tất cả những gì được nhập bởi người dùng phải được xác minh chính xác. Bởi vì đầu vào sẽ tác động trực tiếp đến đầu ra. Việc xác thực này có thể được đặt tên làm cơ sở dữ liệu đồng thời đảm bảo về tính bảo mật của hệ thống dữ liệu đó. Tuy nhiên bạn nên lưu ý việc này cũng chỉ góp phần làm giảm thiểu được những rủi ro chứ không thể ngăn chặn triệt để các lỗ hổng mà sự tấn công XSS gây ra.
Một cách nữa bạn cũng có thể áp dụng để ngăn chặn quá trình tấn công XSS là lọc đầu vào của người dùng. Cách này bạn có thể hiểu là thực hiện tìm kiếm những từ khóa nguy hiểm ở mục nhập của người dùng. Sau đó bạn đem xóa chúng hoặc thực hiện các thao tác thay thế bằng chuỗi trống. Các từ đó có thể sẽ là những thẻ như script hay lệnh javascript, đánh dấu HTML,...
Việc lọc đầu vào của người dùng này thực tế cũng dễ thực hiện. Bạn hoàn toàn có thể áp dụng khoa nhiều cách khác nhau như:
Trường hợp này nhìn chung một số Developer có thể viết mãi riêng của họ để tìm kiếm những từ khóa thích hợp và xóa chúng. Thế nhưng cách dễ dàng hơn mà các chuyên gia gợi ý là chọn thư viện ngôn ngữ lập trình thích hợp để lọc đầu vào. Đây được xem là cách đáng tin cậy vì các thư viện đó thực tế đã được nhiều nhà phát triển áp dụng và thử nghiệm.
Ngoài ra để phòng ngừa quá trình tấn công của XSS bạn cũng có thể áp dụng các ký tự Escape. Và trong thực tế hiện nay thì đa phần những ký tự này đang được thay đổi bằng các mã đặc biệt. Ví dụ ký tự Escape giống như & # 60. Điều quan trọng là bạn làm sao để tìm kiếm các thư viện thích hợp với ký tự Escape.
>>> Xem thêm: Svchost là gì? Cách xử lý Svchost giúp máy tính chạy mượt
Nhìn chung lỗ hổng bảo mật XSS được xem là ít nguy hiểm hơn so với lỗ hổng SQL Injection. Hậu quả của khả năng thực thi Javascript trên một nền tảng web ban đầu bạn nghĩ có vẻ không nghiêm trọng. Bởi vì hầu hết trình duyệt chạy Javascript trong môi trường được kiểm soát bảo mật chặt chẽ. Javascript bị giới hạn quyền truy cập tới hệ điều hành người dùng cùng các file dữ liệu người dùng. Mặc dù vậy nhưng Javascript vẫn có thể cực kỳ nguy hiểm nếu như nó bị lạm dụng trở thành các đoạn mã độc hại. Cụ thể như:
Nếu một kẻ tấn công lạm dụng lỗ hổng XSS trên bất kỳ trang web nào để thực thi mã Javascript tùy ý ở trình duyệt người dùng thì ứng dụng đó và người dùng đều bị xâm hại. XSS không phải là vấn đề của người dùng tương tự như những lỗ hổng bảo mật khác. Nếu nó tác động đến người dùng của bạn thì nó ảnh hưởng tới bạn.
Cross-site Scripting cũng được sử dụng để deface website thay vì nhắm đến mục tiêu người dùng. Kẻ tấn công dùng những đoạn mã injection để thay đổi nội dung của trang web hoặc thậm chí chuyển hướng trình duyệt người dùng tới một website khác.
Những bài viết liên quan:
Trên đây là thông tin chi tiết giúp bạn giải đáp thắc mắc những vấn đề xung quanh về XSS. Hy vọng rằng qua đó bạn sẽ hiểu và áp dụng một cách hiểu quả những kiến thức gợi ý vào công việc trong thực tế để ngăn chặn sự tấn công từ XSS.