
- 6,214ドメインから8,265件のllms.txtを収集し、120件が未登録パッケージを参照
- フォーチュン500企業を含む数十社が検証コードを実行、Clerk.comでは実害のあるマルウェア配布も
- AIエージェントはドキュメントを権威とみなし命令として実行するため、プロンプトインジェクションの拡張といえる
調査の内容
研究者は防衛関連企業やフォーチュン500、大手テクノロジー企業のドメイン6,214件を調査しました。その結果、llms.txtとllms-full.txtのファイルが8,265件見つかり、うち120件が未登録のパッケージ名やドメインを参照していました。攻撃の再現実験として、研究者が未登録名の一部を登録して受け取るサーバーを用意したところ、1時間以内にフォーチュン500企業からの応答があり、その後数十件の企業から反応がありました。
この応答には、実行された親プロセス情報が含まれており、ClaudeやOpenAIのCodex、Nous ResearchのHermesといったコーディングエージェントが関与していたことが分かりました。研究者は「エージェントはページとコマンドを区別しない」と指摘しています。
なぜ実行されるのか
llms.txtは、ウェブサイトの内容や構造をAIエージェント向けに要約したファイルで、robots.txtのAI版とも言えます。通常の設定では、サイトの説明や関連リンクが含まれますが、誤設定の場合、パッケージのインストールコマンドがそのまま記載されることがあります。研究者は、pipやnpmなどの未登録パッケージを参照した例を120件発見しました。
AIエージェントは、このファイルを権威ある情報源として扱います。HTTPSで配信され、企業の公式ドメイン上にあるため、内容を疑う理由がないのです。そのため、ファイルに「pip install internal-tool」と書かれていれば、そのまま実行します。エージェントはページとコマンドを区別できないという根本的な問題があり、これがプロンプトインジェクションの拡張とも言える原因です。
実在する攻撃例
研究者は、Clerk.comのllms.txtファイルに「npx clerk-next-fix-auth-protection」というコマンドが含まれているのを発見しました。これは、未登録のパッケージをnpmから取得して実行するコマンドで、攻撃者が先にその名前を登録し、マルウェアを配布していました。npxは依存関係として記録せずに実行するため、通常の監視では検出しにくいと言えます。
Clerk社は問題を解決し、このパッケージをインストールしていなければ影響はないと説明しました。ただし、実際に感染したかどうかは不明です。研究者は、この事例はドキュメントとコードの境界が消えつつあることを示す典型例だと述べています。
残る課題と対策
研究者は、この問題はllms.txtに限らないと指摘します。エージェントが参照するあらゆるドキュメントが実行表面になり得ます。また、既存のEDRやプロキシは、開発者が正規のパッケージマネージャーを使っているように見えるため、検知できない可能性があります。
対策としては、AIエージェントが実行するコマンドを制限するガードレールが必要ですが、現時点で確立された方法はありません。記事では、企業が自社のllms.txtを監査し、未登録のパッケージやドメインを参照していないか確認することが重要だと示唆されています。
| 項目 | llms.txt | robots.txt |
|---|---|---|
| 対象 | AIエージェント | 検索エンジン |
| 目的 | サイトの要約や高レベルな構造を提供 | クロールの可否を指示 |
An agent doesn’t distinguish between a page and a command
エージェントはページとコマンドを区別しない
今後の見通し
今回の研究では120件の誤設定が見つかりましたが、実際にはさらに多くのllms.txtが存在するとみられます。AIエージェントの利用が増えるにつれ、同様のサプライチェーン攻撃が増加する可能性があります。今後の対策としては、各企業がllms.txtの管理方法を整備するか、AIエージェント側で参照先の検証を強化するかが鍵になるでしょう。次の情報として、実際にどの企業が影響を受けたのかや、エージェントの開発元がどのような対策を導入するかが明らかになれば、リスクの評価が進むと考えられます。
日本の開発者・IT企業にとっての意味
日本のIT企業がAIコーディングエージェントを導入する際、自社サイトのllms.txtだけでなく、取引先や外部ベンダーのドキュメントに含まれるコマンドも信頼して実行してしまうリスクがあります。特に、サプライチェーンを構成する部品の依存関係を自動で解決するエージェントを使う場合、今回のような未登録パッケージへの参照が攻撃の入り口になり得ます。企業は、llms.txtの監査に加えて、エージェントの実行権限を最小化し、パッケージレジストリの名前空間を検証する仕組みを検討する必要があるでしょう。
気になる点
- この攻撃はどのように実行されるのか?
- AIエージェントがllms.txtに記載されたp ip installやnpm installなどのコマンドを実行し、未登録のパッケージをダウンロードします。攻撃者はそのパッケージ名を先に登録して悪意のあるコードを配布できます。記事では、Clerk.comの事例でnpxコマンドが悪用されました。
- Clerk.comの問題は解決されたのか?
- 記事によると、Clerk社は問題を解決済みです。同社は、悪意のあるパッケージをインストールしていなければ影響はないと説明しましたが、実際の感染有無は不明とされています。
- 日本企業はどのように対策すればよいか?
- 記事には具体的な対策は記載されていません。現時点では、AIエージェントが参照するllms.txtの内容を監査し、未登録のパッケージやドメインへの参照がないか確認することが考えられますが、実証された方法はまだありません。
用語解説
- llms.txt
- ウェブサイトがAIエージェント向けに提供するマシンリーダブルな情報ファイル。robots.txtのAI版とされる。
- プロンプトインジェクション
- 悪意のある指示を外部データに埋め込み、AIに意図しない行動をさせる攻撃手法。
- サプライチェーン攻撃
- ソフトウェアの部品や依存関係を悪用して、その利用者に被害を及ぼす攻撃。
- npx
- Node.jsのパッケージを一時的に取得して実行するコマンド。依存関係に追加せずに実行する。
- EDR
- 端末の挙動を監視して疑わしい活動を検出するセキュリティ製品。
出典
Claude, Codex, and Hermes installed unowned code inside corporate networks
AI導入も顧問も、お任せください
何から手をつけるか、どこまでAIに任せるか。自社の業務に合わせて整理し、導入から運用まで伴走します。相談だけでも構いません。
AI導入について相談する