台頭するエージェント対エージェント型の悪用手法
AIエージェントは、より高い権限を持つ別のエージェントを欺いて動作させることが可能です。その結果、攻撃者はこの仕組みを悪用してソフトウェアプロジェクトを侵害できます。Pillar Securityの研究者は、Googleの稼働中リポジトリ内でこうした悪用の連鎖を発見しました。研究者らはこの発見を、エージェント対エージェント攻撃を実証した初の実例だとしています。
この欠陥はgoogle/adk-pythonリポジトリ内に存在していました。このリポジトリは、Python向けオープンソースAgent Development Kitに関連するものです。開発者はADKを利用して自律的なAIエージェントを構築・展開しています。なお、このパッケージのダウンロード数は9,000万件を超えています。
Googleによる修正とCI/CDのセキュリティリスク
Googleはすでにリポジトリ内の脆弱なアーキテクチャを修正済みです。しかし同社は、バグ報奨金の支払いは見送りました。Googleはこの判断について、攻撃がソーシャルエンジニアリングに依存している点を理由に挙げています。とはいえ今回の調査は、トリアージ、コードレビュー、プルリクエストの議論など、CI/CDパイプライン全体にAIエージェントを展開することに伴う新たなリスクを浮き彫りにしました。
このリポジトリでは、権限レベルの異なる2種類の自動化エージェントが稼働していました。一方は公開向けのエージェントで、プルリクエストやIssueが作成されるたびに実行されます。もう一方のエージェントはプロジェクトのメンテナー専用として予約されており、管理者権限を持っていました。
共有された信頼境界と権限昇格
両システムは意図せず共通の信頼境界を共有していました。公開向けエージェントは外部ユーザーからの信頼できない入力を処理していましたが、実行時にはメンテナー個人のアクセストークンを使用しており、高い権限を持っていました。その結果、このエージェントが投稿したコメント一つで、本来は信頼されたメンテナーのコマンドのみを想定していた保護対象ワークフローを起動できてしまう状態になっていました。
研究者らは、プロンプトインジェクションによって公開向けエージェントを操り、権限を持つアシスタントを呼び出させることが可能だと突き止めました。その結果、システムは悪意ある操作を実行してしまいます。内部のワークフロー設定ファイルは公開状態のままだったため、攻撃者はエージェント間の通信内容を精査し、それに合わせた悪用用の指示文を作成できました。
悪用の連鎖の詳細
主任研究者のDan Lisitchin氏は、技術レポートの中で攻撃の仕組みを詳しく解説しています。同氏は、現行の脅威モデルは自律システム同士の複雑な相互作用を考慮できていないと警鐘を鳴らしています。さらに同研究者は、8月7日のDEF CON期間中にAI Villageで行われるセッションでこの調査結果を発表する予定です。
実際にこの攻撃を成立させるには、攻撃者はまずプロジェクトのメンテナーからの信頼を築く必要があると考えられます。攻撃者は悪意あるフェーズに移行する前に、いくつもの無害なプルリクエストを提出しておく可能性があります。まず加害者は、プルリクエストA(PR A)を提出します。この投稿には正当な修正内容に加え、悪意あるコード、改ざんされたpackage.jsonファイル、あるいは侵害されたに依存関係が仕込まれていました。
不正レビューの自動化
公開向けエージェントはPR Aの説明文を評価し、レビュー対象としてこのプルリクエストにフラグを立てました。このエージェントはメンテナーのトークンを利用していたため、投稿されたコメントは、保護対象の下流ワークフローを起動するために必要な信頼レベルを引き継ぐことになります。この最初の処理に続き、攻撃者はプロンプトインジェクションのペイロードを含む2つ目のプルリクエスト、PR Bを提出しました。
エージェントはその指示を実行し、@gemini-cliを参照する信頼済みコマンドを投稿しました。このコマンドが権限を持つワークフローを起動し、高権限エージェントが悪意あるペイロードを実行できる状態を作り出しました。この一連の流れによって、侵害されたリクエストについて、もっともらしい監査証跡がでっち上げられました。ログ上は、人間のメンテナーが監査を要求し、Geminiが変更内容を検証し、コードベースを承認したかのような外観が作られていたのです。
制約とアーキテクチャ上の提言
Googleは、この攻撃手法における重要な制約を強調しています。研究者らは、プルリクエストへの書き込み権限を持つGitHubトークンを窃取できることを実証しましたが、コードの自動マージは有効化されていませんでした。そのため攻撃者は、悪意あるプルリクエストを人間のメンテナーに手動でマージさせるよう説得する必要が依然としてありました。
Googleが金銭的な報奨金を見送ったのは、プログラムの規定でソーシャルエンジニアリングを要する脆弱性が対象外とされているためです。とはいえGoogleは、リポジトリの保護策を強化するとともに、この研究者の貢献を正式に認めています。Pillar Securityの専門家らは、単にアクセス階層でエージェントを分離するだけでは不十分だと主張しています。すべての自律エージェントには、厳密にスコープを絞ったリソースを持つ、独立したIDが必要です。主要なトリアージエージェントに専用のボットアカウントを割り当てていれば、今回の中核的な悪用経路は緩和できていたはずです。
翻訳元: https://meterpreter.org/google-adk-vulnerability/