研究者が「Ghostcommit」を発見、画像ファイルに危険なコマンドを隠しAIを騙して機密情報を窃取する新技術
セキュリティ研究チームが「Ghostcommit」技術を実証。PNG画像ファイルに危険なコマンドを埋め込み、検査を回避し、AIにコードを書かせてプロジェクトから重要データを引き出すことに成功した。
セキュリティ研究グループであるASSET Research Groupは、「Ghostcommit」という名の新たな攻撃手法を公開しました。これにより、Prompt Injection(AIを不正に誘導するためのコマンド入力)のような危険なコマンドを、無害に見えるPNG画像ファイル内に隠蔽し、APIキーやデータベースパスワードなどの機密情報を開発者のコードリポジトリから窃取することが可能になります。
Ghostcommitの手法は、CodeRabbitやBugbotといった人気のAIコードレビューツールが持つ盲点を突いています。これらのツールは通常、画像ファイル内部のコンテンツを開いたり分析したりするようには設計されていないため、隠されたコマンドは容易に検出をすり抜けます。この手法は2つの部分からなる攻撃として機能します。最初の部分は、通常に見えるテキストファイル(この場合はAGENTS.md)であり、これはAIエージェントに指定された画像ファイル(docs/images/build-spec.png)から「ビルド用の定数を取得する」よう指示します。攻撃の核心である第2の部分は、画像ファイル自体にテキストとして埋め込まれた危険なコマンドです。そのコマンドはAIに対し、.envファイル(開発者が機密情報を保存するのに使うファイル)の内容を1文字ずつ読み取り、ASCII数値コードに変換してからコードに書き込むよう指示します。
実際のテストでは、研究者はClaude Sonnetモデルを搭載したAIエージェントであるCursorで実証しました。その結果、Cursorは最初から画像に隠されたコマンドに従うよう騙されることに成功しました。それは311個の数字のリストを作成しましたが、これは実際にはプロジェクトの機密情報(APIキー、データベースURL、クラウドシステムへのアクセス情報など)全てを、通常に見えるコードレビューに紛れ込ませる形でエンコードしたものだったのです。
この脆弱性は、テキストに焦点を当てたコードレビューシステムにとって、画像ファイルが理解できない単なるバイナリブロブ(バイナリデータ群)であるために発生します。研究者らは、これが全く新しい概念ではないと指摘します。以前、Trail of Bitsの研究者も、AIによって縮小されるとPrompt Injectionコマンドになる画像を使用して、Gemini CLIのようなツールを騙すという、より洗練された技術を実証しています。現在、ASSET Research Groupチームは、画像、テキスト、AIエージェントの振る舞いを同時に検査するマルチモーダル(多様なデータを理解する)な防御システムを開発し、将来このような脆弱性を塞ぐことを目指しています。
この脆弱性は、現在のAIソフトウェア開発支援ツールの重要な盲点を浮き彫りにし、AIエージェントを使用する開発者への警告となります。無害に見える画像ファイルでさえ、悪意のある者がプロジェクトの重要データを窃取する経路となる可能性があるためです。