OWN NEWS GATHER
← 戻る
The Hacker News

AI支援コード作成ツール4製品でプラグイン差し替えの脆弱性が判明、特定バージョン固定を回避する手法

要点

  • 主要なAIコーディングエージェント4製品において、指定したバージョンに固定されたプラグインが第三者の悪意あるコードに差し替えられる脆弱性が判明した。

  • Gitがコミットハッシュに似た名前のブランチを優先して解釈する挙動を悪用し、エージェント側のハッシュ一致検証の不備を突く手口となっている。

  • Anthropicの「Claude Code」およびOpenAIの「Codex」では修正版が公開された一方、GitHub Copilotは未修正で、Googleの「Gemini CLI」は提供終了のため修正されない。

  • GitHub上ではハッシュ状のブランチ名作成が制限されているため多くの標準カタログは影響を受けにくいが、Bitbucketや自前Gitサーバー等を利用する環境では注意が必要とされる。

  • セキュリティ企業のAir Securityは、広く利用されている4種類のAIコーディングエージェントにおいて、プラグインのリポジトリ管理者がインストールされるコードを悪意ある内容へすり替えられる脆弱性を発見したと発表した。本脆弱性は、エージェント側でレビュー済みの特定バージョンに固定(ピン留め)している場合であっても回避されてしまう点が特徴となっている。AnthropicとOpenAIはすでに修正パッチを公開しているが、製品によって対応方針が分かれている。

脆弱性の仕組みと潜在的なリスク

AIコーディングエージェントは、機能を拡張するために外部のオンラインマーケットプレイスからプラグインを導入する仕組みを備えている。通常、安全性を確保する目的で、マーケットプレイス側はレビュー済みの安全なコードスナップショットを指す「コミットハッシュ(Gitにおいて特定の更新履歴を一意に識別する文字列)」を用いて各プラグインのバージョンを固定している。

しかし、Air Securityの調査によると、対象となったエージェント群は指定されたスナップショットを取得するものの、ダウンロードしたコードが指定のコミットハッシュと正確に一致しているかを検証していなかったという。

Gitには、履歴の流れを分岐して記録する「ブランチ」という機能がある。リポジトリの管理者がコミットハッシュに見せかけた名前のブランチを作成した場合、Gitが要求されたコミット識別子をブランチ名として解釈してしまう挙動が存在する。この結果、プラグインのリポジトリ所有者がそのブランチの参照先を別のコードに変更すると、エージェント側は固定されたバージョンを利用していると表示したまま、実際にはすり替えられた別のコードを取り込んでしまう。OpenAIが公開した修正情報でも、要求されたコミットSHAがブランチ名として解釈され、固定されたものとは異なるコミットが実体化する不具合であったと説明されている。

AIエージェントのプラグインは、そのエージェントを操作しているユーザー自身と同等の権限で実行される。そのため、悪意あるコードへ差し替えられた場合、ユーザー端末内のファイルや保存された認証情報、さらにはそのユーザーがログインできる外部システムにまでアクセスされる危険性があるとAir Securityは指摘している。

ホスティング環境による影響の違いとGemini CLIの別手口

この攻撃手法は、すべてのGitホスティング環境でそのまま通用するわけではない。GitHubではコミットハッシュと類似したブランチ名やタグ名の作成が公式仕様によって禁止されているため、GitHub上のリポジトリから取得されるプラグインはこのブランチ偽装による影響を受けない。一方で、そうした命名制限のないBitbucketや、企業などが自前で運用するGitサーバーをプラグインのリポジトリとして利用している場合には、本手法が成立する。米The Hacker Newsの調査によると、Anthropicのコミュニティカタログや、Claude CodeおよびCopilotのデフォルトカタログに含まれるプラグインはすべてGitHubリポジトリを参照していた。

ただし、Googleの「Gemini CLI」に対しては別の攻撃手法が確認されている。Gemini CLIのインストーラーは、ハッシュ状のブランチ名ではなく、メインブランチ名が「FETCH_HEAD」と名付けられたリポジトリによって誤認させられる仕組みになっているという。GitHubの命名規則では「FETCH_HEAD」という名称が明確には禁止されていないため、GitHub上のリポジトリであってもこの手法を回避できるかは定かではないとされている。

また、ユーザーの操作なしに攻撃が成立する要因として、バックグラウンドでの自動更新機能が挙げられている。Claude CodeとCodexでは自動更新が標準で有効になっているが、これはGitHub上でホストされている公式のマーケットプレイスに対してのみであり、外部マーケットプレイスについては無効またはオプション設定となっている。そのため、各エージェントのデフォルトのGitHubベースのカタログのみを利用しているユーザーであれば、ブランチ名偽装による攻撃には晒されない構図となっている。

ベンダーの対応状況と各製品の現状

Air Securityは2026年5月に4つのエージェントすべてに対する実証攻撃を作成し、翌6月に各ベンダーへ報告した。2026年9月18日時点において、CVE識別番号の割り当てや各社からの公式セキュリティアドバイザリの公開は確認されておらず、実際のサイバー攻撃で悪用された形跡も見つかっていない。

プラグインのバージョン検証はマーケットプレイス側ではなくユーザー端末側のエージェント本体で実行されるため、対策にはエージェント自体の修正アップデートが不可欠となる。各製品の対応状況は以下の通りである。

  • Anthropic Claude Code: バージョン「2.1.179」において修正が完了しており、同バージョン以降への更新が推奨されている。
  • OpenAI Codex: バージョン「0.146.0」で修正が実施されており、同バージョン以降へのアップデートが案内されている。
  • GitHub Copilot: 現時点で修正パッチは提供されていない。
  • Google Gemini CLI: 製品の提供終了(リタイア)に伴い、修正は行われない。GoogleおよびAir Securityは、後継ツールである「Antigravity」への移行を推奨している。

なお、影響を受けるエージェントを修正版へアップデートした場合に、過去にすでに差し替えられて導入されたプラグインが自動的に削除されるかどうかについては、情報源では言及されていない。

元URL