Thuật ngữ XSS (Cross-Site Scripting)

XSS (Tấn công kịch bản chéo trang) là gì?

Tấn công kịch bản chéo trang, hay XSS, là một lỗ hổng bảo mật trên các trang web cho phép kẻ tấn công thêm các đoạn mã độc hại vào trang web. Phần lớn các đoạn mã này được viết bằng JavaScript.

Nếu ai đó truy cập vào một trang bị ảnh hưởng bởi XSS, trình duyệt của họ sẽ chạy đoạn mã của kẻ tấn công. Điều này có thể dẫn đến việc đánh cắp cookie, chiếm đoạt phiên làm việc, hoặc thực hiện các hành động mà không có sự cho phép của người dùng.

XSS, giống như SQL Injection, thường xuyên được liệt kê trong OWASP Top 10 như một trong những lỗ hổng ứng dụng web phổ biến nhất.

plexicus-xss-attack-ilustration

XSS hoạt động như thế nào?

XSS thường nhắm vào các ứng dụng web không kiểm tra và làm sạch đầu vào của người dùng một cách chính xác.

Ví dụ, nếu một hộp bình luận cho phép HTML hoặc JavaScript thô mà không có bất kỳ bộ lọc nào, kẻ tấn công có thể thêm mã như sau:

<script>alert('Hacked!');</script>

Khi nạn nhân xem trang, mã độc sẽ chạy trong trình duyệt của họ.

Tại sao XSS quan trọng trong an ninh mạng

XSS có thể dẫn đến một vi phạm lớn hơn:

  • Chiếm đoạt tài khoản (đánh cắp cookie phiên để giả mạo người dùng)
  • Đánh cắp dữ liệu (thu thập thông tin từ các biểu mẫu như mật khẩu hoặc thẻ tín dụng)
  • Tấn công lừa đảo (tiêm các biểu mẫu đăng nhập giả)
  • Phát tán phần mềm độc hại (chuyển hướng người dùng đến các trang web độc hại)

Các loại XSS

  1. DOM-Based XSS
  2. Cuộc tấn công xảy ra hoàn toàn trong trình duyệt bằng cách thao tác với Document Object Model (DOM) mà không liên quan đến máy chủ.
  3. Stored XSS
  4. Script độc hại được lưu trữ vĩnh viễn trên máy chủ, chẳng hạn như trong cơ sở dữ liệu, trang hồ sơ.
  5. Reflected XSS
  6. Script được phản chiếu từ máy chủ web (ví dụ, trong URL hoặc thông báo lỗi), script sẽ được thực thi khi nạn nhân nhấp vào liên kết được tạo bởi kẻ tấn công.

Cách ngăn chặn XSS

  • Làm sạch đầu vào & mã hóa đầu ra: luôn làm sạch dữ liệu đầu vào của người dùng trước khi xử lý, chuyển đổi đầu vào của người dùng thành định dạng an toàn
  • Sử dụng Chính sách Bảo mật Nội dung (CSP): hạn chế những script nào có thể được thực thi trong trình duyệt.
  • Tránh sử dụng eval() và JavaScript nội tuyến: để giảm rủi ro tiêm nhiễm.
  • Kiểm tra bảo mật (DAST/IAST): chạy kiểm tra bảo mật để phát hiện sớm các lỗ hổng

Ví dụ trong trường hợp thực tế - Samy worm (MySpace, 2005)

Điều gì đã xảy ra: Samy Kamkar đã công bố một hồ sơ MySpace chứa một payload stored XSS. Khi người dùng khác xem hồ sơ, payload chạy trong trình duyệt của họ, nó (a) thêm Samy làm bạn, (b) thêm cụm từ “Samy là anh hùng của tôi” vào hồ sơ của họ, và (c) tự sao chép vào các trang hồ sơ của những người dùng đó.

Tác động: Worm tự lan truyền đến ~1 triệu người dùng trong vòng ~20 giờ, buộc MySpace phải tạm thời ngừng hoạt động.

Tại sao nó hoạt động: MySpace cho phép HTML/thuộc tính không được thoát trong các trường hồ sơ, cho phép thực thi script được lưu trữ trong trình duyệt của khách truy cập.

Bài học / sửa chữa: Mã hóa đầu ra đúng cách, làm sạch đầu vào, loại bỏ HTML trong các trường hồ sơ, và vá lỗi nhanh chóng. Samy sau đó đã phải đối mặt với hậu quả pháp lý, và MySpace đã triển khai các bộ lọc.

Thuật ngữ liên quan

Bước Tiếp Theo

Sẵn sàng bảo vệ ứng dụng của bạn? Chọn con đường của bạn phía trước.

Tham gia cùng hơn 500 công ty đã bảo vệ ứng dụng của họ với Plexicus

SOC 2 Compliant
ISO 27001 Certified
Enterprise Ready