解決方案
Ars Technica 於 2022 年 1 月報導,Google 正在著手處理一類已行之有年的攻擊手法:把瀏覽器當成跳板,入侵訪客網路中的路由器及其他裝置。瀏覽器預設幾乎可以連上區域網路內的任何資源,這便催生了跨站請求偽造攻擊。2014 年的一起事件中,駭客竄改了超過 30 萬台路由器的 DNS 設定;2016 年,DNSChanger 惡意軟體則以相同途徑攻擊 Netgear、D-Link、Comtrend 與 Pirelli 的路由器。
解決方案是一項名為私有網路存取(private network access)的規範。當公開網站想存取私有網路中的端點時,Chrome 會送出帶有全新標頭 Access-Control-Request-Private-Network: true 的預檢請求;唯有裝置以 Access-Control-Allow-Private-Network: true 回應,請求才會放行。這套機制建立在 CORS 協定之上。
推行是分階段進行的。從 Chrome 98 起,瀏覽器會送出預檢請求,但失敗時只會在 DevTools 的問題面板記錄一則警告,請求仍會照常發生。大約到了 Chrome 101,若試驗顯示沒有重大破壞,許可就會改為強制。Google 工程師寫道,屆時任何失敗的預檢都會導致抓取失敗,而記錄下來的警告則讓網站擁有者能事先測試自家網站。
達成了什麼
重用 CORS:讓公開網站送出預檢請求,並由內部裝置明確授予許可後,請求才能放行。
為何奏效
瀏覽器必須能連上許多服務,因此預設就能觸及區域網路內的任何東西,攻擊者便加以利用。
路由器與印表機往往防護嚴密,攻擊者於是改從瀏覽器下手。
重用 CORS 意味著沿用熟悉的機制,規範變動也小。
僅記錄的警告讓 Google 能在強制執行前,先看出哪些地方會出問題。
可套用的做法
分階段補上一個長期存在的漏洞,先只記錄,讓你能在規則改為強制之前,先看出哪些地方會出問題。
後續發展
當時的計畫是在 Chrome 98 發出警告,並於 Chrome 101 前後強制要求許可,前提是結果未顯示網際網路有重大部分會因此故障。Ars 並未報導後續發生了什麼事。
追溯依據
參考來源
- New Chrome security measure aims to curtail an entire class of Web attack Ars Technica · arstechnica.com ·