Ghostcommit攻撃、画像に悪意あるAI指示を隠蔽

Ghostcommitは、ソフトウェアコードのレビューに使われるAIアシスタントが、画像に埋め込まれた隠し指示によってどのように欺かれ得るかを示す概念実証です。

学術研究グループASSET Research Groupは、攻撃者が画像ファイル内に指示を仕込み、AGENTS.mdファイルからそれを参照させることで、後のタスク実行時にAIコーディングエージェントにその指示を従わせられることを示しました。

プルリクエストとは、基本的に「レビューをお願いし、私の変更をソフトウェアプロジェクトのメインバージョンに追加してほしい」という正式な依頼です。人間のレビュアー、そして近年ではAIコーディングツールも、変更が受け入れられる前にそれを確認することがあります。

AI支援によるコードレビューが日常的な開発プロセスの一部になりつつある一方で、Ghostcommitは多くのチームが見落としてきた弱点を露呈しています。人間のレビュアーはコードを読んでも、添付された画像は読み飛ばしてしまうことがあります。研究者らの概念実証では、悪意ある指示はリポジトリのポリシーファイルが参照するPNGファイル内に隠されていた一方、目に見えるプルリクエスト自体は何の変哲もないものに見えました。

研究者らが実証したように、これは日常的な開発者のワークフローを秘密情報窃取の経路に変えてしまう恐れがあります。人間のレビュアーが画像を精査することはまずないため、AIコーディングエージェントだけがこれらの隠し指示を読み取ることになります。

この攻撃は概念としては単純ですが、実際には危険なものです。プルリクエストは、一見無害な画像と、その画像を信用するようエージェントに指示する設定ファイルを持ち込みます。エージェントが後に通常のタスクに取り組む際、その隠し指示に従い、機密ファイルを読み込んで、秘密情報を難読化した形でコードに書き戻してしまいます。これにより、人間のレビュアーと自動スキャナーの両方をすり抜けてしまう可能性のある秘密情報窃取の経路が生まれます。

研究者らは、AIモデル自体よりも、そのモデルを取り巻くラッパーであるハーネスの方が、秘密情報が漏洩するかどうかに大きな影響を与えることを発見しました。実際には、ハーネス(Cursor、Antigravity、Claude Codeなど)が、どのファイルを読み込むか、どの慣習を信用するか、どのガードレールを適用するか、そして画像に埋め込まれた指示に従うかどうかを決定します。その結果、同じモデルであっても、それを利用するコーディングツールによって挙動が大きく異なることになります。モデルは、ツールが提示するタスクをそのまま実行するだけなのです。

例えば、同じモデル(Claude Sonnet)でも、ツールが異なれば挙動は大きく変わりました。CursorおよびAntigravity上では、SonnetはPNGを読み取り、その慣習に従い、秘密情報を律儀にソースコードへ記録してしまいました。しかしAnthropic自身のClaude Codeハーネス上では、同じSonnetモデルが同じ慣習を読み取りながらも、秘密情報の持ち出しは不適切であると明言して拒否しました。Claude Codeは、研究者らがテストしたすべてのモデルにおいて拒否する結果となりました。

安全を保つには

この教訓が示すのは、プロンプトインジェクションはもはやテキストだけの問題ではないということです。画像のようなマルチモーダル入力も、ツールチェーンがそれを許してしまえばAIエージェントが従いかねない指示を運ぶ手段になり得ます。チームは、コーディングエージェントが読み取れるものであれば何であれ——画像、文書、その他のマルチモーダル入力を含め——攻撃者が制御するコンテンツを含んでいる可能性があると想定すべきです。

AIコーディングツールを利用している組織は、これをソフトウェアサプライチェーンの問題であると同時に、AIエージェントのセキュリティ問題としても捉えるべきです。最も重要な防御策は、秘密情報へのアクセスを制限すること、テキスト以外の添付ファイルを検査すること、そして認証情報や設定ファイルを読み取ろうとする不審な試みがないかAIエージェントを監視することです。

この研究はまた、この攻撃を成り立たせているのは、AIモデル単体ではなく、最終的にはコーディングツールとその権限であることも浮き彫りにしています。

翻訳元: https://www.malwarebytes.com/blog/ai/2026/07/ghostcommit-attack-hides-malicious-ai-instructions-in-images

ソース: malwarebytes.com