台灣即時新聞 · 快速準確全面
快訊

Google開發者平台爆漏洞 未登入也能執行程式碼

Google開發者平台爆漏洞 未登入也能執行程式碼 cover

Google旗下的開發者網站共用平台DevSite,被發現一項嚴重的遠端程式碼執行漏洞。研究人員發現,攻擊者根本不需要登入Google帳號,只要偽造一個瀏覽器Cookie,就能在Google的伺服器上執行任意程式碼。

漏洞的根源出在DevSite處理OAuth登入的方式。平台把OAuth用戶端的密鑰直接放在瀏覽器Cookie裡,又用同一把密鑰作為Cookie的簽章金鑰。只要拿到這把金鑰,攻擊者就能簽出通過網站驗證的假Cookie。

發現漏洞的是資安研究人員Simon Koeck。他在研究DevSite的OAuth登入流程時,注意到網站發出的連線階段Cookie約1,200位元組,明顯超出正常需求,於是深入追查。

追查結果令人意外:Cookie裡放著未經加密的OAuth用戶端密鑰。DevSite處理OAuth登入回呼時,會用Python的pickle模組還原Cookie資料。攻擊者藉此構造惡意Cookie,觸發反序列化漏洞。

Koeck發現,從developers.google.com取得的簽章金鑰,同樣能用來偽造firebase.google.com、developer.android.com等網站接受的Cookie。多個網站共用一把簽章金鑰,金鑰一外洩,多個站點同步淪陷。

為證實漏洞而不影響正式系統,Koeck沒有真的下達系統命令,而是讓伺服器延遲數秒再回應。他透過回應時間變化,確認伺服器執行了他指定的函式,證明攻擊路徑可行。

對使用者來說,好消息是漏洞已在10月7日完成修補。對工程團隊而言,這是一堂金鑰管理教訓:客戶端的資料都不該被視為機密,簽章金鑰更不該和其他用途的密鑰混用。

Koeck在8月6日向Google通報漏洞,Google在8月27日核定9萬美元漏洞獎金,其中包含因研究報告品質優異而加發的20%獎金,肯定他在不破壞系統的前提下完成驗證。

對台灣的軟體團隊而言,這起事件有兩點啟示:整合OAuth時務必檢查密鑰存放位置,客戶端只應存放無法被重用的公開識別資訊;多個服務共用簽章金鑰時,輪換金鑰必須同步更新。

這起事件提醒所有網路服務團隊:安全設計最脆弱的環節,往往不是加密演算法本身,而是金鑰放在哪裡、用在哪些地方這些看似瑣碎的決定。