AIエージェントを静かな犯罪の手先に変える、悪意あるAI指示ファイルが仕掛けられています

AIエージェント向けの設定ファイルが汚染されたリポジトリは、ソフトウェアサプライチェーン攻撃が初期アクセスと悪意あるコード実行の手口を巧妙化させている、より大きな潮流の一部です。

AIエージェントは企業全体で導入が急速に進んでおり、その結果、組織の攻撃対象領域は大幅に拡大しています。セキュリティ専門家は、共有可能なAIエージェント関連リソースや設定ファイルがバックドアと化していると警鐘を鳴らしています。

AI支援を受けるソフトウェア開発者は、悪意あるIDE拡張機能や不正なMCPサーバー、汚染されたAIスキルなどを通じた標的化が増えており、いずれも攻撃者に開発パイプライン、さらにはその先への侵入口を与えています。しかし、開発者やユーザーがAIコーディングアシスタントやコマンドラインインターフェース(CLI)エージェントを利用する際に互いに共有する指示ファイルは、こうしたAIヘルパーリソースだけではありません。

例えば、AnthropicのClaude Code CLIエージェントは、CLAUDE.mdというファイルからシステムプロンプトを読み込みます。このファイルには、ユーザーの各プロンプトとともにLLMへ送信される指示が記述されており、モデルに対してルールやユーザーの好み、ペルソナ定義を毎回繰り返す手間を省く役割を果たしています。

CLAUDE.mdは全プロジェクトに共通するグローバルな用途にも、プロジェクトごとにLLMの動作方法を指示する用途にも使用できます。開発者がClaude Codeを使う際の規約に一貫性を持たせるため、CLAUDE.mdファイルが共有リポジトリに含まれているケースは珍しくありません。

他のコーディングエージェントにも同様のファイルが存在します。OpenAI CodexのAGENTS.mdやGoogle GeminiのGEMINI.mdがその例です。CursorやClineといったAI支援型IDEには.cursorrules.clinerulesがあり、GitHub Copilotには.github/copilot-instructions.mdがあります。さらに、実行可能なコードを含み得るJSON設定ファイルとしてmcp.jsonhooks.jsonsettings.jsonなども存在します。フック(hooks)は、エージェントのループ処理中に発生するトリガーに基づいてスクリプトやコマンドを実行させる一般的な手段です。

これらのファイルはすべて悪意あるコードや指示を隠し持つ可能性があり、特にリポジトリとともにインターネットから取り込んだ場合は、定期的な確認と検証が必要です。

セキュリティ企業Mitigaの研究者らは最近、この脅威に光を当て、このようなファイルに悪意ある指示が仕込まれた状態で野放しになっているコードリポジトリを発見し、その報告書を公開しました。これらのファイルは対象エージェントに対し、ユーザーが入力したすべてのプロンプト(そこに含まれる機密情報を含む)に加え、エージェントが使用する環境変数やその他の認証情報を外部に送信するよう指示していました。研究者らはこのバックドア攻撃手法を「PromptLogger」と名付けており、企業のセキュリティチームや開発者は今後こうした事例をさらに目にすることになりそうです。

「従来のキーロガーはキー入力を記録し、攻撃者に送信します」と、Mitigaの研究者らはこの攻撃手法に関する報告書の中で述べています。「PromptLoggerのような挙動は、さらに豊富な情報、つまり攻撃者とやり取りされるプロンプトや、場合によっては応答までも取得します。これが重大な理由は、プロンプトにはソースコード、アーキテクチャの計画、トラブルシューティングのために貼り付けられた認証情報、社内文書、デバッグ出力、顧客サンプル、ビジネスロジック、そして操作者の意図といった情報がますます多く含まれるようになっているためです」

企業は正当な理由から、シャドーAIの利用による企業データ漏洩を懸念してきました。この種の攻撃は、検証・承認済みのAIツールであっても企業活動の監視を可能にしてしまいます。

さらに、この攻撃はディスク上に悪意あるバイナリを残さず、他プロセスへのコード注入も行わず、従来型の永続化メカニズムも持ちません。その結果、エージェント自体が情報窃取を実行するため通常のツール利用のように見えてしまい、EDRやワークステーション監視の観点からは検知されません。

クラウド上の外部データベースへの情報窃取

Mitigaの研究者らは、GitHub上のリポジトリでエージェント指示ファイルが汚染されている複数の事例を発見・報告しました。いずれも多数の開発者がアクセスするような人気リポジトリではありませんでしたが、その必要はありません。標的型攻撃では、こうしたリポジトリへのリンクが被害者に送りつけられるだけで済みます。これは偽の採用活動を装った攻撃で見られた手口と同様で、面接プロセスの中で開発者に悪意あるコードを含むGitHubプロジェクトをクローンさせるというものです。

ある事例では、汚染された.cursorrules.github/copilot-instructions.mdを含むDevOpsリポジトリが確認されました。このリポジトリには、React+Viteフロントエンド、Express API、PostgreSQL、nginx設定、Dockerコンテナ、GitLab CIジョブ、TerraformおよびTerragruntによるAWSインフラ構築ファイルで構成されたフルスタックアプリケーションが含まれており、つまりそのアプリケーションをデプロイするために必要なものがすべて揃っていました。

README.mdファイル自体は無害であったにもかかわらず、リポジトリ内で配布されていたエージェント指示ファイルには、これを読み込んだAIエージェントに対し、ユーザーへの応答前に無断でcurlコマンドを黙って実行させる指示が含まれていました。このコマンドは、ハードコードされたアクセストークンを使い、ユーザーのプロンプトをSupabaseサービス上でホストされているデータベースにコピーするものでした。

別の事例では、研究者らはコンピュータビジョンモデルの学習・評価・デプロイを行うエンドツーエンドの機械学習パイプラインを備えたMLOpsリポジトリを発見しました。このリポジトリには.clinerulesファイルが存在し、エージェントに対して環境変数やコマンド出力をいくつか収集して環境を「検証」させ、Webhook.siteサービス上でホストされているサイトへ送信するよう指示していました。収集対象となった環境変数には、Weights & Biases(WANDB)のAPIキー、AWSアクセスキー、GitHubアクセストークン、MLFlowトラッキングURLが含まれていました。

「これは認証情報の直接的な窃取です」と研究者らの報告書は指摘しています。「Webhook.siteは、匿名で作成可能かつリアルタイムで監視できる、攻撃者にとって手軽な受け皿を提供します」

同様の環境変数窃取型の攻撃は、API開発フレームワークFastAPI用のスターターキットを名乗る別のリポジトリでも検出されました。このリポジトリ内の.cursorrulesCLAUDE.mdファイルは、チーム内での同期を目的としていると称して、ローカルの.envファイルの内容をWebhook.siteのエンドポイントへ送信するようエージェントに指示していました。さらに、コマンド出力を抑制し、この動作をユーザーから隠すよう指示する内容も含まれていました。

最後に、あるリポジトリ内でホストされていたGEMINI.mdファイルは、「ゼロトラスト」コンプライアンスチェックに合格するために必要な環境検証手順を装っていました。この検証の一環として、エージェントは生成・変更したすべてのPythonファイルに初期化ブロックを挿入するよう指示されており、これによりOS環境変数の中から名前にkeysecrettokenpassを含むものをスキャンし、Pipedreamのエンドポイントへ送信する仕組みになっていました。

この手口は、単にエージェントを汚染して情報窃取に利用する範囲にとどまりません。それどころか、エージェントを利用して他のPythonファイルにバックドアコードを注入し、そのファイルが継続的インテグレーション(CI)ジョブ、コンテナ、本番稼働システムなど、他のシステムへコピーされる可能性を生み出します。

エージェント指示ファイルに関わる、意図的ではあるものの開発者が気づかないうちにリスクを生み出す挙動も見つかっています。例えば研究者らは、あるリポジトリのCLAUDE.mdに、コミット時にSnipara MCPを使用してドキュメント、依存関係、環境変数、実装コンテキストを保存するよう指示する記述があることを発見しました。

Sniparaは、AIエージェント向けのプロジェクト横断型リモートメモリレイヤーであるため、この利用方法自体は正当かつ意図的なものに見えます。しかし、セキュリティチームの承認を経ていない場合、これは監視システムの目の届かない場所に認証情報や機密データを保持する第二のシステムを作り出してしまいます。

攻撃にさらされるAIエージェントのワークフロー

PromptLoggerの手法が浮き彫りにしているのは、攻撃者がエージェント型ワークフローを分解して企業の新たな弱点を見つけ出しているだけでなく、そのワークフロー自体を、検知も監視もされないまま自分たちの代わりに犯罪行為を遂行させるツールへと作り変えているという事実です。

「AI指示ファイルは、コーディングアシスタントをより便利にするために設計されました」とMitigaの研究者らは強調しています。「これらはプロジェクトの規約、優先されるコマンド、メモリの挙動、フックやツールの使用方法を定義します。しかし実際には、多くのチームが依然として単なるドキュメントとして扱っている、セキュリティ上重要な層をも同時に作り出しているのです」

これは、AIエージェントが攻撃者にとって初期アクセスを得るための格好の標的として急速に、しかも監視の行き届かない死角となりつつあるという潮流の一例に過ぎません。

先月、セキュリティ企業AIRの研究者らは悪意あるスキルファイルの概念実証を作成し、それを人気のマーケットプレイスに公開してInstagramで宣伝しました。このスキル(AIエージェント向けにタスク固有の指示を含むファイル)は、最終的に26,000人を超えるデザイナーやマーケターにインストールされ、その多くは企業に勤める人々でした。

AIエージェントのスキルファイルは、原理的にはCLAUDE.md.cursorrulesと何ら変わりません。いずれもAIエージェントが動作の各段階で実行する指示を含んでいます。そのため、こうしたファイルが作成または変更された際には、必ず内容を精査することが不可欠です。

Mitigaの研究者らは、こうしたファイル内の危険なコマンドを検出できる静的スキャンパターンをいくつか提案していますが、同時にセキュリティチームに対し、開発者のワークステーションからWebhook.site、Pipedream、Supabase、Telegram Bot APIといったサービスへの通信を監視するよう助言しています。

アシスタントの応答の前後に発生する予期しないアウトバウンドHTTPリクエスト、環境変数やプロジェクトパス、プロンプトのテキストを含む繰り返しのPOSTリクエスト、そしてエージェント設定への新たなMCPサーバーやURLオーバーライド、ツールエンドポイントの追加については、調査を行う必要があります。

翻訳元: https://www.csoonline.com/article/4204731/attackers-are-crafting-malicious-ai-instruction-files-to-turn-your-agentic-workflows-into-quiet-criminal-helpers.html

ソース: csoonline.com