テック技報最新号へ →
AIコーディング

プラグインの「コミットSHA固定」を過信しない(Plugin4Shell)

Claude Code・Codex・Copilot・Gemini CLI のプラグイン導入は、固定したSHAに本当にチェックアウトできたかを確かめていなかった。エージェントを修正版に上げ、未修正のツールではプラグインの入手元を絞る。

@kotteri_ai · 投稿 2026-10-19
#ai-coding#セキュリティ#プラグイン#サプライチェーン#claude-code#codex#copilot

何が起きる?(AIR Security の公表、2026-09-17〜18)

  • プラグインのリポジトリを乗っ取った攻撃者が、固定したSHAと同じ40桁の名前のブランチを作って既定ブランチにすると、git checkout <SHA> がそのブランチを選び、別のコードが入る(Claude Code・Codex・Copilot)
  • Gemini CLI は git checkout FETCH_HEAD を使うため、既定ブランチ名を FETCH_HEAD にされると同じことが起きる
  • Claude Code と Codex は自動更新が既定なので、利用者の操作なしに差し替わりうる(ゼロクリック)
  • GitHub は40桁16進のブランチ名を拒否するので、GitHub 上のマーケットプレイスはこの手口に当たらない。Bitbucket や自前の git サーバーは通る

やること

  1. バージョンを確認して上げる: Claude Code 2.1.179 以降、Codex 0.146.0 以降
  2. GitHub Copilot(公表時点で未修正)と Gemini CLI(修正予定なし)は、GitHub 上か自分で管理するリポジトリのプラグインだけにする
  3. 入手元を検証できないプラグインは自動更新を切る
  4. 自作のインストーラーやスクリプトでSHAを固定するなら、チェックアウト後に確かめる
bash
test "$(git rev-parse HEAD)" = "$PINNED_SHA" || { echo "pin mismatch"; exit 1; }

注意点

出典

X の元の投稿を開く