Claude Agent SDKに脆弱性(CVE-2026-96620)|0.2.121以上に更新、resumeの値を外から受け取るアプリは要確認

Claude Agent SDKの脆弱性CVE-2026-96620のアイキャッチ。0.2.121以上への更新と、resumeに外からの値を渡すアプリの確認を案内する図

Claude Agent SDK(Python)を使うアプリやボットを作っている方向けに、脆弱性 CVE-2026-96620 の影響範囲と対処をまとめます。結論から言うと、claude-agent-sdk が 0.2.121 未満なら、0.2.121 以上(できれば最新版)に更新してください。とくに、セッションを再開する resume に、利用者など外から来た値をそのまま渡しているアプリは優先して確認が必要です。

この記事では悪用手順や再現コマンドは扱いません。自分のバージョンの確かめ方、更新のしかた、更新後に見るポイントだけを整理します。

目次

結論:0.2.121以上に更新する

  • 対象:Python版 Claude Agent SDK のパッケージ claude-agent-sdk(pip)で、0.2.121 未満
  • 修正版:0.2.121(それ以降の版にも修正は含まれます)
  • 深刻度:CVSS 4.0 で 9.2(Critical)。ただし悪用には条件があります(後述)
  • まずやること:バージョンを確認し、0.2.121 未満なら更新する
Claude Agent SDKの対象バージョン0.2.121未満と修正版0.2.121以上の対応図

何が起きる脆弱性か

GitHubの公式アドバイザリ(GHSA-h4mw-j7qp-8mwm)とCVEの記録によると、0.2.121より前の版では、セッション再開用の resume の値が十分に検証されないまま Claude CLI 側へ渡されていました。そのため、ダッシュで始まる値が「セッションID」ではなく別のCLIフラグとして解釈され得る状態でした。

条件がそろうと、SDKの権限コントロールを外れた形で、CLI起動時に任意のコマンドが実行されるおそれがある、というのが公式の説明です。分類は CWE-20(入力検証の不備)、CWE-78(OSコマンドインジェクション)、CWE-88(引数インジェクション)とされています。

悪用に必要な条件

どんなアプリでも無条件に悪用できる、という話ではありません。公式アドバイザリは、悪用には アプリが信頼できない入力を resume のセッションIDとして渡していること が必要だとしています。

  • 利用者の入力、外部APIの返り値、URLパラメータなどを、そのままセッションIDとして resume に渡している場合は要注意
  • セッションIDをアプリ内部で発行し、外部の値をそのまま使っていない場合は、悪用の条件は満たしにくくなります
  • ただし条件に当てはまらなくても、対象バージョンを使っているなら更新しておくのが安全です
アプリが外からの値をresumeに渡しているかどうかで分かれる影響の流れ図

時期のずれに注意:修正版は先に出ていた

今回ややこしいのは時期です。修正版 0.2.121 は GitHub Releases と PyPI 上では 2026年7月17日 に公開されています。リポジトリのアドバイザリは2026年9月12日付けで出て、CVE-2026-96620 としての公開は 2026年10月16日(日本時間では10月17日) でした。

つまり「10月に新しい脆弱性が見つかって、これから修正が出る」という話ではなく、修正自体は先に出ていて、CVE番号での周知が後になったケースです。9月や10月のニュースで初めて知った方も、すでに更新済みかどうかをバージョンで確かめれば大丈夫です。

自分のバージョンを確かめる

pip show claude-agent-sdk

Version: の行が 0.2.121 以上なら、今回の修正は入っています。0.2.120 以下なら更新が必要です。

仮想環境やコンテナ、CIなど、動かしている場所が複数ある場合は、それぞれで確認してください。手元のPCだけ新しくても、本番環境やコンテナイメージが古いまま、ということがよくあります。依存関係をファイルで管理している場合は、そちらの指定もあわせて見直します。

更新のしかた

pip install -U "claude-agent-sdk>=0.2.121"

更新したら、もう一度バージョンを確認します。

pip show claude-agent-sdk

requirements.txt や pyproject.toml、ロックファイルでバージョンを固定しているプロジェクトでは、そちらの指定も 0.2.121 以上に直し、ロックファイルを更新してからテスト・デプロイしてください。コンテナで動かしている場合は、イメージを作り直して入れ替える必要があります。

バージョン確認から0.2.121未満なら更新、再確認までの流れ図

更新後に見ておきたいポイント

  • セッションIDの出どころ:resume に渡す値が、アプリ内部で発行したものだけになっているか。外からの値をそのまま渡していないか
  • 入力の検証:セッションIDとして想定外の文字列(ダッシュで始まる値など)を受け付けていないか。想定した形式だけを許可する形が安全です
  • 動かしている場所すべて:開発環境・本番環境・CI・コンテナでバージョンがそろっているか
  • 依存の固定:今後の自動更新で古い版に戻らないよう、プロジェクトの依存指定が 0.2.121 以上になっているか

なお、0.2.121 のリリースノートでは、resume に加えて session_id についても、値をフラグと誤解釈しない渡し方に直したと説明されています。この点でも、古い版から上げておく意味があります。

関連する話題として、AIツールまわりの更新見落としが問題になった例は、OpenCodeのAPIキー漏えいの記事でも扱っています。あわせてご覧ください。

まとめ

  • Claude Agent SDK(Python)の脆弱性 CVE-2026-96620 は、0.2.121 未満が対象、深刻度は CVSS 4.0 で 9.2(Critical)
  • 悪用には、アプリが信頼できない入力を resume のセッションIDとして渡していることが必要
  • 修正版 0.2.121 は2026年7月17日に公開済みで、CVEとしての公開(10月16日/日本時間10月17日)が後になった
  • バージョンを確認し、0.2.121 未満なら更新する。外からの値を resume に渡しているアプリは優先して対応を

参考(一次情報)

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

社内エンジニアとして、SREとセキュリティの仕事をしています。サーバーの構築や運用、クラウド環境の設計にも関わってきました。趣味はゲームと漫画・アニメ。

コメント

コメントする

目次