// 威脅簡報
Claude Agent SDK(Python)resume 選項引數注入:以「-」開頭的工作階段 ID 會變成 CLI 旗標
- CVSS
- 9.2 CRITICAL
- CISA KEV
- 未列入
- 弱點類型
- CWE-88 · CWE-78 · CWE-20
- 主題
- AI 安全
AI 審稿 2026-10-20(未經人工)指令測試:未提供漏洞重現:未進行驗證紀錄 ↓
Claude Agent SDK Python 版早於 0.2.121(< 0.2.121)的版本沒有檢查 resume 值就交給 Claude CLI,以「-」開頭的值會被當成額外的命令列旗標。
| 誰會中 | 使用 claude-agent-sdk(PyPI)早於 0.2.121(< 0.2.121)的版本,而且應用程式會把不受信任的輸入當成工作階段 ID 傳給 resume 選項的開發者與組織。 |
|---|---|
| 後果 | 控制 resume 值的攻擊者可以注入任意 CLI 旗標,例如 --mcp-config。官方安全公告說這可能在 CLI 啟動時執行任意指令並繞過 SDK 的權限控管;但維護者的修補 PR 說這只是旗標注入,不是任意指令執行。兩份官方資料說法不一致。 |
| 現在該做什麼 | 把 claude-agent-sdk 升級到 0.2.121 以上(官方建議升到最新版)。注意:沒有內附 claude.exe、改用 npm 的 claude.cmd 啟動 CLI 的 Windows 環境,維護者後續的 PR #1127 指出 0.2.121 的修法對經過 cmd.exe 的這條路徑沒有幫助,相關修補在 v0.2.124 才釋出;資料沒有說明這是否屬於本 CVE 的範圍,PlainCVE 建議這類環境至少升到 0.2.124。在升級前,PlainCVE 建議不要把使用者可控制的值直接傳給 resume(官方未提供暫時解法)。 |
| 受影響版本 | 早於 0.2.121 的所有版本(< 0.2.121,不含 0.2.121) |
| 修好的版本 | 0.2.121 以上 |
| CVSS 向量 | 顯示完整向量CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N |
| 時間點 |
|
藍隊應對手冊
確認、修補 / 緩解、應變、強化。版本符合受影響條件不等於已被入侵;檢查沒有結果也不等於安全,每一項都有能證明與不能證明的範圍。標記的步驟對應下方攻擊流程裡可以擋下攻擊的那一步。
- 01確認安裝的版本
在執行你應用程式的那個 Python 環境(虛擬環境)中執行;用 python -m pip 可確保查的是該環境的直譯器。只讀取版本,不會修改環境。版本低於 0.2.121 就在受影響範圍內。
唯讀查詢python -m pip show claude-agent-sdk | grep -i '^version' - 02找出程式中 resume 值的來源
官方指出,只有應用程式把不受信任的輸入傳給 resume 時才會被利用。檢查 resume 的值是否可能來自使用者、網址參數或外部請求。請在你自己專案的原始碼根目錄執行;只讀取檔案,不會修改環境。
唯讀查詢grep -rn "resume" --include='*.py' .
- 01升級到 0.2.121 以上
官方建議更新到最新版。修補後 resume 與 session-id 都以單一的「--旗標=值」參數傳遞。這個指令會修改環境(安裝或升級套件),請在執行你應用程式的那個 Python 環境(虛擬環境)中執行。-U 會升到最新版,也涵蓋 Windows 的後續修補 v0.2.124。
會變更環境python -m pip install -U "claude-agent-sdk>=0.2.121" - 02還不能升級:別讓外部輸入進到 resume
官方沒有提供暫時解法。PlainCVE 的判斷是:依官方說明的前提,從不把不受信任輸入傳給 resume 的應用程式應不受影響。
- 01檢查是否有可疑的 resume 值與 MCP 伺服器
我們查閱的資料中沒有偵測或回應指引。PlainCVE 建議:若你的應用程式曾把外部輸入傳給 resume,檢視紀錄中是否出現以「-」開頭的工作階段 ID,並確認 CLI 是否啟動過你沒有設定的 MCP 伺服器或程序。目前沒有資料確認此漏洞曾遭實際利用。
完整修復步驟與說明
| 套件 | 受影響 | 修補版 |
|---|---|---|
| claude-agent-sdk(PyPI) | < 0.2.121 | 0.2.121 |
| TypeScript Agent SDK(依 PR 說明) | 未說明 | 0.3.208 |
- 官方建議直接升到最新版,而不只是 0.2.121。上游的 v0.2.124 發布說明顯示,
extra_args的相同問題是之後才另外修補的(PR #1127)。 - **Windows 注意事項:**維護者的後續 PR #1127(說明為同一份 HackerOne 回報的後續)指出,在沒有內附
claude.exe、改用 npmclaude.cmd啟動 CLI 的 Windows 安裝環境,參數會被 cmd.exe 重新解析,--resume等值可能執行注入的指令,而 0.2.121 的「—旗標=值」修法對這條路徑沒有幫助。v0.2.124 改為拒絕在 Windows 啟動.bat/.cmd形式的 CLI。資料沒有說明這是否屬於本 CVE 的範圍;PlainCVE 建議這類環境至少升到 0.2.124,並改用原生安裝程式或明確的claude.exe路徑(PR 與發布說明列出的替代方式)。 - 官方安全公告評為 CVSS 4.0 9.2(重大)。向量中的 PR:N(不需權限)是評分假設,不代表每種部署都不需要登入;AT:P 表示是否能被利用取決於應用程式怎麼部署。
攻擊流程
從左到右是攻擊發生的順序。藍色盾牌代表這一步可以被擋下,越早擋下越好。點圖示可看細節。
由上到下是攻擊發生的順序。藍色盾牌代表這一步可以被擋下,越早擋下越好。點圖示可看細節。
- 攻擊者
攻擊者提供一個以「-」開頭的工作階段 ID
只有在應用程式允許外部輸入決定要「接續」哪個工作階段時才可能發生。
防禦: 不要把不受信任的輸入直接當成 resume 的值(PlainCVE 的建議)。
- 你的系統
應用程式把這個值傳給 SDK 的 resume 選項
官方公告指出,這正是利用的前提條件。
- 你的系統
SDK 把值當成獨立參數交給 Claude CLI,CLI 把它讀成新旗標
舊版沒有檢查這個值,攻擊者因此可以塞入像 --mcp-config 這類旗標。
防禦: 升級到 0.2.121 以上:值改以 --resume=<值> 的合併形式傳遞,不會再被讀成獨立旗標。
- 你的系統
依官方安全公告,注入的 --mcp-config 可能在 CLI 啟動時導致指令執行(維護者 PR 不同意)
官方公告說這會在 CLI 啟動時執行任意指令,且不受 SDK 權限控管;維護者的 PR 則說沒有經過 shell,只是旗標注入。兩者說法不一致。
防禦: 升級到 0.2.121 以上可阻止這種旗標注入;使用 npm claude.cmd 的 Windows 環境要到 v0.2.124 才有後續修補(PR #1127)。
影響範圍
| 條件 | 是否受影響 |
|---|---|
| claude-agent-sdk(Python)早於 0.2.121(< 0.2.121)+ 應用程式把不受信任的輸入傳給 resume | 受影響 |
| 早於 0.2.121,但 resume 的值只來自自己產生的工作階段 ID | PlainCVE 的判斷:依官方說明的前提應不受影響,仍建議升級 |
| 0.2.121 以上 | 已修補(官方公告);但沒有內附 claude.exe、經 npm claude.cmd 啟動 CLI 的 Windows 環境,維護者 PR #1127 指出 0.2.121 的修法對這條路徑沒有幫助,要到 v0.2.124 才修補,見「修復建議」 |
| TypeScript 版 Agent SDK | 維護者 PR 說 0.3.208 已有相同修補;資料沒有說明這個 CVE 是否涵蓋它 |
OSV 將問題記錄為從第一個版本就存在,沒有指出是哪個 commit 引入的。
原理
Claude Agent SDK 不是自己跑 AI,而是在背後啟動 Claude CLI(命令列工具),並把你的設定轉成 CLI 的參數。resume 選項用來接續先前的工作階段,值是一個工作階段 ID。
舊版把它拆成兩個獨立參數交給 CLI:先是 --resume,再是 ID 本身,而且不檢查 ID 的內容。如果 ID 以「-」開頭,CLI 會把它當成另一個旗標(改變程式行為的設定),而不是 --resume 的值。官方公告舉的例子是注入 --mcp-config,並稱可在 CLI 啟動時導致指令執行。
影響有多大,官方兩份資料說法不同:
- 安全公告:會在 CLI 啟動時造成任意指令執行,且繞過 SDK 的權限控管。
- 修補 PR #1123(該頁含攻擊示範,本站不連結):參數是逐一傳遞、沒有經過 shell,所以是「旗標注入」,不是任意指令執行。
CVE 紀錄同時列了 CWE-88(引數注入)、CWE-78(作業系統指令注入)與 CWE-20(輸入驗證不當)。維護者也說明 --session-id 本來就要求帶值,不會被誤讀,一起修改只是為了一致。
有問題的思路(概念示意,不是原始程式碼):
展開程式碼範例(python)
# 值是獨立參數;若以 "-" 開頭,CLI 會把它當成新旗標
args += ["--resume", session_id]修好的思路:
展開程式碼範例(python)
# 旗標與值合成一個參數,值不可能再被讀成獨立旗標
args += [f"--resume={session_id}"]時間軸
| 日期 | 事件 |
|---|---|
| 2026-07-15 | 維護者在公開儲存庫開啟修補 PR #1123(該頁含攻擊示範,本站不連結),公開描述同一問題;本頁的首次公開日 |
| 2026-07-16 | PR 合併為 commit 347a1cb |
| 2026-07-17 | 釋出 v0.2.121(發布頁未標年份,依 PR 日期推定為 2026) |
| 2026-07-18 | 維護者開啟 Windows 後續修補 PR #1127 |
| 2026-07-20 | PR #1127 合併,並隨 v0.2.124 釋出(發布頁未標年份,依 PR 日期推定為 2026) |
| 2026-09-12 | 廠商儲存庫的安全公告顯示的公開時間(早於 CVE 保留日,原因不明) |
| 2026-09-23 | CVE 編號保留 |
| 2026-10-16 | CVE 紀錄公開,GitHub 公告資料庫顯示同一天 |
| 2026-10-18 | 仍未列入 CISA KEV |
延伸閱讀
- 公開日期:依本站規則,專案公開管道裡讀得到、描述同一問題的內容也算專案公告;維護者的修補 PR #1123(該頁含攻擊示範,本站不連結)於 2026-07-15 在公開儲存庫開啟,早於廠商安全公告的 2026-09-12 與 CVE 紀錄的 2026-10-16,所以本頁首次公開日採 2026-07-15。廠商公告的 2026-09-12 早於 CVE 保留日 2026-09-23,原因不明。
- 利用情況:沒有列入 CISA KEV;沒有資料說明是否曾遭實際利用,或是否在修補前就被利用。GitHub 資料列出的 EPSS(未來 30 天遭利用機率估計)約 0.58%,約位於第 46 百分位。
- 回報者:官方致謝 hackerone.com/moamenmahmood。
- 相關弱點類型:CWE-88、CWE-78、CWE-20。
驗證紀錄 AI 依審稿規則逐項核對來源,全部通過;未經人工審稿,也尚未在我們的環境重現
| AI 審稿 | 2026-10-20 · 審稿規則 |
|---|
驗證紀錄只寫環境與結果,不公開重現步驟或可攻擊他人系統的程式。詳見 政策.
來源
- 安全公告GHSA-h4mw-j7qp-8mwm — Argument Injection via resume Option Allows Arbitrary Command Execution · Anthropic (GitHub) · 查閱 2026-10-18
- 安全公告CVE-2026-96620 Record · CVE Program, 2026-10-16 · 查閱 2026-10-18
- 修補 commit / 版本Fix commit 347a1cb · Anthropic (GitHub), 2026-07-16 · 查閱 2026-10-18
- 修補 commit / 版本claude-agent-sdk-python v0.2.121 release · Anthropic (GitHub), 2026-07-17 · 查閱 2026-10-18
- 其他OSV - GHSA-h4mw-j7qp-8mwm · OSV · 查閱 2026-10-18
- 其他GitHub Advisory Database API - CVE-2026-96620 · GitHub · 查閱 2026-10-18
- 修補 commit / 版本claude-agent-sdk-python v0.2.124 release · Anthropic (GitHub) · 查閱 2026-10-18
- 修補 commit / 版本Refuse to spawn .bat/.cmd CLI scripts on Windows to prevent command injection (PR #1127) · Anthropic (GitHub), 2026-07-20 · 查閱 2026-10-18
媒體簡報
一句話
Anthropic 的 Claude Agent SDK 是讓開發者用 Python 打造 AI 代理程式的工具包。早於 0.2.121 的版本在「接續工作階段」(resume)功能沒有檢查輸入,攻擊者若能控制這個值,就能偷偷加入額外的命令列設定。官方安全公告將它評為重大(CVSS 4.0 9.2 分),並稱可導致任意指令執行;但維護者的修補說明認為只是旗標注入。修補版 0.2.121 已於 7 月 17 日釋出(年份依 PR 日期推定為 2026)。
關鍵數字
- 嚴重度
- CVSS 4.0 9.2,重大(官方安全公告) github.com
- 修補版本
- 0.2.121(7 月 17 日釋出) github.com
- CVE 公開
- 2026-10-16 cveawg.mitre.org
- GitHub 公告編號
- GHSA-h4mw-j7qp-8mwm cveawg.mitre.org
- 回報者
- hackerone.com/moamenmahmood(官方致謝) github.com
已確認
- 早於 0.2.121 的版本沒有檢查 resume 值,以「-」開頭的值會被 CLI 讀成獨立旗標。
- 利用前提是應用程式把不受信任的輸入當成工作階段 ID 傳給 resume。
- 截至 2026-10-18,未列入 CISA 已知遭利用漏洞清單。
尚未確認 / 說法不一
- 能否導致任意指令執行:官方安全公告說可以,維護者的修補 PR 說沒有經過 shell、只是旗標注入。
- 公開日期:本頁的首次公開日 2026-07-15 取自維護者在公開儲存庫開啟修補 PR #1123 的日期(該 PR 已公開描述同一問題);廠商儲存庫的安全公告顯示 2026-09-12,早於 CVE 編號保留日 2026-09-23,原因不明;CVE 紀錄的公開日是 2026-10-16。
- Windows 上經 npm claude.cmd、由 cmd.exe 重新解析的注入路徑(維護者 PR #1127,v0.2.124 修補)是否屬於本 CVE 的範圍,資料沒有說明。
- 是否曾遭實際利用或在修補前被利用(零時差),沒有資料說明。
- 這個 CVE 是否涵蓋 TypeScript 版 SDK,資料沒有說明。
可引用的一句話
一個看似無害的工作階段 ID,只要開頭多了一個減號,就從「資料」變成了「指令」。
圖片
引用時請標示「PlainCVE」並附上本頁連結。 完整引用格式見下方「如何引用本頁」。有事實錯誤請回報.
Claude Agent SDK(Python)resume 選項引數注入:以「-」開頭的工作階段 ID 會變成 CLI 旗標 Anthropic 的 Claude Agent SDK 是讓開發者用 Python 打造 AI 代理程式的工具包。早於 0.2.121 的版本在「接續工作階段」(resume)功能沒有檢查輸入,攻擊者若能控制這個值,就能偷偷加入額外的命令列設定。官方安全公告將它評為重大(CVSS 4.0 9.2 分),並稱可導致任意指令執行;但維護者的修補說明認為只是旗標注入。修補版 0.2.121 已於 7 月 17 日釋出(年份依 PR 日期推定為 2026)。 關鍵數字: - 嚴重度:CVSS 4.0 9.2,重大(官方安全公告)(https://github.com/anthropics/claude-agent-sdk-python/security/advisories/GHSA-h4mw-j7qp-8mwm) - 修補版本:0.2.121(7 月 17 日釋出)(https://github.com/anthropics/claude-agent-sdk-python/releases/tag/v0.2.121) - CVE 公開:2026-10-16(https://cveawg.mitre.org/api/cve/CVE-2026-96620) - GitHub 公告編號:GHSA-h4mw-j7qp-8mwm(https://cveawg.mitre.org/api/cve/CVE-2026-96620) - 回報者:hackerone.com/moamenmahmood(官方致謝)(https://github.com/anthropics/claude-agent-sdk-python/security/advisories/GHSA-h4mw-j7qp-8mwm) 已確認: - 早於 0.2.121 的版本沒有檢查 resume 值,以「-」開頭的值會被 CLI 讀成獨立旗標。 - 利用前提是應用程式把不受信任的輸入當成工作階段 ID 傳給 resume。 - 截至 2026-10-18,未列入 CISA 已知遭利用漏洞清單。 尚未確認 / 說法不一: - 能否導致任意指令執行:官方安全公告說可以,維護者的修補 PR 說沒有經過 shell、只是旗標注入。 - 公開日期:本頁的首次公開日 2026-07-15 取自維護者在公開儲存庫開啟修補 PR #1123 的日期(該 PR 已公開描述同一問題);廠商儲存庫的安全公告顯示 2026-09-12,早於 CVE 編號保留日 2026-09-23,原因不明;CVE 紀錄的公開日是 2026-10-16。 - Windows 上經 npm claude.cmd、由 cmd.exe 重新解析的注入路徑(維護者 PR #1127,v0.2.124 修補)是否屬於本 CVE 的範圍,資料沒有說明。 - 是否曾遭實際利用或在修補前被利用(零時差),沒有資料說明。 - 這個 CVE 是否涵蓋 TypeScript 版 SDK,資料沒有說明。 「一個看似無害的工作階段 ID,只要開頭多了一個減號,就從「資料」變成了「指令」。」— PlainCVE https://plaincve.date/vulns/cve-2026-96620-claude-agent-sdk-resume-argument-injection
如何引用本頁
本文採 CC BY 4.0,轉載請保留署名與連結。
PlainCVE 團隊(2026)。《Claude Agent SDK(Python)resume 選項引數注入:以「-」開頭的工作階段 ID 會變成 CLI 旗標》。PlainCVE。https://plaincve.date/vulns/cve-2026-96620-claude-agent-sdk-resume-argument-injection(查閱日期:YYYY-MM-DD)BibTeX
@misc{cve202696620claudeagentsdkresumeargumentinjection2026,
title = {Claude Agent SDK(Python)resume 選項引數注入:以「-」開頭的工作階段 ID 會變成 CLI 旗標},
author = {PlainCVE 團隊},
year = {2026},
howpublished = {PlainCVE},
url = {https://plaincve.date/vulns/cve-2026-96620-claude-agent-sdk-resume-argument-injection},
note = {更新於 2026-10-20}
}