安全研究員 Simon Koeck 在 Google 開發者文件網站(developers.google.com)發現一個價值 9 萬美元的遠端程式碼執行(RCE)漏洞。該漏洞源於 Google 的共享 DevSite 平台在 OAuth 流程中,將 OAuth 客戶端密鑰(client_secret)同時用作 Flask 會話 Cookie 的簽名金鑰(SECRET_KEY)。由於 Flask 會話 Cookie 僅進行簽名而非加密,攻擊者可解碼 Cookie 內容,發現其中包含序列化後的 OAuth 流程對象,且該對象內明文儲存了 client_id 和 client_secret。研究員驗證了該 client_secret 確實可用於驗證 Cookie 簽名,這意味著攻擊者可以偽造具有有效簽名的會話 Cookie。透過在偽造的 Cookie 中注入惡意的 pickle 負載(例如調用 time.sleep),研究員證明了伺服器會反序列化該負載並執行其中的代碼,從而實現未經身份驗證的遠端程式碼執行。該漏洞影響 developers.google.com、firebase.google.com、developer.android.com 等多個共享同一簽名金鑰的域名。Google 已於 2026 年 10 月 7 日修復此問題,並授予研究員 9 萬美元獎金。
事件背景
Flask 框架預設使用 itsdangerous 庫對會話 Cookie 進行簽名,以防止篡改,但數據內容本身是明文可見的(僅進行 Base64 編碼和可能的 zlib 壓縮)。Python 的 pickle 模組在反序列化過程中會執行任意代碼,因此若反序列化不受信任的輸入,可能導致遠端程式碼執行漏洞。OAuth 客戶端密鑰通常用於伺服器端身份驗證,不應作為會話簽名金鑰使用,因為它可能通過 Cookie 洩漏給客戶端。
社群觀察
社群討論中,有用戶對該漏洞的根本原因表示驚訝,質疑為何如此基礎的設計錯誤能通過代碼審查,並推測 buggy 代碼是否由 AI 生成。另有用戶詢問漏洞賞金獵人的尋找漏洞方法與建議。部分討論涉及對 AI 輔助發現漏洞時人類角色的辯論,以及對不同公司(如 Google 與 Microsoft)漏洞賞金政策差異的比較與調侃。



