Tiện ích mở rộng có thể truy cập toàn bộ dữ liệu web của bạn. Tìm hiểu cách đánh giá độ an toàn và bảo vệ quyền riêng tư khi duyệt web.
Đúng vậy, một tiện ích mở rộng trình duyệt có thể đọc và sửa đổi gần như mọi thứ bạn làm trên mạng nếu bạn cấp cho nó các quyền rộng. Một add-on có quyền truy cập "toàn bộ dữ liệu của bạn trên tất cả các trang web" có thể nhìn thấy những trang bạn ghé thăm, văn bản bạn gõ vào biểu mẫu, cookie và lịch sử duyệt web của bạn. Hầu hết tiện ích mở rộng đều trung thực, nhưng điều quan trọng là mô hình cấp quyền: cách an toàn nhất là cài đặt ít tiện ích, cấp quyền truy cập hẹp nhất có thể và kiểm tra chúng định kỳ.
Một tiện ích mở rộng thực sự có thể làm gì
Khi bạn cài đặt một tiện ích mở rộng, bạn cấp cho nó một tập hợp quyền được khai báo trong manifest của nó. Những quyền đó quyết định tiện ích có thể nhìn thấy và thay đổi bao nhiêu hoạt động duyệt web của bạn. Người dùng thường nhấn "Thêm vào trình duyệt" mà không đọc lời nhắc, vì vậy việc hiểu các loại quyền này thực sự nghĩa là gì sẽ rất hữu ích.
Một tiện ích mở rộng có quyền truy cập máy chủ rộng thường có thể:
- Đọc nội dung trang — toàn bộ văn bản, liên kết và cấu trúc của mỗi trang bạn mở
- Đọc và điền các trường biểu mẫu — bao gồm ô tìm kiếm, biểu mẫu đăng nhập và trường thanh toán
- Truy cập cookie — có thể chứa token phiên giúp giữ bạn luôn đăng nhập
- Đọc lịch sử duyệt web — danh sách các trang và URL bạn ghé thăm
- Chèn script — chạy JavaScript của riêng nó bên trong các trang web khác
- Thực hiện yêu cầu mạng — gửi dữ liệu thu thập được đến một máy chủ từ xa
Điểm mấu chốt là tiện ích mở rộng chạy bên trong trình duyệt của bạn với phiên đang hoạt động của bạn. Nó không phải là một trang web từ xa chịu sự ràng buộc của chính sách cùng nguồn gốc; nó là một người trong cuộc đáng tin cậy. Đó chính là lý do tại sao một sai sót nhỏ về quyền có thể gây tác động lớn đến quyền riêng tư. Việc cấp quyền ở cấp manifest này là một khái niệm hoàn toàn khác, rộng hơn nhiều so với quyền ở cấp trang mà chính website có thể kiểm tra qua navigator.permissions.query() — xem Lấy dấu vân tay Permissions API để biết cơ chế riêng biệt, hẹp hơn đó hoạt động ra sao.
Mô hình cấp quyền nói một cách dễ hiểu
Các trình duyệt hiện đại (Manifest V3 của Chrome, WebExtensions của Firefox) mô tả phạm vi của một tiện ích mở rộng thông qua một tệp manifest. Dưới đây là ví dụ đơn giản hóa về phần quyền mà bạn đang ngầm phê duyệt:
{
"name": "Example Extension",
"permissions": ["cookies", "tabs", "storage"],
"host_permissions": ["<all_urls>"],
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["content.js"]
}
]
}
Giá trị <all_urls> đó là thứ cần để mắt tới. Nó có nghĩa là tiện ích mở rộng có thể chạy content script của nó trên mọi trang bạn ghé thăm, đọc các trang đó và tác động lên chúng. Hãy so sánh với một tiện ích chỉ giới hạn ở một tên miền duy nhất, vốn chỉ có thể chạm đến một trang đó mà thôi.
Quyền truy cập máy chủ và <all_urls>
Quyền truy cập máy chủ xác định những trang nào một tiện ích mở rộng có thể hoạt động. Một mẫu như https://*.example.com/* giới hạn nó trong một dịch vụ. Một mẫu <all_urls> hoặc *://*/* cấp quyền truy cập toàn bộ web. Quyền truy cập máy chủ rộng là yếu tố lớn nhất quyết định dấu vết riêng tư của một tiện ích mở rộng.
activeTab và quyền truy cập khi nhấp
Quyền activeTab an toàn hơn nhiều: nó chỉ cấp quyền truy cập tạm thời vào tab hiện tại khi bạn nhấp vào biểu tượng của tiện ích, và quyền truy cập bị thu hồi khi bạn rời khỏi trang. Một tiện ích được xây dựng quanh activeTab không thể âm thầm theo dõi bạn ở chế độ nền. Ở nơi trình duyệt cung cấp, quyền truy cập trang "chạy khi nhấp" biến các tiện ích có phạm vi rộng thành các tiện ích chạy theo yêu cầu.
Content script
Content script là đoạn mã mà tiện ích mở rộng chèn vào các trang bạn ghé thăm. Nó có thể đọc DOM, quan sát những gì bạn gõ và viết lại trang. Content script là cơ chế đằng sau cả các tính năng hợp pháp (so sánh giá, kiểm tra ngữ pháp) lẫn việc thu thập dữ liệu lạm dụng. Độ rộng của mẫu matches của chúng cho bạn biết chúng có thể nhìn thấy bao nhiêu hoạt động duyệt web của bạn.
Khi tiện ích tốt trở nên xấu
Rủi ro không chỉ đến từ những tiện ích mở rộng độc hại được phát hành với ý đồ xấu. Có vài con đường ít rõ ràng hơn cũng dẫn đến cùng một kết cục.
- Tiện ích bị bỏ hoang. Nhà phát triển ngừng bảo trì một add-on. Mã vẫn hoạt động, nhưng các lỗ hổng bảo mật không được vá và tiện ích trở thành một điểm xâm nhập cũ kỹ với quyền truy cập rộng.
- Tiện ích bị mua lại rồi kiếm tiền. Một tiện ích phổ biến, đáng tin cậy được bán cho chủ sở hữu mới, người âm thầm đẩy một bản cập nhật chèn quảng cáo, liên kết tiếp thị hoặc theo dõi. Trình duyệt của bạn tự động cập nhật nó, và những quyền bạn đã cấp từ nhiều năm trước vẫn còn hiệu lực.
- Xâm phạm chuỗi cung ứng. Một tiện ích mở rộng đóng gói hợp pháp một thư viện bên thứ ba hoặc một cấu hình từ xa; nếu phụ thuộc đó hoặc máy chủ đó bị xâm phạm, payload độc hại sẽ tiếp cận tất cả những ai đã cài đặt tiện ích.
Thời điểm nguy hiểm hiếm khi là ngày cài đặt. Đó là bản cập nhật tự động âm thầm nhiều tháng sau, dựa trên những quyền bạn đã phê duyệt và quên mất.
Đây là lý do tại sao câu "lúc tôi cài thì nó vẫn ổn mà" không phải là một sự đảm bảo. Quyền truy cập rộng là một mối nguy thường trực có thể bị kích hoạt ở bất kỳ bản cập nhật nào trong tương lai.
Tiện ích mở rộng và fingerprinting
Ngoài việc đọc dữ liệu của bạn một cách trực tiếp, tiện ích mở rộng có thể khiến bạn dễ bị theo dõi hơn trên các trang khác nhau — và, một cách riêng biệt, dễ bị gắn cờ là tự động hóa hơn. Tập hợp cụ thể các tiện ích bạn đã cài đặt, và những thay đổi chúng tạo ra trên trang, có thể trở thành một phần dấu vân tay trình duyệt của bạn.
Cách một trang web phát hiện bạn đang dùng tiện ích nào
Một trang web không thể yêu cầu trình duyệt liệt kê thẳng ra các tiện ích bạn đã cài. Thứ trông giống danh sách đó nhất là navigator.plugins, nhưng trên các trình duyệt hiện đại, nó chỉ mô tả khả năng xử lý PDF tích hợp sẵn của chính trình duyệt, chứ không bao giờ liệt kê các add-on do người dùng cài đặt. Việc phát hiện tiện ích vì thế đi theo hướng khác: dò tìm những dấu vết mà một tiện ích để lại trên trang.
- Dò tìm tài nguyên. Nhiều tiện ích mở rộng đóng gói các tệp — biểu tượng, stylesheet được chèn vào, gói content script — mà chúng phơi bày cho các trang web để script của chính chúng có thể tải. Một tiện ích khai báo những tệp này là tài nguyên có thể truy cập từ web tại một URL dạng
chrome-extension://<extension-id>/<file>. Một script theo dõi biết ID và tên tệp của một tiện ích phổ biến có thể yêu cầu URL đó và kiểm tra xem nó có tải được không: thành công nghĩa là tiện ích đã được cài, thất bại nghĩa là chưa. Chạy phép kiểm tra này với một danh sách ID tiện ích đã biết sẽ dựng nên một dấu vân tay có/không của tập hợp tiện ích bạn đã cài. Chính kỹ thuật dò tìm này là lý do Manifest V3 siết chặtweb_accessible_resources: một tài nguyên giờ chỉ mở cho những origin được liệt kê trong mẫumatchescủa nó, và tiện ích có thể chọn bậtuse_dynamic_urlđể Chrome thay ID cố định bằng một ID được tạo lại ở mỗi phiên — tức mỗi lần khởi động lại trình duyệt hoặc nạp lại tiện ích. Firefox thì làm điều này mặc định: mỗi thực thể trình duyệt được cấp một UUID ngẫu nhiên trong địa chỉmoz-extension://thay cho ID thật của tiện ích, đúng là để các trang web không thể nhận diện qua đó bạn đã cài những add-on nào. Tuy vậy, cả hai lớp phòng vệ này đều không có hiệu lực hồi tố: một tiện ích chưa bật URL động vẫn đáp lại tại ID công khai và cố định của nó — đó là lý do phép dò tìm này đến nay vẫn hiệu quả trong thực tế. - Kênh phụ về hành vi. Ngay cả một tiện ích không có tài nguyên nào có thể dò trực tiếp vẫn tác động lên trang. Một content script chèn phần tử, thêm class CSS, hoặc xóa các node khớp với danh sách lọc sẽ để lại một dấu vết cấu trúc mà trang có thể quan sát được — những gì trình chặn quảng cáo xóa đi, nút được chèn vào bởi trình quản lý mật khẩu, ô văn bản được đánh dấu bởi công cụ kiểm tra ngữ pháp. Thời điểm thực thi cũng là một tín hiệu: một script chạy ở giai đoạn
document_startthực thi trước mã của chính trang, còn script chạy ởdocument_idlethực thi sau đó, và cả hai thời điểm này trong vòng đời của tiện ích đều có thể đo được từ phía trang. Trình chặn quảng cáo là ví dụ rõ ràng nhất: một trang không thể hỏi trực tiếp liệu có trình chặn quảng cáo hay không, nên nó đặt ra một phần tử mồi hoặc theo dõi một yêu cầu bị chặn rồi suy luận từ kết quả — xem cách các trang web phát hiện trình chặn quảng cáo của bạn để biết ba cách kiểm tra đứng sau kỹ thuật này, và kết quả đó tiết lộ — hay không tiết lộ — điều gì.
Một tập hợp tiện ích hiếm gặp có thể khiến bạn dễ nhận dạng hơn
Điều này liên hệ trực tiếp đến nghịch lý fingerprinting nói trên: một tiện ích bảo mật hiếm gặp có thể khiến trình duyệt của bạn dễ nhận dạng hơn chứ không phải khó hơn, bởi vì ít người dùng khác có cấu hình giống hệt như vậy. Các tiện ích bị phát hiện hoạt động giống như bất kỳ tín hiệu fingerprinting nào khác — xem bài viết của chúng tôi về entropy dấu vân tay và tập ẩn danh để hiểu điều thực sự thu hẹp đám đông mà bạn hòa lẫn vào là sự hiếm gặp, chứ không phải bản thân việc dùng một công cụ nào đó. Cover Your Tracks của EFF đo chính sự đánh đổi về tính độc nhất đó cho toàn bộ trình duyệt của bạn, và một tổ hợp bất thường gồm ba hoặc bốn tiện ích bị phát hiện sẽ tác động theo cách giống hệt như một font chữ hay chuỗi GPU hiếm gặp.
Một tiện ích mở rộng có thể khiến bạn bị gắn cờ là bot không?
Việc phát hiện tiện ích còn phục vụ cho một kiểu tính điểm khác: phát hiện bot. Các framework tự động hóa đôi khi chạy song song với các tiện ích tiện lợi — một trình quản lý proxy, một công cụ hỗ trợ giải CAPTCHA, một công cụ dành cho nhà phát triển bị bỏ quên chưa tắt — trên nền một hồ sơ trình duyệt vốn dĩ bình thường. Phát hiện một trong số đó, đặc biệt là cùng với navigator.webdriver được đặt thành true, sẽ cộng vào cùng điểm rủi ro dùng để gắn cờ trình duyệt headless và lưu lượng được viết script; xem kỹ thuật phát hiện bot để biết những tín hiệu như vậy kết hợp thành một phán quyết ra sao. Điều này cũng có thể gây bất lợi cho người dùng thật — một tiện ích dành cho nhà phát triển hoặc hỗ trợ tiếp cận mà ai đó thực sự dùng hằng ngày đôi khi có thể đẩy một phiên duyệt web bình thường vượt qua ngưỡng tự động hóa của một trang, thêm một lý do nữa để việc giữ vệ sinh tiện ích mở rộng quan trọng ngay cả khi bạn không quan tâm đến việc bị theo dõi quyền riêng tư. Để xem phân tích theo từng nhóm tiện ích và tín hiệu bị phá, hãy đọc tiện ích mở rộng có thể khiến bạn bị coi là bot không.
Để xem dấu vân tay tổng thể của bạn trông như thế nào, hãy đọc hướng dẫn về fingerprinting trình duyệt của chúng tôi, và để so sánh các cách tăng cường bảo vệ, hãy xem so sánh các công cụ bảo vệ quyền riêng tư của chúng tôi.
Cách đánh giá một tiện ích mở rộng trước khi cài đặt
Hãy đối xử với mỗi tiện ích mở rộng như việc cấp cho một ứng dụng quyền truy cập vào các tài khoản của bạn, bởi vì về mặt chức năng đó gần như chính là điều bạn đang làm. Hãy rà soát qua danh sách kiểm tra này.
| Tín hiệu | Rủi ro thấp hơn | Rủi ro cao hơn |
|---|---|---|
| Phạm vi quyền | activeTab, mẫu một máy chủ | <all_urls>, quyền truy cập máy chủ rộng |
| Nhà phát hành | Công ty đã biết hoặc nhà phát triển uy tín | Tài khoản ẩn danh hoặc mới toanh |
| Lượng người dùng và đánh giá | Lượng cài đặt lớn, đánh giá ổn định | Ít người dùng, hoặc đánh giá tăng vọt đột ngột |
| Lần cập nhật cuối | Cập nhật gần đây và đều đặn | Không động đến trong nhiều năm (bị bỏ hoang) |
| Mã nguồn | Mã nguồn mở, có thể kiểm toán | Đóng, bị làm rối, chỉ được minify |
| Cách xử lý dữ liệu | Công bố quyền riêng tư rõ ràng, tối thiểu | Chính sách mơ hồ hoặc không có |
Không một tín hiệu đơn lẻ nào mang tính quyết định, nhưng sự kết hợp của chúng kể nên một câu chuyện. Một tiện ích mã nguồn mở giới hạn ở activeTab từ một nhà phát triển đang hoạt động là một lựa chọn rất khác so với một add-on mã nguồn đóng, dùng <all_urls>, lần cuối được động đến cách đây ba năm.
Bạn cũng có thể kiểm tra những gì hiện đang hoạt động trong chính trình duyệt của mình. Kiểm tra plugin và tiện ích mở rộng của BrowserInsight giúp bạn thấy các add-on có thể phát hiện được và hiểu dấu vết của chúng, còn kiểm tra dấu vân tay cho thấy cấu hình tổng thể của bạn góp phần vào khả năng bị theo dõi như thế nào.
Các bước thực tế để giảm rủi ro
Bạn không cần phải từ bỏ tiện ích mở rộng — bạn cần quản lý chúng một cách có chủ đích.
1. Áp dụng nguyên tắc đặc quyền tối thiểu
Hãy ưu tiên các tiện ích yêu cầu quyền hẹp nhất. Nếu hai add-on làm cùng một việc, hãy chọn cái giới hạn ở activeTab hoặc các máy chủ cụ thể thay vì cái đòi quyền truy cập tất cả các trang.
2. Dùng quyền truy cập trang "khi nhấp"
Đối với các tiện ích hỗ trợ điều này, hãy đặt quyền truy cập trang thành "khi nhấp" để chúng chỉ chạy khi bạn gọi đến. Điều này vô hiệu hóa phần lớn việc thu thập dữ liệu ở chế độ nền mà không mất đi chức năng.
3. Kiểm tra định kỳ
Một hoặc hai lần mỗi năm, hãy mở trang tiện ích mở rộng của trình duyệt và gỡ bỏ bất cứ thứ gì bạn không còn dùng nữa. Mỗi tiện ích đã cài đặt là một bề mặt tấn công; một tiện ích không dùng đến chỉ toàn là mặt hại.
4. Để mắt đến cập nhật và thay đổi chủ sở hữu
Hãy cảnh giác nếu một tiện ích trước đây đơn giản bỗng bắt đầu yêu cầu các quyền mới, rộng hơn — trình duyệt thường sẽ nhắc bạn. Sự mở rộng quyền đột ngột có thể là dấu hiệu của việc thay đổi chủ sở hữu hoặc ý đồ.
5. Dùng chính sách doanh nghiệp khi phù hợp
Trong các môi trường được quản lý, quản trị viên có thể đưa các tiện ích được phê duyệt vào danh sách cho phép và chặn mọi thứ khác thông qua chính sách trình duyệt. Đây là biện pháp kiểm soát đáng tin cậy nhất ở quy mô lớn, loại bỏ hoàn toàn việc phán đoán của từng người dùng.
6. Ưu tiên tính năng có sẵn của trình duyệt thay vì một tiện ích, nếu có
Multi-Account Containers của Firefox từng là cách duy nhất để giữ các danh tính riêng biệt tách nhau trong một trình duyệt — giờ đây tính năng đó đang được gộp thẳng vào trình duyệt, không cần tiện ích nữa. Ở đâu trình duyệt cung cấp sẵn một khả năng tương đương, dùng tính năng có sẵn đó nghĩa là bạn phải tin tưởng ít hơn một tiện ích có quyền truy cập máy chủ rộng. Xem container tabs và theo dõi để biết chính xác việc cách ly đó bao phủ được gì và không bao phủ được gì — đó là một ranh giới lưu trữ, không thể thay thế cho việc rà soát các tiện ích bạn vẫn đang dùng.
Câu hỏi thường gặp
Một tiện ích mở rộng trình duyệt có thể đọc mật khẩu của tôi không?
Nếu một tiện ích mở rộng có quyền chạy trên các trang nơi bạn đăng nhập và đọc các trường biểu mẫu, về mặt kỹ thuật nó có thể quan sát những gì bạn gõ, bao gồm cả mật khẩu, trước khi chúng được gửi đi. Đây là lý do tại sao việc cấp quyền truy cập máy chủ rộng cho các tiện ích không đáng tin cậy lại rủi ro. Các trường mật khẩu không hề được miễn nhiễm một cách thần kỳ trước một content script đang chạy trên trang.
Tiện ích từ cửa hàng chính thức có luôn an toàn không?
Không. Các cửa hàng chính thức thực hiện kiểm duyệt tự động và một phần thủ công, vốn lọc bỏ phần lớn phần mềm độc hại trắng trợn, nhưng việc kiểm duyệt không hoàn hảo. Tiện ích bị bỏ hoang, việc chuyển giao quyền sở hữu và các bản cập nhật đưa thêm theo dõi vào đều có thể lọt qua. Sự hiện diện trên cửa hàng làm giảm rủi ro nhưng không loại bỏ nó.
Tiện ích bảo mật có khiến tôi khó bị theo dõi hơn không?
Đôi khi có, và đôi khi thì ngược lại. Các trình chặn nội dung có thể ngăn nhiều bộ theo dõi, nhưng tập hợp đặc trưng các tiện ích bạn dùng và những thay đổi chúng tạo ra trên trang có thể bổ sung vào dấu vân tay của bạn. Hãy nhắm đến các công cụ được dùng rộng rãi, được bảo trì tốt thay vì những công cụ hiếm gặp, kỳ lạ, và hãy xác minh hiệu quả thực tế bằng một lần kiểm tra dấu vân tay.
Bao nhiêu tiện ích mở rộng là quá nhiều?
Không có con số cố định, nhưng mỗi tiện ích đều thêm quyền, bề mặt tấn công và một tín hiệu fingerprinting tiềm tàng. Một quy tắc tốt là chỉ giữ lại những gì bạn dùng tích cực, ưu tiên các quyền hẹp và gỡ bỏ phần còn lại. Ít tiện ích được chọn lọc kỹ tốt hơn một danh sách dài những tiện ích bị quên lãng.
Bài viết nên đọc
- Giải thích về fingerprinting trình duyệt: Cách bảo vệ quyền riêng tư của bạn
- So sánh các công cụ bảo vệ quyền riêng tư: Chọn đúng phương án bảo vệ
- Container Tabs và Theo Dõi: Cách Ly Cookie Không Ẩn Được Gì
- navigator.plugins: Danh sách plugin cố định vẫn tiết lộ gì
- Kỹ thuật phát hiện bot: Cách nhận diện bot và trình thu thập
- Cover Your Tracks: điểm độc nhất không chứng minh điều gì
- Entropy dấu vân tay trình duyệt và tập ẩn danh là gì
- Vì sao trình chặn quảng cáo chặn cả một trang web


