Google Chrome đang tiên phong với tính năng “Visited Link Partitioning”, đưa Chrome trở thành trình duyệt web đầu tiên được bảo vệ hoàn toàn khỏi các lỗ hổng bảo mật liên quan đến liên kết đã truy cập. Sự thay đổi này dự kiến cũng sẽ được triển khai cho các trình duyệt dựa trên Chromium khác như Vivaldi và Microsoft Edge.
Chắc hẳn bạn đã từng thấy một số liên kết trên các trang web đổi sang màu tím, hoặc một chỉ báo trực quan khác, sau khi bạn đã truy cập trang được liên kết đó. Giống như nhiều tính năng khác được các trình duyệt web triển khai trong nhiều năm qua, cơ chế này đã vô tình trở thành một cách hiệu quả để theo dõi người dùng trên các trang web khác nhau khi họ truy cập.
Lỗ Hổng Bảo Mật Từ Liên Kết Đã Truy Cập Hoạt Động Như Thế Nào?
Các trình duyệt web cho phép các trang web tùy chỉnh giao diện văn bản và các phần tử khác bằng cách sử dụng các bộ chọn CSS (CSS selectors). Ví dụ, một trang web có thể thêm kiểu cho ‘.dropdown input’ để thay đổi tất cả các phần tử đầu vào trong một phần tử dropdown, thay vì sử dụng ID hoặc class cho từng phần tử riêng lẻ. Bộ chọn ‘:visited’ cho phép các trang web áp dụng kiểu cho các liên kết đến các trang bạn đã truy cập, điều này hữu ích cho việc thay đổi màu tím mặc định hoặc áp dụng các hiệu ứng khác.
Tuy nhiên, việc cho phép các trang web khả năng phát hiện liên kết đã truy cập có một số tác dụng phụ. Một trang web độc hại có thể bao gồm hàng trăm hoặc hàng nghìn liên kết, và bằng cách kiểm tra những liên kết nào khớp với bộ chọn :visited, nó có thể tạo ra một phần hồ sơ lịch sử duyệt web của bạn trên các trang web khác nhau.
Hình ảnh minh họa một liên kết hiển thị trạng thái đã truy cập trên hai trang web khác nhau, cho thấy lỗ hổng theo dõi lịch sử duyệt web.
Các trình duyệt web hiện đại đã có một số biện pháp giảm thiểu để ngăn chặn hành vi này, chẳng hạn như cung cấp dữ liệu trống khi các trang web yêu cầu danh sách các phần tử :visited, và giới hạn các kiểu có thể được áp dụng cho các phần tử :visited. Tuy nhiên, những thay đổi này vẫn chưa ngăn chặn hoàn toàn các lỗ hổng bảo mật. Google cho biết: “Khi khả năng tùy chỉnh của các liên kết đã truy cập tăng lên theo thời gian, số lượng các cuộc tấn công được các nhà nghiên cứu bảo mật phát hiện cũng ngày càng nhiều.”
Giải Pháp Đột Phá Của Chrome: Phân Vùng Lịch Sử Liên Kết Đã Truy Cập
Giải pháp của Google là một hệ thống sandbox cho các liên kết :visited, cô lập lịch sử liên kết cho từng trang web riêng lẻ, thay vì lưu trữ tất cả chúng trong cùng một danh sách mà bất kỳ trang web nào cũng có thể truy cập tiềm năng. Đây cũng là cách thức hoạt động của bộ nhớ cục bộ (local storage) và nhiều API trình duyệt khác.
Công ty đã công bố trong một bài đăng trên blog: “Khi bạn đang duyệt trên Trang A và nhấp vào một liên kết để đi đến Trang B, sự kết hợp của ‘Trang A + Trang B’ sẽ được lưu trữ trong lịch sử :visited của bạn. Bằng cách này, khi bạn truy cập Trang Độc Hại, liên kết của nó đến Trang B sẽ không được hiển thị là :visited vì nó không khớp với cả hai phần của mục ‘Trang A + Trang B’ của chúng tôi (ngữ cảnh nơi bạn đã nhấp vào liên kết ban đầu). Vì không có lịch sử duyệt web nào được hiển thị trên Trang Độc Hại, nó không thể lợi dụng bất kỳ khai thác nào. Do đó, lịch sử trình duyệt của bạn được an toàn!”
Ảnh chụp màn hình minh họa cách hoạt động của tính năng phân vùng liên kết đã truy cập (Visited Link Partitioning) trong Chrome, cho thấy lịch sử duyệt web được bảo vệ.
Hệ thống cô lập này sẽ chặn hoàn toàn mọi lỗ hổng bảo mật tiềm ẩn xung quanh các liên kết :visited. Google cũng đã thảo luận về việc loại bỏ các biện pháp giảm thiểu trước đó, vì chúng không còn cần thiết nữa, nhưng đó là “công việc trong tương lai” có thể sẽ không diễn ra ngay lập tức.
‘Visited Link Partitioning’ Sẽ Có Mặt Trong Chrome 136
Google cho biết tính năng phân vùng liên kết đã truy cập (Visited Link Partitioning) sẽ có sẵn trong Chrome 136, dự kiến sẽ được triển khai một phần vào ngày 23 tháng 4 năm 2025 và phát hành đầy đủ vào ngày 29 tháng 4 năm 2025. Có thể các trình duyệt web khác dựa trên cùng mã nguồn Chromium (như Vivaldi, Edge, Opera, v.v.) sẽ nhận được tính năng này khi chúng cập nhật lên Chromium 136 hoặc phiên bản mới hơn.
Mozilla ủng hộ ý tưởng phân vùng liên kết đã truy cập, nhưng chưa rõ khi nào Firefox có thể triển khai tính năng tương tự – ý tưởng này đã được đề xuất lần đầu tiên tám năm trước. Đội ngũ WebKit của Apple cũng thích ý tưởng này, nhưng một lần nữa, không có xác nhận về thời điểm nó có thể xuất hiện trong Safari.
Tài liệu tham khảo:
- Chrome for Developers (developer.chrome.com)
- Mozilla Developer Network (developer.mozilla.org)
- Chromium Dash (chromiumdash.appspot.com)
- WebKit Standards Positions (github.com/WebKit/standards-positions)