WebUSB Fingerprint: Nguyên lý, Rủi ro và Chiến lược Bảo vệ
Giới thiệu: Từ giao tiếp phần cứng đến theo dõi quyền riêng tư
WebUSB API là một giao diện được W3C tiêu chuẩn hóa, cho phép các trang web giao tiếp trực tiếp với thiết bị phần cứng thông qua giao thức USB. Trước đây, thao tác này chỉ có ứng dụng gốc mới thực hiện được, và sự xuất hiện của WebUSB cho phép trình duyệt kiểm soát ổ USB, thẻ thông minh, cảm biến, thậm chí cả ví phần cứng tiền điện tử. Tuy nhiên, sự tiện lợi này cũng tạo ra một công nghệ theo dõi mới——WebUSB Fingerprint. Nó sử dụng thông tin mô tả thiết bị, số sê-ri, ID nhà sản xuất, ID sản phẩm, v.v. do WebUSB API trả về để xây dựng dấu vân tay người dùng độc đáo, từ đó vượt qua các phương pháp nhận dạng dấu vân tay truyền thống như Cookie, Canvas.
Đối với các nhà vận hành thương mại điện tử xuyên biên giới, nhân viên tiếp thị truyền thông xã hội và những người dùng cần quản lý nhiều tài khoản, WebUSB Fingerprint có thể dẫn đến việc liên kết các tài khoản khác nhau trên cùng một thiết bị, gây ra rủi ro bị khóa tài khoản. Bài viết này sẽ phân tích sâu nguyên lý hoạt động, mối đe dọa thực tế của WebUSB Fingerprint, đồng thời cung cấp các giải pháp bảo vệ khả thi.
Nguyên lý kỹ thuật của WebUSB Fingerprint
1. WebUSB API là gì?
WebUSB là một giao diện JavaScript, trang web sử dụng navigator.usb.requestDevice() để yêu cầu kết nối một thiết bị USB đã được ủy quyền. Sau khi được ủy quyền, trang web có thể đọc một loạt thông tin như bộ mô tả thiết bị, bộ mô tả cấu hình, bộ mô tả giao diện. Trong đó chứa nhiều đặc điểm cố định phần cứng:
- vendorId (ID nhà sản xuất): Mã định danh 16 bit do USB-IF phân bổ, ví dụ 0x8086 đại diện cho Intel.
- productId (ID sản phẩm): Mã định danh kiểu máy của thiết bị.
- iSerialNumber (Số sê-ri): Hầu hết các thiết bị USB đều hiển thị số sê-ri duy nhất (nếu thiết bị hỗ trợ).
- bcdDevice (Phiên bản thiết bị): Phiên bản firmware.
Ngay cả khi thiết bị đã được rút ra hoặc cắm lại, các ID cấp phần cứng này thường không thay đổi. Script trang web có thể truy vấn thông tin thiết bị bất kỳ lúc nào (trong khi chưa ngắt kết nối) sau lần ủy quyền đầu tiên của người dùng, và thậm chí có thể phát hiện xem thiết bị có xuất hiện hay không thông qua polling định kỳ, từ đó xác định tổ hợp phần cứng vật lý của người dùng.
2. Tính duy nhất của dấu vân tay
Không giống như dấu vân tay Canvas hoặc WebGL truyền thống, WebUSB Fingerprint không phụ thuộc vào môi trường trình duyệt hoặc hệ điều hành, mà trực tiếp lấy các định danh duy nhất ở cấp phần cứng. Ví dụ:
- Một người dùng kết nối đồng thời chuột Logitech (vendorId=0x046d), máy in HP (vendorId=0x03f0) và một YubiKey (số sê-ri duy nhất).
- Thông tin tổ hợp từ ba thiết bị này gần như không thể bị người dùng khác sao chép, do đó có thể xây dựng dấu vân tay có độ chính xác cao.
Dữ liệu nghiên cứu cho thấy, trong môi trường người dùng điển hình có 3 thiết bị USB, khả năng phân biệt của WebUSB Fingerprint đạt trên 99,7% (nguồn: bài báo “USB Fingerprinting” của IEEE S&P 2021).
Mối đe dọa thực tế của WebUSB Fingerprint
1. Theo dõi chéo miền
Do thông tin thiết bị USB không ràng buộc với tên miền và người dùng khó có thể xóa hoàn toàn ủy quyền cho mỗi thiết bị (vì ủy quyền lại cần cắm rút vật lý), kẻ tấn công có thể sử dụng cùng một thông tin thiết bị USB để liên kết cùng một người dùng trên nhiều trang web khác nhau. Ví dụ:
- Khi người dùng đăng nhập vào tài khoản mạng xã hội trên trang A, thông tin vendorId + số sê-ri của chuột Logitech được thu thập.
- Người dùng cũng sử dụng cùng một trình duyệt để truy cập trang B (một nền tảng thương mại điện tử khác). Trang B cũng quét thiết bị thông qua WebUSB API, khớp với cùng số sê-ri, từ đó xác định là cùng một người dùng.
Tác động đối với người vận hành nhiều tài khoản: Nếu bạn đăng nhập đồng thời nhiều tài khoản Amazon, Facebook trên cùng một máy tính, ban đầu có thể tránh bị liên kết thông qua cô lập cổng, cô lập IP. Nhưng WebUSB Fingerprint sẽ “xuyên thủng” các biện pháp cô lập này, vì thông tin phần cứng được chia sẻ ở cấp vật lý. Một khi bị phát hiện, nền tảng có thể trực tiếp khóa tất cả các tài khoản liên quan.
2. Theo dõi thụ động cấp thiết bị
Một cách tinh vi hơn: Các trang web độc hại không chủ động yêu cầu ủy quyền thiết bị, mà thông qua việc lắng nghe phương thức navigator.usb.getDevices() (không cần tương tác người dùng) để lấy danh sách thiết bị đã được ủy quyền cho miền này hiện tại. Nếu người dùng từng ủy quyền cho thiết bị USB trên một trang web nào đó, một trang web khác có thể lấy thông tin thiết bị thông qua yêu cầu có hướng (dụ dỗ người dùng nhấp vào hộp thoại ủy quyền). “Ủy quyền thứ cấp” này thường khiến người dùng nhầm tưởng là tương tác bình thường, từ đó làm lộ quyền riêng tư.
Cách phát hiện và phòng ngừa WebUSB Fingerprint
1. Bảo vệ cấp trình duyệt
- Firefox mặc định vô hiệu hóa chức năng WebUSB, có thể tắt hoàn toàn thông qua thiết lập
dom.webusb.enabled. - Chrome và các trình duyệt nhân Chromium khác cung cấp kiểm soát quyền: Người dùng có thể xem và thu hồi tất cả ủy quyền của các trang web đối với thiết bị USB tại
chrome://settings/content/usbDevices. - Sử dụng “Chế độ ẩn danh” hoặc “Container tạm thời” không thể ngăn chặn WebUSB Fingerprint, vì thông tin phần cứng không phụ thuộc vào bộ nhớ trình duyệt.
2. Giải pháp máy ảo và container
Một số người dùng cao cấp sử dụng máy ảo (như VMware, VirtualBox) để tạo môi trường độc lập cho mỗi tài khoản. Tuy nhiên, máy ảo mặc định sẽ chuyển tiếp thiết bị USB của máy chủ sang máy ảo, cũng sẽ làm lộ số sê-ri thiết bị. Cần ngắt kết nối chuyển tiếp trước khi kết nối thiết bị, hoặc sử dụng thiết bị USB ảo không có số sê-ri. Thao tác phức tạp và ảnh hưởng đến hiệu suất.
3. Trình duyệt dấu vân tay chuyên nghiệp: Đóng băng hiệu quả dấu vân tay phần cứng
Đối với những người làm thương mại điện tử xuyên biên giới cần quản lý đồng thời hàng chục hoặc thậm chí hàng trăm tài khoản, giải pháp đáng tin cậy nhất là sử dụng trình duyệt dấu vân tay đã được sửa đổi sâu về dấu vân tay. Loại trình duyệt này có thể mô phỏng hoặc thay thế thông tin thiết bị USB, khiến mỗi cửa sổ trình duyệt hiển thị các đặc điểm phần cứng hoàn toàn khác nhau.
Trình duyệt dấu vân tay NestBrowser đã có tối ưu hóa nhắm mục tiêu trong việc chống WebUSB Fingerprint. Nó không chỉ hỗ trợ cô lập canvas, phông chữ, múi giờ, IP truyền thống, mà còn cung cấp chức năng tùy chỉnh danh sách thiết bị USB. Người dùng có thể đặt trước mỗi môi trường nên hiển thị những thiết bị USB nào (hoặc chặn hoàn toàn các yêu cầu WebUSB API), từ đó tránh thông tin phần cứng thực tế bị thu thập bởi trang web.
Ví dụ, trên cùng một máy tính vật lý, trong môi trường trình duyệt được cấu hình cho tài khoản A, WebUSB phát hiện thấy “Chuột Logitech G102”; trong môi trường cấu hình cho tài khoản B, phát hiện thấy “Chuột Microsoft Designer”. Do mỗi cửa sổ chạy trong sandbox độc lập, dấu vân tay WebUSB của chúng hoàn toàn bị cô lập. Đây chính là một trong những giá trị cốt lõi của Trình duyệt dấu vân tay NestBrowser: Ngăn chặn liên kết cấp phần cứng từ nền tảng.
Thực hành: Cấu hình bảo vệ WebUSB trong Trình duyệt dấu vân tay NestBrowser
Bước 1: Tạo môi trường độc lập
Đăng nhập vào bảng điều khiển Trình duyệt dấu vân tay NestBrowser, nhấp vào “Tạo môi trường trình duyệt mới”. Trong “Cài đặt nâng cao”, tìm tùy chọn “Mô phỏng thiết bị USB”.
Bước 2: Tùy chỉnh dấu vân tay USB
- Bật mô phỏng thiết bị USB: Sau khi đánh dấu, có thể chọn “Mô phỏng thiết bị cố định” hoặc “Thiết bị ngẫu nhiên”.
- Chế độ thiết bị cố định: Chỉ định thủ công vendorId, productId, số sê-ri (thậm chí có thể tạo số sê-ri tùy ý, miễn là không lộ thật).
- Chế độ thiết bị ngẫu nhiên: Mỗi lần mở cửa sổ tự động tạo một bộ dấu vân tay USB ngẫu nhiên, phù hợp cho các tình huống cần nhiều môi trường và không yêu cầu tính nhất quán của thiết bị.
Bước 3: Kiểm tra hiệu quả
Mở trang web mục tiêu (ví dụ: trang quản lý Amazon), sử dụng lệnh JavaScript navigator.usb.getDevices() để kiểm tra. Bạn sẽ thấy mỗi môi trường trả về thiết bị mô phỏng, không phải thông tin phần cứng thực tế. Ngay cả khi đăng nhập đồng thời nhiều tài khoản, nền tảng cũng không thể liên kết chúng thông qua dấu vân tay USB.
Lưu ý: Trong một số tình huống cần kết nối thực tế bàn phím hoặc chuột USB để xác thực (ví dụ: xác thực U key của một số ngân hàng). Lúc này có thể tạm thời tắt mô phỏng USB và sử dụng thiết bị thật, Trình duyệt dấu vân tay NestBrowser hỗ trợ chuyển đổi linh hoạt, không ảnh hưởng đến hoạt động kinh doanh bình thường.
Xu hướng tương lai: Cuộc đấu tranh giữa WebUSB và quyền riêng tư
Tiêu chuẩn WebUSB vẫn đang phát triển. Trong nội bộ W3C đã thảo luận về việc thêm giới hạn “vòng đời ủy quyền người dùng”, ví dụ yêu cầu mỗi lần tải trang phải ủy quyền lại. Ngay cả như vậy, vẫn có thể bị theo dõi trong phiên sau khi ủy quyền. Các nhà sản xuất phần cứng cũng có thể dần loại bỏ số sê-ri cố định trong quá trình sản xuất, nhưng khả năng loại bỏ hoàn toàn dấu vân tay là không cao – vì bản thân tổ hợp thiết bị đã là duy nhất.
Đối với các ngành phụ thuộc vào vận hành nhiều tài khoản, sớm áp dụng công nghệ chống dấu vân tay là lựa chọn thông minh để giảm rủi ro. Ngoài WebUSB, còn có WebBluetooth, WebHID, WebNFC và các API khác cũng có thể được sử dụng để thu thập dấu vân tay. Trình duyệt dấu vân tay toàn diện như Trình duyệt dấu vân tay NestBrowser đã dần bao phủ các vector dấu vân tay mới nổi này, và liên tục cập nhật cơ sở quy tắc, mang đến cho người dùng trải nghiệm “cấu hình một lần, yên tâm lâu dài”.
Kết luận
WebUSB Fingerprint là “sát thủ vô hình” trên chiến trường quyền riêng tư, nó lợi dụng thói quen tâm lý của người dùng về ủy quyền phần cứng, lặng lẽ thiết lập các định danh theo dõi lâu dài. Với tư cách là người vận hành tài khoản, không thể chỉ dựa vào cô lập IP và Cookie truyền thống, mà cần nhìn nhận đúng đắn sức xuyên phá của dấu vân tay cấp phần cứng.
Từ nguyên lý kỹ thuật đến triển khai thực tế, bài viết này đã cung cấp cho bạn một khung nhận thức và giải pháp hoàn chỉnh. Nếu bạn đang tìm kiếm một công cụ thực sự cắt đứt liên kết phần cứng, hãy tìm hiểu sâu hơn về Trình duyệt dấu vân tay NestBrowser – nó đáng tin cậy cả về độ sâu cô lập dấu vân tay và tính dễ sử dụng. Hãy hành động ngay, xây dựng một danh tính số độc đáo cho mỗi tài khoản của bạn.