Cách hack Firefox để khắc phục việc không hỗ trợ WebUSB
(github.com/ArcaneNibble)> "Chúng tôi không cần WebUSB!"
- Có một cách để trang web truy cập thiết bị USB mà không cần WebUSB. Ngoài ra, thiết bị cũng có thể được thiết kế để vượt qua yêu cầu xin sự đồng ý của người dùng.
Demo nhanh
- Tải
u2f-hax.uf2lên Raspberry Pi Pico, rồi tảiindex.htmltừ localhost hoặc một ngữ cảnh an toàn khác. - Các nút "On!" và "Off!" sẽ bật/tắt LED, và trạng thái của chân
GP22sẽ được cập nhật định kỳ trên trang.
Làm thế nào điều này khả thi?
- Pico được lập trình để mô phỏng một khóa U2F (khóa bảo mật vật lý hai bước).
- Thay vì chức năng bảo mật, dữ liệu tùy ý được giấu trong "key handle" và chữ ký của thông điệp
U2F_AUTHENTICATE. - Nếu key handle bắt đầu bằng 0xfeedface, Pico sẽ ngay lập tức "xác nhận" sự hiện diện của người dùng và trả về dữ liệu.
Tại sao điều này khả thi?
- Key handle của U2F được thiết kế như một khối dữ liệu opaque do khóa bảo mật "sở hữu".
- Nó được thiết kế để một khóa giá rẻ có thể gắn với nhiều website.
- Khóa lưu trữ nội bộ một khóa mã hóa "master" duy nhất, và khi đăng ký sẽ tạo rồi trả về một cặp khóa công khai/riêng tư mới.
- Key handle được xử lý như dữ liệu opaque nên có thể giấu dữ liệu tùy ý.
Cách trả dữ liệu về
- Giấu dữ liệu bằng chữ ký ECDSA.
- Chữ ký gồm hai số
(r, s), và mỗi số được tính trong một phạm vi nhất định. - Chrome kiểm tra xem các số trong chữ ký có nằm trong phạm vi hay không, còn Firefox thì không.
- Để vượt qua bước kiểm tra tính hợp lệ mặc định của Chrome, byte đầu tiên của mỗi số được đặt thành 0x7f.
Đây có phải là lỗ hổng bảo mật không?
- Không, và cũng không thể truy cập thiết bị USB tùy ý.
- Chỉ hoạt động với những thiết bị cố ý vi phạm quy tắc.
- Mô hình bảo mật của thiết bị USB trên hầu hết nền tảng vốn đã đáng nghi.
- Không nên cắm các thiết bị lạ, không rõ nguồn gốc vào máy tính.
1 bình luận
Ý kiến trên Hacker News
Chủ đề này chủ yếu nói về WebUSB, không hẳn về OP. WebUSB là một kiểu hack rất thú vị
Firefox không hỗ trợ giao tiếp với thiết bị USB tùy ý. Tuy nhiên, nó có hỗ trợ giao tiếp USB với khóa bảo mật U2F
Những người dùng WebUSB thì nói nó rất tuyệt, còn những người không dùng thì bối rối không hiểu tại sao lại cần
Tùy biến bàn phím dùng firmware QMK/Via qua WebUSB là một cơn ác mộng
USB Serial là một công cụ tuyệt vời, và giờ đã có cả một danh sách công cụ dùng trình duyệt để cấu hình thiết bị
Với những người thường xuyên flash thiết bị thì lợi ích là rất rõ ràng. Nhưng với người dùng phổ thông thì không quan trọng lắm
Có lẽ sẽ tốt hơn nếu cổng USB không bị mã chạy trong trình duyệt sử dụng
Flash GrapehenOS lên điện thoại Pixel là một trong những trải nghiệm cài OS dễ chịu và nhanh nhất mà tôi từng có
Mã hóa khóa riêng bằng một khóa "master", rồi trả khóa riêng đã mã hóa làm key handle
Có một cuộc tranh cãi mang tính chính trị liên quan đến WebUSB