Cách Công cụ của Chrome cho nhà phát triển giúp chống lại các cuộc tấn công tự XSS

Wolfgang Beyer
Wolfgang Beyer

Tấn công tự XSS là gì?

Tự XSS (tự thực thi tập lệnh trên nhiều trang web) là một loại hình tấn công phi kỹ thuật, lừa bạn thực thi mã độc hại trong trình duyệt web. Không giống như các cuộc tấn công XSS thông thường, dựa vào các lỗ hổng trong ứng dụng web cho phép kẻ tấn công chèn mã độc hại, các cuộc tấn công tự XSS dựa vào các hành động thực thi mã tiềm ẩn của chính bạn.

Các cuộc tấn công tự thực hiện XSS thường liên quan đến việc kẻ tấn công lừa bạn sao chép và dán mã độc vào Bảng điều khiển DevTools của trình duyệt. Kẻ tấn công thường thực hiện việc này bằng cách hứa hẹn một số loại phần thưởng. Đó có thể là:

  • Hứa hẹn rằng mã đó sẽ cấp cho bạn quyền sử dụng các tính năng ẩn hoặc phần thưởng ảo.
  • Giả vờ rằng mã đó là một chương trình kiểm thử bảo mật hoặc sửa lỗi.
  • Lời hứa rằng mã này cho phép bạn xâm nhập vào một trang web để thu lợi.

Sau khi bạn thực thi mã, kẻ tấn công có thể giành quyền kiểm soát tài khoản của bạn. Điều này có thể cho phép kẻ tấn công:

  • Trộm thông tin cá nhân của bạn, chẳng hạn như tên, địa chỉ và số thẻ tín dụng.
  • Thay mặt bạn đăng tin nhắn hoặc bình luận trái phép.
  • Kiểm soát tài khoản mạng xã hội của bạn.
  • Phát tán phần mềm độc hại cho người dùng khác.

Công cụ của Chrome cho nhà phát triển cố gắng giảm thiểu các cuộc tấn công tự thực hiện XSS như thế nào?

Việc cho phép người dùng dán mã vào DevTools rồi thực thi mã đó vốn dĩ đã tiềm ẩn rủi ro. Tuy nhiên, đây cũng là một trong những tính năng cốt lõi của Công cụ của Chrome cho nhà phát triển. Vì vậy, chúng tôi phải tìm ra sự cân bằng giữa việc giảm thiểu các cuộc tấn công tự thực hiện XSS tiềm ẩn và không can thiệp vào công việc của những nhà phát triển chỉ muốn gỡ lỗi trang web.

Lập trình viên thường không sao chép mã họ tìm thấy ở đâu đó trên web, dán mã đó vào DevTools và thực thi mà không xem nhanh nội dung của mã trước. Hầu hết các nhà phát triển đều nhận thức rõ các rủi ro bảo mật khi thực thi mã mà họ tìm thấy ở một góc mờ nhạt trên web.

Công cụ của Chrome cho nhà phát triển tin tưởng rằng nhà phát triển biết mình đang làm gì. Chúng ta không muốn làm chậm hoặc làm mất tập trung của họ theo bất kỳ cách nào khi họ đang sao chép và dán mã.

Chúng tôi cho rằng những người không phải là nhà phát triển có nguy cơ cao hơn nhiều khi trở thành nạn nhân của một cuộc tấn công tự thực hiện XSS. Để bảo vệ bạn, chúng tôi cho rằng việc gián đoạn khi bạn đang làm việc gì đó có khả năng gây nguy hiểm là điều chấp nhận được và có lợi. Khi phát hiện người dùng thiếu kinh nghiệm đang cố gắng dán mã vào DevTools, Chrome DevTools sẽ dừng và hiển thị cảnh báo.

Khi nào DevTools sẽ hiển thị cảnh báo tự XSS?

DevTools sử dụng một phương pháp phỏng đoán rất đơn giản để quyết định xem có hiển thị cảnh báo tự XSS hay không: dựa trên nhật ký bảng điều khiển của hồ sơ người dùng.

Nếu hồ sơ của bạn có ít nhất 5 mục trong nhật ký bảng điều khiển, thì DevTools sẽ không làm phiền bạn bằng bất kỳ cảnh báo hoặc cửa sổ bật lên nào. Nhật ký bảng điều khiển là danh sách các lệnh bạn đã nhập và thực thi trong Bảng điều khiển. Đây là các lệnh bạn thấy khi đặt con trỏ vào Console (Bảng điều khiển) và nhấn liên tục phím mũi tên lên.

Cảnh báo tự XSS trông như thế nào?

Khi một người dùng thiếu kinh nghiệm cố gắng dán mã vào Console, thao tác này sẽ bị chặn và Console sẽ hiển thị cảnh báo.

Cảnh báo tự XSS trong Console.

Bạn có thể ghi đè cảnh báo này và bật tính năng dán, nhưng bạn cần nhập "allow pasting" (cho phép dán) để thực hiện việc này.

Khi một người dùng chưa có kinh nghiệm dán mã vào trình soạn thảo mã DevTools (ví dụ: bảng điều khiển Sources (Nguồn)), trải nghiệm người dùng cũng tương tự như vậy. Thay vì cảnh báo, bạn sẽ thấy một hộp thoại phương thức.

Hộp thoại XSS tự động trong bảng điều khiển Nguồn.

Xin nhắc lại, việc đóng hộp thoại này thôi là chưa đủ để bật tính năng dán. Để ghi đè cảnh báo, bạn cần nhập "allow pasting" (cho phép dán) vào trường nhập.

Đó có phải là chế độ cài đặt một lần không?

Có, sau khi quyết định cho phép dán, bạn sẽ không còn gặp phải cảnh báo tự XSS nữa.

Chúng tôi hy vọng rằng việc này sẽ mang lại sự cân bằng giữa tính hữu ích và sự phiền toái. Bằng cách tăng độ khó, chúng tôi tăng khả năng bạn đọc được cảnh báo, do đó giảm khả năng bị tấn công tự thực hiện XSS.

Công cụ của Chrome cho nhà phát triển lưu giữ một cờ chỉ định việc có hiển thị cảnh báo tự XSS trong hồ sơ Chrome của bạn hay không. Vì vậy, nếu bạn tạo một hồ sơ mới và ngay lập tức bắt đầu dán mã vào DevTools, thì thao tác dán sẽ bị chặn và cảnh báo tự XSS sẽ xuất hiện.

Bạn có thể tắt tính năng này để tự động hoá kiểm thử không?

Nhưng còn kiểm thử tự động thì sao? Nhiều công cụ kiểm thử tạo một hồ sơ tạm thời mới cho mỗi lần chạy kiểm thử. Vì vậy, nếu bạn sử dụng DevTools để gỡ lỗi cho các chương trình kiểm thử tự động, thì thao tác dán vào Console ban đầu sẽ bị chặn.

Để giải quyết vấn đề này, hãy làm theo một trong hai cách sau:

  • Sử dụng Chrome for Testing, một loạt các phiên bản Chrome được thiết kế riêng cho hoạt động kiểm thử và tự động hoá. Cảnh báo tự XSS đã tắt.

  • Đối với các kênh phát hành khác của Chrome, hãy truyền cờ dòng lệnh --unsafely-disable-devtools-self-xss-warnings cho Chrome để tắt hoàn toàn hộp thoại cảnh báo tự xss.

Kết luận

Bạn nghĩ gì về chiến lược này để giảm thiểu các cuộc tấn công tự thực hiện XSS? Nếu bạn có nhận xét hoặc đề xuất, hãy thêm nhận xét vào lỗi này hoặc liên hệ theo một trong những phương thức sau.

Đặc biệt, nếu bạn đang làm việc trên một trang web cảnh báo về các cuộc tấn công tự thực hiện XSS thông qua nhật ký bảng điều khiển, chúng tôi rất muốn trao đổi về việc điều chỉnh các nỗ lực của mình hoặc đo lường tác động của các biện pháp giảm thiểu tự thực hiện XSS.

Tải các kênh xem trước xuống

Hãy cân nhắc sử dụng Chrome Canary, Dev hoặc Beta làm trình duyệt phát triển mặc định. Các kênh xem trước này cho phép bạn sử dụng các tính năng mới nhất của DevTools, kiểm thử các API nền tảng web tiên tiến và giúp bạn tìm thấy vấn đề trên trang web của mình trước khi người dùng phát hiện ra!

Liên hệ với nhóm Công cụ của Chrome cho nhà phát triển

Hãy sử dụng các lựa chọn sau để thảo luận về các tính năng, bản cập nhật mới hoặc bất kỳ nội dung nào khác liên quan đến Công cụ cho nhà phát triển.