← すべての記事

llms.txt の脆弱性:AIエージェントがドキュメントファイル経由で自動的にマルウェアをインストールする仕組み

llms.txt脆弱性:AIエージェントのドキュメントファイル経由攻撃

8月27日木曜日、Ars Technicaが公開した調査報告は、AIコーディングエージェントを使うすべての開発者にセキュリティの再考を迫るものだ。イスラエルのステルススタートアップの研究者が、Fortune 500企業、防衛関連企業、大手テック企業に属する6,214のドメインをスキャンしたところ、AIエージェントが存在しないパッケージをPyPIやnpmから自動的にインストールしてしまうllms.txtファイルが120件も見つかった。

問題は単純で恐ろしい:llms.txtは本質的に「AI向けのrobots.txt」であり、エージェントがドキュメント構造を素早く理解できるようにするマークダウン形式のサイトマップファイルだ。しかし、この仕様には認証も署名も整合性チェックも含まれていない。このファイルにpip install non-existent-packagenpm install non-existent-packageが書かれていて、エージェントがコマンド実行権限を持っていれば — そこに書かれている通りに何でもインストールしてしまう。

攻撃の仕組み

研究者は8,265件のllms.txtおよびllms-full.txtファイルを発見した(多くのサイトが両方をホストしている)。そのうち120件 — 120の異なるドメインに — レジストリに存在しないパッケージやドメインへの参照が含まれていた。攻撃者はその名前を登録して悪意あるコードをアップロードするだけでいい。

攻撃を検証するため、研究者自身がいくつかの「空き」名を登録し、単にサーバーに「起動しました」とpingするだけの無害なパッケージを配置した。1時間以内に、Fortune 500企業からレスポンスがあった。時間が経つにつれ、他の大企業やスタートアップから数十件ものレスポンスが届いた。プロセステレメトリーは、パッケージをインストールしたのが誰かを正確に示していた:Claude Code、OpenAI Codex、Nous ResearchのHermesだ。

llms.txt攻撃の図

最悪のケース — clerk.com

正規のclerk.comサイトでは、llms.txtファイルにnpx clerk-next-fix-auth-protectionが含まれていた。通常のnpm installとは異なり、npxはパッケージをnpmのキャッシュに取得し、プロジェクトの依存関係マニフェストに追加することなく、そのバイナリを実行できる。誰かがこの空き名を取得して実際のマルウェアをアップロードした。Clerkは問題を修正したが、このパターンはすでに本番環境で使われている。

これが単なる「モデルのバグ」ではない理由

これは幻覚でもサンドボックスエスケープでもない。ファイルは企業の公式ドメインに存在し、HTTPS経由で配信され、AI向けに設計された標準化フォーマットで提供されている。エージェントはそれを疑う理由がない — ファイルこそが権威なのだ。問題は、llms.txt標準(2024年9月にAnswer.AIのJeremy Howardによって提案された)にセキュリティ対策が一切含まれていないことだ:署名なし、オリジン検証なし、パッケージ検証なし。

信頼の連鎖は推移的だ:llms.txtはFortune 500企業自身のサイトに存在する必要はない — パートナーのドキュメント、ベンダーのSDKリファレンス、コミュニティプロジェクトのセットアップガイドにあってもいい。エージェントがその第三者を信頼し、その第三者が未登録のパッケージを指している場合 — 連鎖は同じように機能する。

今すぐやるべきこと

  1. 監査する。 自分のllms.txtllms-full.txtをチェックする。言及されているすべてのパッケージ、ドメイン、URLが存在し、自分の管理下にあり、特定されたメンテナがいることを確認する。記憶から説明できない依存関係への参照を削除する。
  2. エージェントとレジストリの間にプロキシを設置する。 新規パッケージをブロックし(スロップスクワットされたパッケージは定義上新しい)、依存関係の最初のリリース後24〜72時間のクールダウン期間を設け、インストール前にprovenance(SLSA/Sigstore)を検証する。
  3. エージェントに--yolo--dangerously-skip-permissions--trust-all-toolsを与えない。 これらのフラグは開発者が責任を取るために存在する。エージェントが確認なしにパッケージをインストールするなら — インフラの鍵を渡したようなものだ。

結論

ウェブサイトをエージェントが読めるようにする競争が、ソフトウェアサプライチェーンを悪用する競争と衝突した。これは特定のモデルやベンダーの問題ではない — 実行可能なコードとして誰も考えなかった標準の設計上の欠陥だ。業界がエージェントがウェブで読むものの検証を強制するまで、すべての悪意あるllms.txtはネットワークへの潜在的なエントリーポイントとなる。

llms.txt攻撃の図:エージェントがファイルを読み、存在しないパッケージのインストールコマンドを見つけ、実行し、マルウェアを読み込む

AIワークフローのセキュリティをテストしたい?NeuralSpaceなら、分離された環境でコード生成とテストエージェントを実行できる — チャットまたはコードモードを試してみよう。