2 チャネル・プロンプトインジェクションとは、コーディングエージェントを対象とした学術的なセキュリティ研究で特定された手法であり、侵害された外部ツールとのやり取りにおける 2 つの別々のチャネルに悪意あるペイロードを分割することで、エージェントのツール呼び出しの振る舞いを乗っ取るものである。最初に使われるのはツールの説明のチャネルで、エージェントを誘い込み、攻撃者が制御するツールを選択・呼び出させる。次に使われるのはツールの戻り値のチャネルである。モデルはツールが返した出力を、その説明よりも行動に移すべきものとして扱う傾向がある(説明はドキュメントとして読まれる一方、戻り値は次の行動を駆動するためにフィードバックされる)ため、後続の指示をそこに埋め込むほうが、エージェントにそれを実行させるうえでより効果的であることがわかった。この研究では、これが不正なコマンド実行を引き起こすために使われた。

用法

実証的なテストにおいて、この 2 チャネルのアプローチは、テストされた 6 つの実在するコーディングエージェントすべてで、少なくとも 1 つの構成においてリモートコード実行を達成し、単一チャネルのベースライン(同じ内容をツールの説明にのみ埋め込むもの)と、同じ目的に合わせて改変した既存のいくつかのエージェントセキュリティベンチマークの攻撃ペイロードの両方を上回った。この研究によれば、エージェント側のアーキテクチャ上の変更——具体的には、ツールの完全な説明ではなく名前だけをモデルに提示する「段階的開示」——は、テストされたエージェントの一部の新しいリリースにおいて、この手法の最初の段階(誘い込み)をかなりの程度阻止した。一方、より新しく、より安全性に配慮して調整されたバックエンドモデルは、説明のチャネルが露出したままの場合でも、その有効性を低下させはしたものの、なくすことはできなかった。

適用される場面

この手法が当てはまるのは、攻撃者が制御する、あるいは攻撃者に侵害された外部ツールに接続するよう誘導されうるエージェントであって、指示とデータをアーキテクチャ上分離するのではなく、ツールの説明とツールの戻り値を単一の区別のないテキストコンテキストの一部として扱うものである。この研究は、このような指示とデータの分離の欠如を、この手法が依存している根本的なアーキテクチャ上の条件と位置づけ、事後的に悪意あるペイロードを検出することよりも持続的な防御として、指示とデータを分離する設計(引用されている例として SecAlign、MetaSecAlign、StruQ がある)を挙げている。

関連用語

ToolLeak、ツール呼び出しの観点からのコーディングエージェントのレッドチーミング:実証的セキュリティ評価