8月30日、The Newsが「AI coding agents can be tricked in under an hour, researchers find」と題した記事を公開した。AIコーディングエージェントが参照するドキュメントに記載された未登録パッケージ名・ドメインを第三者が取得するだけで、1時間以内にFortune 500企業のシステムを外部サーバーへ通信させることができると研究者が実証した件を詳しく紹介している。
パッケージ名を登録するだけで企業システムが"電話してくる"
攻撃の手口はシンプルだ。多くのWebサイトが公開している llms.txt / llms-full.txt というファイルが起点となる。これはAIエージェントがドキュメントを読みやすくするために整備されたファイルで、近年急速に普及している(llms.txtの仕様はこちら)。
研究者らは防衛関連企業・Fortune 500企業・大手テック企業に属する6,214ドメインをスキャンし、8,265件のこのファイルを発見した。そのうち120サイトが、実際には登録されていないコードパッケージやドメイン名を参照していた。
研究者はその未登録ドメインをいくつか自分たちで取得し、インストール直後に外部サーバーへ通知を送るソフトウェアを用意した。結果、あるFortune 500企業のシステムが1時間以内に応答し、その後も数十の組織が相次いで反応した。
ハッキングや脆弱性の悪用ではなく、ドメイン登録という誰でもできる行為だけで実現する点が肝だ。
なぜこの脆弱性が生まれるのか
未登録のパッケージ名やドメインが存在する背景には、以下のような理由がある。
- 開発中止になったソフトウェアパッケージの残骸
- ドキュメント作成時のコピーミス
- プロジェクトのリネームによる参照先のズレ
研究者らは「研究者が登録できるものは、サイバー犯罪者も登録できる」と指摘する。この問題は、いわゆるサプライチェーン攻撃の文脈とも深く重なる。依存関係として参照されるパッケージやドメインを悪意ある第三者が制圧するという構図は、2021年に大きな注目を集めたdependency confusion攻撃と本質的に同じ発想だ。ただし今回の場合、攻撃対象はソースコードの依存関係定義ファイル(package.jsonやrequirements.txtなど)ではなく、AIエージェント向けに整備されたドキュメントファイルそのものである点が新しい。
「スロップスクワッティング」という新しい脅威
この脆弱性は slopsquatting(スロップスクワッティング) と呼ばれている。古典的なタイポスクワッティング(スペルミスを狙ったドメイン・パッケージ名の詐称)の亜種にあたる攻撃概念だ。
タイポスクワッティングが「人間のタイプミス」を狙うのに対し、スロップスクワッティングが狙うのはAIエージェントが参照するドキュメント(llms.txtなど)に記載された、未登録・失効済みのパッケージ名やドメイン名である。AIが自律的にドキュメントを読み込み、そこに書かれたパッケージをインストールしようとする動作そのものが攻撃面になる。なお、「AIが幻覚(ハルシネーション)によって存在しないパッケージ名を生成してしまう」現象を悪用する攻撃手法も同じ「スロップスクワッティング」と呼ばれることがあるが、本記事が扱う研究はその亜種ではなく、公開ドキュメントに記載された未登録リソースを第三者が先取り登録するという手口を主軸としている点に留意されたい。
この攻撃が成立するための前提条件は、AIエージェントがシェルコマンドやパッケージマネージャーのコマンドを実行できる権限を持っていることだ。コーディングエージェントは通常この権限を持つため、影響範囲は広い。
研究者のテストでは、以下のAIが架空・失効パッケージを含むドキュメントを参照した際に、該当パッケージを実際にインストールしようとする動作(外部サーバーへの通信を含む)が確認された。
- Claude(Anthropic)
- Codex(OpenAI)
- Hermes(Nous Research)
これらのエージェントはドキュメントの記述をそのまま信頼し、パッケージの実在確認をせずにインストールコマンドを実行した。攻撃者が用意した悪意あるパッケージがその段階でダウンロード・実行されれば、任意コードの実行や認証情報の窃取につながる可能性がある。
エンジニアが注意すべきこと
公開しているドキュメント(特に llms.txt)に記載されているパッケージ名やドメインが、実際に自分たちの管理下にあるか確認することが重要だ。使われなくなったパッケージ名の放棄、プロジェクト移行後の古いドキュメントの放置といった日常的なメンテナンス不足が、AIエージェント時代には直接的な攻撃経路になり得る。
チェックすべき主なポイントは以下の通りだ。
llms.txt/llms-full.txtに記載した外部パッケージ・ドメインが現在も有効かを定期的に確認する- 廃止・移行したパッケージの参照が古いドキュメントに残っていないかを棚卸しする
- AIエージェントに与えるパッケージインストール権限を必要最小限に絞り、実行前に人間が確認するステップを設ける
AIコーディングエージェントの普及とともに、エージェントが参照するドキュメントそのものがサプライチェーン攻撃の標的になるという構図は、今後さらに広く認識される必要があるだろう。
詳細はAI coding agents can be tricked in under an hour, researchers findを参照していただきたい。