// 威脅簡報
Gemini CLI 在 CI 中自動信任工作目錄:外部 PR 裡的 .gemini/.env 可在沙箱啟動前於主機執行指令
- CVSS
- 7.8 HIGH
- CISA KEV
- 未列入
- 弱點類型
- CWE-78 · CWE-20
人工審稿 2026-09-24指令測試:未提供漏洞重現:未進行驗證紀錄 ↓
Gemini CLI 在 CI 無人值守模式下自動信任工作目錄,外部 PR 夾帶的惡意 .gemini/.env 可在沙箱啟動前於主機上執行指令。
| 誰會中 | 在 CI(自動化建置)中以無人值守模式執行 Gemini CLI 穩定版 0.39.1 以前或預覽版 0.40.0-preview.3 以前(含 0.40.0-preview.2)或 run-gemini-cli GitHub Action 0.1.22 以前版本,而且會處理外人可影響的內容(例如外部貢獻者的 PR)的工作流程。一般互動式使用不在此列。 |
|---|---|
| 後果 | 如果條件成立,攻擊者可以在建置主機上執行指令,進而接觸該工作流程能存取的密鑰、憑證與原始碼。目前沒有來源回報已遭實際利用。 |
| 現在該做什麼 | 把 Gemini CLI 升級到 0.39.1(或 0.40.0-preview.3),Action 升級到 0.1.22;有固定 gemini_cli_version 的工作流程要手動調高版本。只在工作流程只處理可信內容時才開啟「信任工作目錄」設定。查看依據(4)
|
| 受影響版本 | Gemini CLI 0.39.1 以前,以及 0.40.0-preview.2;run-gemini-cli Action 0.1.22 以前查看依據:來源說法不一(4)
|
| 修好的版本 | Gemini CLI 0.39.1、0.40.0-preview.3 以上;run-gemini-cli Action 0.1.22 以上查看依據(3)
|
| CVSS 向量 | 顯示完整向量CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H |
| 時間點 |
|
| CISA KEV | 未列入(未列入 KEV 不代表沒有被利用)查看依據(2)
|
藍隊應對手冊
確認、修補 / 緩解、應變、強化。版本符合受影響條件不等於已被入侵;檢查沒有結果也不等於安全,每一項都有能證明與不能證明的範圍。標記的步驟對應下方攻擊流程裡可以擋下攻擊的那一步。
- 01找出使用 run-gemini-cli 的工作流程與固定版本
Action 低於 0.1.22,或 gemini_cli_version 固定在 0.39.1 以前,就要處理。沒有設定 gemini_cli_version 的工作流程,官方說會預設使用最新的已修補 CLI。
唯讀查詢grep -rnE "run-gemini-cli|gemini_cli_version" .github/workflows/ - 02確認本機或映像檔裡的 Gemini CLI 版本
穩定版低於 0.39.1、預覽版低於 0.40.0-preview.3(0.40.0-preview.2 也受影響),即屬受影響版本。
唯讀查詢npm ls -g @google/gemini-cli - 03檢查外部 PR 是否動過 .gemini/
官方沒有發布入侵指標或偵測指引;這是 PlainCVE 的建議:回顧對外部 PR 執行過的 CI 紀錄,並找出新增或修改 .gemini/ 目錄的 PR。
唯讀查詢git log --all --oneline -- .gemini/
- 01升級 Gemini CLI 與 Action
Gemini CLI 升到 0.39.1 或 0.40.0-preview.3,Action 升到 0.1.22;有固定版本的工作流程要調高並檢查設定。
- 02只對可信工作流程開啟「信任工作目錄」
修補後 CI 預設不信任工作目錄。只有工作流程只處理可信內容時,才設定信任環境變數或 --skip-trust;變數名稱各來源不一致,請查你所用版本的文件。
- 01輪替受影響工作流程能碰到的密鑰
如果受影響的工作流程曾對不可信 PR 執行,輪替它能存取的 token 與憑證。這是 PlainCVE 的推論,不是官方指引,也不代表已確認外洩。
完整修復步驟與說明
| 元件 | 升級到 |
|---|---|
| @google/gemini-cli(npm) | 0.39.1;預覽版用 0.40.0-preview.3 |
| google-github-actions/run-gemini-cli | 0.1.22 |
- 這是會破壞相容性的變更。 升級後,CI 預設不再信任工作目錄。依賴工作區設定的流程會讀不到那些設定;如果資料夾不被信任,無人值守模式會以
FatalUntrustedWorkspaceError結束。請先想好哪些工作流程只處理可信內容,再決定要不要開啟信任。 - 信任變數名稱請以你的版本文件為準。 公告與修補 PR 寫
GEMINI_TRUST_WORKSPACE,現行 CLI 文件與 Action 信任指引寫GEMINI_CLI_TRUST_WORKSPACE;另有--skip-trust參數。目前版本接受哪一個,我們無法確認。 - 不要為了讓流程恢復運作,就對處理外部 PR 的工作流程開啟信任。 這等於把修補關掉。這類工作流程應先依官方信任指引強化(最小權限 token、手動觸發、只允許唯讀工具)。
- 修補後在不可信資料夾中,工作區
settings.json、.env、擴充套件管理、工具自動核准、自動載入記憶與脈絡、MCP 伺服器及自訂指令都會被擋下(官方文件)。
攻擊流程
從左到右是攻擊發生的順序。藍色盾牌代表這一步可以被擋下,越早擋下越好。點圖示可看細節。
- 攻擊者
攻擊者送出一個夾帶惡意 .gemini/.env 的 PR
不需要是專案成員,只要能對倉庫送 PR 或以其他方式影響工作目錄內容。
防禦: 不要讓 AI 工作流程對外部 fork 的內容自動執行;改由維護者手動觸發,或依 author_association 過濾。
- 你的系統
CI 工作流程以無人值守模式對這份 PR 執行 Gemini CLI
例如透過 run-gemini-cli Action 自動審查 PR。
防禦: 依 Action 的信任指引,把非協作者的 issue 與 PR 視為不可信內容。
- 你的系統
舊版在 CI 中自動信任工作目錄,讀進專案的 .env
互動模式會先詢問使用者是否信任資料夾,但無人值守模式跳過了這一步,直接讀取 .gemini/ 裡的環境變數等設定。
防禦: 升級到 Gemini CLI 0.39.1 / Action 0.1.22:不可信的資料夾不再載入 .env,無人值守模式會直接以錯誤結束。
- 你的系統
容器啟動器在沙箱啟動前使用這些值,在主機上執行指令
因為這一步發生在沙箱之外,沙箱無法提供保護。具體是哪個變數、如何被使用,官方未公開。
防禦: 同上,升級是根本解法。
- 攻擊者
攻擊者接觸工作流程可存取的密鑰與原始碼
研究者 Novee 指出,這可能導致 token 被竊與供應鏈橫向擴散。
防禦: 給工作流程最小權限的 token,處理不可信內容的 checkout 步驟設 persist-credentials: false,密鑰只放在 GitHub Secrets。
影響範圍
| 條件 | 是否受影響 |
|---|---|
Gemini CLI 穩定版 0.39.1 以前、預覽版 0.40.0-preview.3 以前(含 0.40.0-preview.2),在 CI 無人值守模式下執行,而且攻擊者能控制工作目錄裡的設定檔(例如外部 PR 帶進的 .gemini/.env) | 受影響 |
| run-gemini-cli Action 0.1.22 以前,而且它執行的受影響版本 CLI 跑在攻擊者能放入設定檔的工作目錄上(例如 checkout 外部 PR 的程式碼) | 受影響 |
| 工作流程只讀取 issue 或留言文字,工作目錄是自己的可信程式碼 | 不符合本 CVE 的條件(需要不可信的 .gemini/.env);但同一份公告的 --yolo 工具允許清單問題可能適用,見下方 |
| Gemini CLI 0.39.1、0.40.0-preview.3 以上;Action 0.1.22 以上 | 已修補 |
Action 沒有設定 gemini_cli_version | 官方說會預設使用最新的已修補 CLI |
| 在自己電腦上互動式使用 Gemini CLI | 互動模式本來就會先詢問是否信任資料夾,不屬於這個遠端情境 |
| CI 工作流程只處理團隊自己的可信程式碼 | 缺少攻擊者可放入檔案的入口,但仍建議升級 |
各來源對預覽版的描述不同:CVE 紀錄只寫「< 0.39.1」,NVD 另外列出 0.40.0-preview.2,GitHub 倉庫公告寫「< 0.40.0-preview.3」。
Google 公告說這次變更「影響所有」Gemini CLI GitHub Action。PlainCVE 的解讀是:這句話指的是所有使用者都會碰到的行為變更;要真的被利用,仍需要工作流程處理不可信的內容。這是我們的解讀,不是 Google 的說法。
原理
Gemini CLI 是 Google 的 AI 程式助理,可以在終端機裡讀寫程式碼,也能透過 run-gemini-cli Action 放進 GitHub 的 CI(程式碼變動時自動建置、測試的系統)裡,例如自動審查 PR。
專案可以在自己的 .gemini/ 資料夾裡放設定,包括 .env 檔(存放環境變數,也就是程式啟動時讀取的設定值)。因為這些設定來自程式碼本身,Gemini CLI 設計了「資料夾信任」:互動使用時,會先問你是否信任這個資料夾,不信任就不套用。
問題在於 無人值守模式(headless,也就是 CI 裡沒有人按確認的情況)直接把工作目錄當成可信。於是,外部貢獻者 PR 裡的 .gemini/.env 會被讀進來。CVE 紀錄指出,這些值會影響「容器啟動器」,也就是負責啟動沙箱的元件,而它在 沙箱啟動之前 就在主機上執行,所以沙箱來不及保護。結果是攻擊者可以在建置主機上執行指令。Novee 指出,這讓攻擊者能接觸工作流程可取得的密鑰、憑證和原始碼,進而竊取 token 或攻擊供應鏈。
簡單說:信任與否是依「執行模式」決定,而不是依「內容從哪裡來」決定。具體是哪個變數、如何被使用,官方沒有公開,本頁也不推測。
有問題的思路(概念示意,不是原始程式碼):
展開程式碼範例(python)
if headless_mode:
trusted = True # CI 裡直接當作可信
if trusted:
load_env(workspace / ".gemini/.env")
launch_container() # 沙箱啟動前在主機上執行,已受 .env 影響修好的思路:
展開程式碼範例(python)
trusted = is_explicitly_trusted(workspace) # 使用者明確設定才算
if not trusted:
if headless_mode:
raise FatalUntrustedWorkspaceError # 直接停止
# 不載入 .env、工作區設定、MCP 伺服器等
else:
load_env(workspace / ".gemini/.env")
launch_container()同一份公告裡的另一個問題(不屬於本 CVE): Google 的公告 GHSA-wpqr-6v78-jr5g 還提到 --yolo(自動核准)模式會忽略 ~/.gemini/settings.json 裡的工具允許清單,可能讓提示注入導致遠端執行程式。這部分主要由 Pillar Security 回報。CVE 紀錄的描述只涵蓋 .env 與容器啟動器的問題,本頁也只談這一項。部分二手來源(Novee 的漏洞頁、GitHub Advisory Database 的摘要)把兩者合在一起描述,請留意。
時間軸
| 日期 | 事件 |
|---|---|
| 2026-04-16 至 04-20 | Pillar 回報 --yolo 相關的攻擊鏈(另一個問題),Google 停用有風險的工作流程 |
| 2026-04-23 | 修補 PR #25814 合併 |
| 2026-04-24 | 釋出 Gemini CLI v0.39.1 與 Action v0.1.22;GHSA 公開 |
| 2026-04-29 至 04-30 | Novee 發表文章;The Register、The Hacker News 報導(The Register 當時說尚未指派 CVE) |
| 2026-06-17 | CVE 編號保留 |
| 2026-06-24 | GoogleCloud 公開 CVE |
| 2026-07-02 | NVD 分析最後更新 |
Novee 回報的日期不明。
延伸閱讀
- 評分差異: NVD 的 CVSS 3.1 為 7.8(判定為本機攻擊、需要使用者互動);Google(CNA)的 CVSS 4.0 為 10.0,GHSA 的 CVSS 3.1 也是 10.0(判定為可遠端、不需互動)。差異來自對「外部 PR 觸發 CI」這種情境的不同判斷。本頁的 severity 欄位採用 NVD 的分數。
- CWE 不一致: CNA 標 CWE-20(輸入驗證不當),NVD 標 CWE-78(作業系統指令注入);CVE 描述本身的用字比較接近 CWE-78。GHSA 列了 CWE-20、77、78、200,涵蓋兩個問題。
- CVE 對應: GHSA 頁面仍顯示「No known CVE」,但 CVE 紀錄唯一的參考連結就是這份 GHSA。
- 致謝: GHSA 致謝 Elad Meged(Novee Security)與 Dan Lisichkin(Pillar Security);CVE 紀錄致謝 Elad Meged 與 Devansh Batham。後者與本 CVE 的關係未能確認。
- 利用狀況: 目前沒有來源回報遭實際利用。提供給我們的紀錄說本 CVE 不在 CISA KEV,但研究時無法連上 CISA 網站獨立確認。
- 官方沒有發布入侵指標;偵測與密鑰輪替建議屬於 PlainCVE 的推論。
驗證紀錄 已人工審稿、核對來源;尚未在我們的環境重現
| 人工審稿 | 2026-09-24 |
|---|
驗證紀錄只寫環境與結果,不公開重現步驟或可攻擊他人系統的程式。詳見 政策.
來源
- 其他First version 0.1.0 published (affected range starts at 0) · registry.npmjs.org · 查閱 2026-09-24
- 安全公告GHSA-wpqr-6v78-jr5g — Update to Gemini CLI and run-gemini-cli Trust Model · Google (google-github-actions), 2026-04-24 · 查閱 2026-09-23
- 安全公告Gemini CLI: Remote Code Execution via workspace trust and tool allowlisting bypasses · GitHub Advisory Database, 2026-04-24 · 查閱 2026-09-23
- CVE / NVD / OSVCVE-2026-12537 record (CVE Services API) · CVE Program / GoogleCloud CNA, 2026-06-24 · 查閱 2026-09-23
- CVE / NVD / OSVCVE-2026-12537 (NVD API) · NIST NVD, 2026-06-24 · 查閱 2026-09-23
- 修補 commit / 版本feat(cli): secure .env loading and enforce workspace trust in headless mode (PR #25814) · Google (google-gemini), 2026-04-23 · 查閱 2026-09-23
- 修補 commit / 版本Comparing v0.39.0...v0.39.1 · Google (google-gemini), 2026-04-24 · 查閱 2026-09-23
- 修補 commit / 版本Release v0.39.1 · Google (google-gemini), 2026-04-24 · 查閱 2026-09-23
- 修補 commit / 版本run-gemini-cli Release v0.1.22 · Google (google-github-actions), 2026-04-24 · 查閱 2026-09-23
- 廠商說明Trusted Folders · Google (google-gemini) · 查閱 2026-09-23
- 廠商說明Trust Guidance · Google (google-github-actions) · 查閱 2026-09-23
- 廠商說明Best Practices · Google (google-github-actions) · 查閱 2026-09-23
- 研究文章Google Gemini CLI CVSS 10.0 RCE Vulnerability: Critical Security Advisory · Novee Security, 2026-04-29 · 查閱 2026-09-23
- 研究文章Update to Gemini CLI and run-gemini-cli Trust Model · Novee Security · 查閱 2026-09-23
- 研究文章My Agentic Trust Issues: From Prompt Injection to Supply-Chain Compromise on gemini-cli · Pillar Security, 2026-05-05 · 查閱 2026-09-23
- 新聞報導Google fixes CVSS 10.0 vulnerability in Gemini CLI · The Register, 2026-04-30 · 查閱 2026-09-23
- 新聞報導Google Fixes CVSS 10 Gemini CLI CI RCE and Cursor Flaws Enable Code Execution · The Hacker News, 2026-04-30 · 查閱 2026-09-23
媒體簡報
一句話
Google 的 AI 程式助理 Gemini CLI 及其 GitHub Action 在 CI(自動化建置)中會自動信任正在處理的程式碼資料夾。因此,外人送來的 PR 只要夾帶一個設定檔,就可能在沙箱啟動前於建置主機上執行指令。Google 已在 2026 年 4 月 24 日釋出 Gemini CLI 0.39.1 與 Action 0.1.22 修補。目前沒有來源回報遭實際利用,本漏洞也不在美國 CISA 的已知遭利用清單中。
關鍵數字
- 嚴重度(NVD)
- CVSS 3.1 7.8 services.nvd.nist.gov
- 嚴重度(Google,CNA)
- CVSS 4.0 10.0 cveawg.mitre.org
- 修補版本
- Gemini CLI 0.39.1 / 0.40.0-preview.3;Action 0.1.22 github.com
- 安全公告公開
- 2026-04-24(GHSA-wpqr-6v78-jr5g) github.com
- CVE 公開
- 2026-06-24 cveawg.mitre.org
已確認
- 舊版在無人值守的 CI 模式下自動信任工作目錄,並讀取 .gemini/ 內的設定(Google 公告)。
- 惡意 .gemini/.env 可經由容器啟動器,在沙箱啟動前於主機執行程式(CVE 紀錄)。
- 修補後 .env 只在可信工作目錄載入,無人值守模式遇到不可信資料夾會直接結束(修補 PR #25814)。
尚未確認 / 說法不一
- 評分差異大:NVD 評為本機、需使用者互動的 7.8,Google 評為可遠端、無需互動的 10.0。
- 信任環境變數名稱:公告寫 GEMINI_TRUST_WORKSPACE,現行文件寫 GEMINI_CLI_TRUST_WORKSPACE;目前版本接受哪個未確認。
- 致謝名單不一致:GHSA 列 Elad Meged 與 Dan Lisichkin,CVE 紀錄列 Elad Meged 與 Devansh Batham。
- 具體是哪個環境變數、啟動器如何使用它,沒有公開說明。
可引用的一句話
AI 代理被請來審查陌生人的程式碼,卻先照著那份程式碼裡的設定行事。
圖片
引用時請標示「PlainCVE」並附上本頁連結。 完整引用格式見下方「如何引用本頁」。有事實錯誤請回報.
Gemini CLI 在 CI 中自動信任工作目錄:外部 PR 裡的 .gemini/.env 可在沙箱啟動前於主機執行指令 Google 的 AI 程式助理 Gemini CLI 及其 GitHub Action 在 CI(自動化建置)中會自動信任正在處理的程式碼資料夾。因此,外人送來的 PR 只要夾帶一個設定檔,就可能在沙箱啟動前於建置主機上執行指令。Google 已在 2026 年 4 月 24 日釋出 Gemini CLI 0.39.1 與 Action 0.1.22 修補。目前沒有來源回報遭實際利用,本漏洞也不在美國 CISA 的已知遭利用清單中。 關鍵數字: - 嚴重度(NVD):CVSS 3.1 7.8(https://services.nvd.nist.gov/rest/json/cves/2.0?cveId=CVE-2026-12537) - 嚴重度(Google,CNA):CVSS 4.0 10.0(https://cveawg.mitre.org/api/cve/CVE-2026-12537) - 修補版本:Gemini CLI 0.39.1 / 0.40.0-preview.3;Action 0.1.22(https://github.com/google-github-actions/run-gemini-cli/security/advisories/GHSA-wpqr-6v78-jr5g) - 安全公告公開:2026-04-24(GHSA-wpqr-6v78-jr5g)(https://github.com/google-github-actions/run-gemini-cli/security/advisories/GHSA-wpqr-6v78-jr5g) - CVE 公開:2026-06-24(https://cveawg.mitre.org/api/cve/CVE-2026-12537) 已確認: - 舊版在無人值守的 CI 模式下自動信任工作目錄,並讀取 .gemini/ 內的設定(Google 公告)。 - 惡意 .gemini/.env 可經由容器啟動器,在沙箱啟動前於主機執行程式(CVE 紀錄)。 - 修補後 .env 只在可信工作目錄載入,無人值守模式遇到不可信資料夾會直接結束(修補 PR #25814)。 尚未確認 / 說法不一: - 評分差異大:NVD 評為本機、需使用者互動的 7.8,Google 評為可遠端、無需互動的 10.0。 - 信任環境變數名稱:公告寫 GEMINI_TRUST_WORKSPACE,現行文件寫 GEMINI_CLI_TRUST_WORKSPACE;目前版本接受哪個未確認。 - 致謝名單不一致:GHSA 列 Elad Meged 與 Dan Lisichkin,CVE 紀錄列 Elad Meged 與 Devansh Batham。 - 具體是哪個環境變數、啟動器如何使用它,沒有公開說明。 「AI 代理被請來審查陌生人的程式碼,卻先照著那份程式碼裡的設定行事。」— PlainCVE https://plaincve.date/vulns/cve-2026-12537-gemini-cli-headless-workspace-trust
如何引用本頁
本文採 CC BY 4.0,轉載請保留署名與連結。
PlainCVE 團隊(2026)。《Gemini CLI 在 CI 中自動信任工作目錄:外部 PR 裡的 .gemini/.env 可在沙箱啟動前於主機執行指令》。PlainCVE。https://plaincve.date/vulns/cve-2026-12537-gemini-cli-headless-workspace-trust(查閱日期:YYYY-MM-DD)BibTeX
@misc{cve202612537geminicliheadlessworkspacetrust2026,
title = {Gemini CLI 在 CI 中自動信任工作目錄:外部 PR 裡的 .gemini/.env 可在沙箱啟動前於主機執行指令},
author = {PlainCVE 團隊},
year = {2026},
howpublished = {PlainCVE},
url = {https://plaincve.date/vulns/cve-2026-12537-gemini-cli-headless-workspace-trust},
note = {更新於 2026-09-24}
}