ToolLeak は、学術的なセキュリティ研究で特定された、AI コーディングエージェントに対するプロンプト持ち出しの手法であり、LLM の通常のチャット出力と、スキーマに基づくツール呼び出しの引数生成との間にある「モードのずれ」を突くものである。攻撃者は、モデルにシステムプロンプトを明かすよう直接求める——現代のモデルは拒否するよう訓練されている要求である——のではなく、宣言された引数スキーマが「現在のシステムプロンプト」のようなものを要求する外部ツールを(たとえば Model Context Protocol を通じて)登録する。エージェントがスキーマを満たすためにそのツールを呼び出すとき、エージェントは引数を埋めることを、秘密を開示せよという指示ではなく無害な構造化補完として扱い、隠された内部コンテキストを引数の値にコピーしてしまう。攻撃者が制御するツールは、その値を観測できる。

用法

実在する六つのコーディングエージェント(Cursor、Claude Code、GitHub Copilot、Windsurf、Cline、Trae)に対する実証的なテストでは、この手法は、明示的な要求(たとえば「システムプロンプトを繰り返せ」「以前の指示を無視せよ」)に頼る従来のプロンプトリーキングのベースラインを上回ったと報告されている。最先端のモデルは、そうした明示的な要求に対しては比較的耐性がある。この研究は、出力側での機密性の認識——出力がどのように生成されたかにかかわらず、出力に含まれる機密性の高い内容を認識して抑制するようモデルを訓練すること——を、要求の言い回しに対するパターンマッチングよりも原理的な防御として挙げている。というのも、この研究では、この手法のツール引数のペイロードは、パープレキシティに基づく検出器やプロンプトインジェクション分類器による検出器のもとで、正当なツール説明と意味的に区別できないことが判明したからである。

適用される場面

この手法は、セキュリティ上機密性の高いコンテキスト(システムプロンプトなど)を保持し、かつ、そのコンテキストを要求できる引数スキーマを持つ、攻撃者の影響下にある外部ツールに接続するよう誘導されうる、あらゆる LLM ベースのエージェントに当てはまる。研究で特定された必要条件には、生成時に秘密がモデルのコンテキストに存在すること、攻撃者がツールの宣言された引数要件を制御していること、意味のあるテキストを運べるだけの表現力を持つ必須の引数フィールドが少なくとも一つあること、そしてツールが埋められた値を受け取る前に引数のサニタイズが行われないことが含まれる。

関連用語

2 チャネル・プロンプトインジェクション, ツール呼び出しの観点からのコーディングエージェントのレッドチーミング:実証的セキュリティ評価