對 Google Agent 技術開出的滿分 10 分:ADK Web UI 遠端程式碼執行漏洞(CVE-2026-79696)完整解析
CVE-2026-79696 對 Google Cloud 的 Python 版 Agent Development Kit 拿下 CVSS 4.0 滿分 10.0:在裝有 pytest 的環境下(OSS、Cloud Run、GKE),未經身分驗證的攻擊者可透過偽造的測試 session replay,對 2.0.0 至 2.6.0 版的 adk web 執行任意程式碼。本文解析黑名單為何失守、修補如何運作,以及為什麼 Agent 開發伺服器一再成為攻擊前線。
2026 年 9 月 9 日,一個資安團隊平日只在教科書上見到的 CVE 正式落地:針對市面上部署最廣的 Agent 框架之一,出現了貨真價實的 CVSS 4.0 基礎分數 10.0 滿分漏洞。目標是 Google Cloud 的 Python 版 Agent Development Kit(ADK),編號 CVE-2026-79696 的這個缺陷,允許未經身分驗證的遠端攻擊者對 2.0.0 至 2.6.0 版的 adk web 開發者介面執行任意程式碼,影響範圍涵蓋 Python(OSS)、Cloud Run 與 GKE 環境——只要環境裡裝了 pytest。
如果你在 Google 的技術棧上打造 Agent,這不是掃描器佇列裡的理論性條目,而是一個存在於工程師日常工作工具上的「預先驗證遠端程式碼執行」(pre-auth RCE)攻擊原語。
CVE 到底說了什麼
官方描述對攻擊路徑的交代異常具體:
「A Code Injection vulnerability in adk web in Google Cloud Agent Development Kit (ADK) for Python versions 2.0.0 through 2.6.0 on Python (OSS), Cloud Run, and GKE environments where pytest is installed allows an unauthenticated remote attacker to execute arbitrary code using a crafted test session replay.」
這段話的每個子句都值得拆解:
adk web是 ADK 的本地/開發用 Web UI——開發者在瀏覽器中設定 Agent、與其對話、執行評測的主控台。它本質上是一個 FastAPI 伺服器,隨 CLI 一起安裝。- 「test session replay」(測試 session 重播) 是注入向量。ADK 的評測工具可以將錄製的 session 重播為測試——這對 Agent 回歸測試是非常實用的功能。漏洞的問題在於:經過偽造的重播 payload 會被當成可執行程式碼,而非單純資料。
- 「where pytest is installed」(裝有 pytest 的環境) 是環境觸發條件。pytest 是地球上最常見的 Python 開發相依套件,大量容器映像檔——CI 映像、評測 pod、以及那些「臨時部署」後悄悄變成常駐服務的 Cloud Run——都同時裝有 ADK 與 pytest。
- 「unauthenticated」+「remote」 說明了為什麼 CVSS 4.0 向量是
AV:N/AC:L/AT:N/PR:N/UI:N,且各衝擊維度(含後續系統SC:H/SI:H/SA:H)全數拉滿:不需權限、不需使用者互動、可從網路觸達、攻擊複雜度低。這個組合直接把分數頂到上限。(即使在舊版 CVSS v2 標準下也有 7.5 分。)
黑名單如何失守:一個 denylist bug 的解剖
CVE 引用的修補 commit——a16f6da3314b8dcd9925884cd6fc7fc9ffdd570d,於 8 月 7 日合併、隨 8 月 13 日的 v2.7.0 版本發布——以異常坦白的語氣說明了整個故事。ADK 的 Agent 設定檔(宣告式 Agent 的 YAML 設定)可以引用 Python 的 callable 作為工具(tool)與回呼(callback)。為了避免這個強大機制淪為程式碼執行的後門,ADK 維護了一份「危險」標準函式庫模組的黑名單(denylist)。
黑名單的失敗方式永遠是「遺漏」,而這次失敗的方式正是你可以預測的那種。commit 訊息寫道:
「The denylist for YAML code references named dangerous standard library modules one by one, so anything it missed stayed reachable: it had
profilebut notcProfile,pdbbut notbdb,trace,timeitorpydoc. Several of those execute a string you hand them and need no constructorargs, so naming one as a tool or callback slipped past both existing mitigations and ran arbitrary code.」
請再讀一次:cProfile、bdb、trace、timeit 與 pydoc 都能(直接或間接)接收字串並執行之。只要在 Agent 設定中把其中一個模組指名為「工具」,就能繞過兩道既有防護。修補後的版本不再玩打地鼠遊戲,而是透過 sys.stdlib_module_names 直接封鎖整個標準函式庫,設定檔只能引用 Agent 自身的套件與 google.adk 本身。
這正是工具呼叫與插件系統中反覆出現的同一類 bug:一個執行功能(以名稱設定 callable)被「列舉壞東西」而非「列舉允許的東西」來「保護」。所有允許以 YAML/JSON 設定程式碼引用的 Agent 框架,都應該把這個 CVE 當成一份免費的稽查發現。
這不是 ADK 第一次出事
對分級處置(triage)而言,脈絡很重要。CVE-2026-79696 是 Google Agent 工具鏈一連串資安事件中的最新一例:
- CVE-2026-4810(2026 年 4 月,CVSS 9.3):ADK 1.7.0 至 1.28.1 版的程式碼注入加上缺少身分驗證,允許未驗證攻擊者挾持部署在 GKE 與 Cloud Run 上的 AI Agent。
- CVE-2026-79707(2026 年 9 月初揭露):builder endpoint 的路徑遍歷(path traversal)漏洞,影響 ADK 1.9.0 至 1.21.0。
- 2026 年間一系列強化 commit:將 builder endpoints 限制在 web 旗標之後、強制允許的副檔名、封鎖透過巢狀 YAML 設定的 RCE、為本地 API 伺服器加上 DNS rebinding 防護、以及在 Agent Engine 與 Cloud Run 的正式部署中停用開發端點。
- 另外,Pillar Security 也曾揭露 Google 自家 ADK 儲存庫 CI 中的Agent 對 Agent 權限邊界失效:一個低權限 AI Agent 誘騙維護者 Agent 執行特權指令——這提醒我們,威脅模型如今連 Agent 本身都要算進去。
脈絡的一致性很清楚:adk web 與其開發/builder 端點之所以一再成為攻擊前線,正是因為它們功能豐富、權限寬鬆、又無所不在。一個能載入任意 Agent 程式碼的開發伺服器,實質上就是一個掛著聊天介面的程式碼執行服務。
你現在應該做什麼
- 升級到 ADK for Python ≥ 2.7.0(目前版本為 2.8.0,8 月 25 日發布)。修補早在一個月前就進入了版本線;9 月 9 日 CVE 的正式發布,讓它從「應該修補」變成「遲早被利用」。
- 誠實盤點暴露面。 pytest 條件意味著漏洞藏在你不以為是「伺服器」的映像檔裡:評測環境、CI runner、notebook 映像、原型性質的 Cloud Run 服務。請在各容器登錄庫與程式庫中搜尋
google-adk以及adk web/adk api_server的啟動指令。 - 砍掉可從網路觸達的開發伺服器。
adk web從來就不該對外。如果它可以從 localhost 以外的地方連上——或 VPC 開放範圍超出所需——那才是這個 CVE 真正利用的根本原因。 - 掃描手法本身,而非只看版本號。 只要你在任何地方執行 ADK 2.0.0 至 2.6.0,就檢查 Agent 設定中是否引用了標準函式庫模組作為工具或回呼。修補後的執行環境會封鎖它們;未修補的環境可能早已中招。
- 確認 Google 代管的面。 Google 表示會直接修補雲端代管的實例,但自管的 OSS、GKE 與 Cloud Run 部署,責任在你自己。
更大的圖像:Agent 框架是新一代 CMS
十年前,最大量的 RCE 目標是內容管理系統(CMS)——那些設計上就允許管理員注入程式碼的 PHP 外掛架構。Agent 框架正在結構性地重演這段歷史,而且多了兩個加速因子:它們的設定檔本來就要引用可執行邏輯(工具、回呼、技能),而它們的維運者一邊把工具當成「只是開發用的東西」,一邊把它部署在掛著真實憑證的雲端基礎設施上。
一個不需要身分驗證、不需要使用者互動、對後續系統具完整衝擊的 CVSS 4.0 滿分,等於業界在集體宣告:主要 Agent 框架的預設部署姿態已難以為繼。Google 一個月前修掉了這個特定的 bug;而系統性的教訓——Agent 設定中的程式碼引用應預設全部拒絕(default-deny)、開發伺服器應拒絕對外綁定、評測功能絕不跨越從資料到程式碼的信任邊界——仍然在一次次滿分 CVE 中持續被書寫。
Sources
- [1] https://nvd.nist.gov/vuln/detail/CVE-2026-79696
- [2] https://www.rapid7.com/db/vulnerabilities/cve-2026-79696/
- [3] https://www.tenable.com/cve/CVE-2026-79696
- [4] https://github.com/google/adk-python/releases/tag/v2.7.0
- [5] https://github.com/google/adk-python/commit/a16f6da3314b8dcd9925884cd6fc7fc9ffdd570d
- [6] https://securityonline.info/google-adk-vulnerability-cve-2026-4810-rce-fix/