一位開發者展示瞭如何透過模擬 U2F 安全金鑰來繞過 Firefox 中的 WebUSB 限制,引發了關於瀏覽器硬體訪問能力的新一輪爭論。這個概念驗證展示瞭如何透過程式設計 Raspberry Pi Pico 與網頁進行通訊,儘管 Firefox 不支援 WebUSB,這凸顯了現代瀏覽器在功能與安全之間的複雜平衡。
這種駭客技術的原理是利用 Firefox 雖然不支援 WebUSB,但支援 U2F 安全金鑰的特點。透過將微控制器程式設計為模擬安全金鑰,並透過 U2F 認證訊息中的金鑰控制代碼和簽名欄位傳輸任意資料,開發者建立了一個後門通訊渠道。這使網站能夠控制裝置上的硬體(如 LED 燈),而無需顯式的 WebUSB 支援。
WebUSB 分歧:Chrome 對比 Firefox 和 Safari
評論揭示了技術社群在 WebUSB 支援問題上的深刻分歧。Chrome(以及基於 Chromium 的瀏覽器)支援 WebUSB,而 Firefox 和 Safari 則刻意選擇不實現它。這不僅僅是技術上的差異,更反映了瀏覽器安全模型上的根本哲學分歧。
Mozilla 和 Apple 基於隱私和安全考慮拒絕了 WebUSB,他們認為 USB 裝置並非設計用於處理潛在的惡意互動,且很難獲得使用者有意義的同意。Google 的方法則是透過許可權提示和裝置阻止列表來實現這一功能,特別是對於安全敏感的裝置,如 FIDO/U2F 金鑰。
WebUSB 在主要瀏覽器中的支援情況
- Chrome/Chromium:完全支援
- Firefox:不支援(出於安全和隱私考慮)
- Safari:不支援(出於安全和隱私考慮)
常見的 WebUSB 使用場景
- 向 ESP32 和其他微控制器刷寫韌體
- 配置可程式設計鍵盤
- 更新 Stadia 控制器等硬體
- 管理標籤印表機
- 支援像 MiniDisc 錄音機這樣的專業硬體
安全隱患
- USB 裝置設計時並未考慮惡意輸入
- 難以獲得使用者有效的知情同意
- 裝置指紋識別的潛在風險
- WebUSB 提示與安全金鑰提示的相似性
- 透過許可權混淆導致釣魚攻擊的風險
實際使用場景與安全隱憂
對許多開發者和愛好者來說,WebUSB 提供了顯著的實際好處。它能夠透過瀏覽器配置鍵盤、為 ESP32 等微控制器刷寫韌體,以及無需安裝特定平臺軟體就能程式設計裝置。這些功能的使用者將這種體驗描述為比傳統方法(需要本地應用程式)更加神奇。
然而,安全專家警告關於將 USB 裝置暴露給網站的潛在風險。USB 協議設計時並未考慮網路安全,許多裝置缺乏對惡意輸入的保護。還有關於透過 USB 裝置識別符號進行指紋識別和跟蹤的擔憂。
「每個人都喜歡瀏覽器作為安全沙盒的特性,讓使用者能夠執行不受信任的程式碼。我不明白為什麼人們想在沙盒上戳這麼多洞。」
更廣泛的問題:瀏覽器應該做什麼?
這場辯論觸及了關於網路瀏覽器角色的根本問題。它們應該是具有有限功能的最小文件檢視器,還是應該發展成為具有系統資源訪問許可權的綜合應用平臺?
許多評論者指出,WebUSB 的替代方案通常是下載和安裝本地應用程式,而這些應用程式通常比瀏覽器擁有更廣泛的系統訪問許可權和更少的安全限制。其他人則指出,普通使用者幾乎不需要 WebUSB 功能,這使得為更廣泛的人群增加額外的安全風險變得值得質疑。
討論還強調了設計提供有意義同意的許可權系統的挑戰。許多使用者在不完全理解其含義的情況下點選許可權提示,特別是當這些提示看起來類似於合法的認證請求時。
隨著瀏覽器的不斷發展,擴充套件功能與維護安全之間的這種緊張關係可能仍將是網路平臺開發的核心。文章中展示的創造性駭客技術既顯示了開發者的獨創性,也展示了瀏覽器供應商必須應對的複雜安全考量。