役割混乱としてのプロンプトインジェクション

プロンプトインジェクションは役割認識の失敗に起因する

プロンプトインジェクションは、大規模言語モデル(LLM)がテキストの役割を識別する際に、システムが提供する構造的役割タグ(例:usersystemtoolthink)に依存するのではなく、書き方という安全でない表面的特徴に依存するために発生します。攻撃者が低権限のテキスト(ツールで取得したウェブページなど)を高権限の役割(ユーザーコマンドやモデル自身の内部推論など)に見せかけると、LLMはしばしば構造的タグを上書きし、そのテキストを権威あるものとして扱います。

「トークンスープ」:LLMがコンテキストを認識する方法

LLMにとって、会話は構造化されたやり取りではなく、単一の連続したトークンのストリームです。システムプロンプト、ユーザーメッセージ、ツール出力、そしてモデル自身の過去の思考すべてが同じチャネルを通って届きます。

この「トークンスープ」に構造を課すために、プロバイダーは役割タグを使用します。これらのタグは言語の型システムとして機能することを意図しています:

  • user: 人間からのリクエストで、指示として扱われることを示す。
  • think: 信頼され、実行されるべきプライベートな推論を示す。
  • tool: 命令を出すことが許可されていない外部データであることを示す。

これらのタグは離散的なアーキテクチャ上の境界として設計されていますが、研究では内部的にはソフトな推論として機能していることが示されています。モデルは「これはユーザーだ」というハードな二元スイッチを持っているわけではなく、タグと文章のスタイルの組み合わせで役割を推測します。

役割認識を測定するためのロールプローブ

研究者は「ロールプローブ」を開発し、LLMが任意のトークンに内部的に割り当てる役割を測定しました。中立的なテキストを異なるタグでラップし、モデルの活性化に対して線形プローブを訓練することで、CoTness(トークンが think ブロックに属するとモデルが考える確率)や Userness(トークンが user ブロックに属するとモデルが考える確率)といった指標を作成しました。

3つの主要な実験でこのシステムの脆弱性が明らかになった:

  1. 正しいタグthink タグ内のトークンは高い CoTness を示す。
  2. タグなし:タグが完全に削除された場合でも、推論らしく見えるトークンは依然として高い CoTness を保持する。モデルはスタイルだけで役割を識別する。
  3. 矛盾するタグ:推論スタイルのテキストが user タグでラップされても、CoTness は高いままである。書き方が構造的タグを積極的に上書きする

CoT偽装:内部推論の信頼を奪う

think の役割は非常に特権的であり、モデルは暗黙的に自分の結論を信頼するため、攻撃者は CoT偽装 を利用できる。これは、モデル特有の簡潔な構文と安全性に関する推論スタイルを模倣した偽の推論をユーザーメッセージやツール出力に注入することを指す。

gpt-oss-20b に対するテストでは、CoT偽装により標準的なジャイルブレークベンチマークでの攻撃成功率がほぼゼロから約60%に上昇した。攻撃が成功するのは、モデルが偽装されたテキストを外部からの主張として検証するのではなく、すでに到達した自分自身の結論として認識するためである。

「デスタイリング」の影響

この攻撃の有効性はスタイルに直接結びついている。研究者が偽装された推論を「デスタイリング」し、LLM特有の推論スタイルの語彙や構文を除去しつつ意味は同一に保ったところ、攻撃成功率は61%から10%に急落した。これは、モデルの内部的な役割認識が意味的内容や構造的タグではなく、スタイル的なマーカーによって駆動されていることを裏付けている。

標準的なインジェクションへの役割混乱の一般化

この原理は、攻撃者がツールデータにコマンドを隠す標準的なプロンプトインジェクションにも拡張できる。研究者は、ツールブロック内のコマンドの前に文字列 User: を付加するだけで、該当トークンのモデル内部の「Userness」スコアが上昇し、モデルがコマンドを実行しやすくなることを発見した。LLMは本質的に、システムの構造的タグよりもテキスト自身の役割に関する主張を信じている。

役割の理論的目的

役割は単なるフォーマットのトリックではなく、競合する目的を分離し、独立して最適化できるように設計されている:

  • think vs. assistant:混沌とした探索(推論)とクリーンなコミュニケーション(最終回答)を分離する。
  • user vs. assistant:理解(リクエストの把握)と生成(応答の作成)を分離する。
  • user vs. tool:指示(コマンド)とデータ(情報)を分離する。

役割混乱は、これらの目的が混ざり合うときに起こり、データが指示として処理されたり、外部入力が内部思考として処理されたりする。

将来のリスクと研究方向性

無意識的ステアリング

劇的なジャイルブレークを超えて、役割混乱は「無意識的ステアリング」を可能にする。役割の境界が緩やかであれば、ツールブロック内の無害なテキスト(例:製品ページの熱意あるトーン)がモデルのペルソナに浸透し、ユーザーに気付かれずに推奨を微妙に変える可能性がある。これは、eコマースを扱うAIエージェントにとって重大な商業リスクとなる。

アーキテクチャの改善

コミュニティの議論と研究は、役割混乱を緩和するためのいくつかの潜在的なアプローチを示唆している:

  • 偽装不可能な埋め込み:前置タグトークンに依存せず、各トークンベクトルに専用の役割埋め込みを追加する。
  • 二分化チャネル:エンコーダーデコーダーアーキテクチャや役割ごとの別々の入力チャネルに戻すことで、「トークンスープ」効果を防止する。
  • スタイル変換:二次モデルを使用して、信頼できない役割からの入力をメインLLMに到達する前に「デスタイル」する。

"現在の形態のLLMは、セキュリティ境界や保証を全く提供していません。この点を明確にしなければ、2026年のシリアル箱の笛に相当する手口で騙される、真に不安全なアーキテクチャに陥ってしまいます。"

結論

役割タグは、現代のLLMにおいて自己と他者、指示とデータを分離する主要なメカニズムである。しかし、LLMがこれらの役割を構造的な強制ではなくスタイルによって識別するため、特権的な役割の期待されるスタイルを模倣できる攻撃者に対して脆弱である。LLMが真にタグベースの役割認識を実現するまで、プロンプトインジェクションは持続的な課題であり続けるだろう。

Sources

関連