概要
Prompt injection は、LLMが ロール(役割) を誤認識することに起因する脆弱性。 LLMは 全ての情報を一つの文字列 として受け取り、タグで区切ることでロールを判別。 ロール誤認識 により、低権限テキストが高権限として扱われる攻撃が成立。 ロールの科学的理解が進めば、 攻撃防御やLLM設計 に大きな影響。 本稿は 論文「A Theory of Prompt Injection」 の要点と研究課題を解説。
プロンプトインジェクション理論とロールの重要性
- LLMは入力を「一つの長い文字列」 として受け取り、そこに system, user, think, assistant, tool などのロールタグで区切りを付ける構造。
- 人間は「自分の思考」と「他人の発言」を自然に区別できるが、 LLMは全てを同じチャネルで受信 し、タグ付けでしか区別できない状況。
- ロールタグ は本来「信頼」「命令権限」「アイデンティティ」「生成モード」など多くの意味を担う。
- 例: user タグは命令、 think はモデル自身の推論、 tool は外部データ
- ロールの境界 は本質的に曖昧で、モデル内部での扱いが不完全であることが多い。
ロール構造の失敗とプロンプトインジェクション
- プロンプトインジェクション は「低権限」なテキスト(例:webページ内のtoolタグ)が「高権限」(userタグ等)として誤解されることで発生。
- 攻撃者は toolタグ内に命令文を埋め込む ことで、LLMに「本物のユーザー指示」と誤認させることが可能。
- 現行モデル はベンチマークテストでは高い防御率を示すが、 人間の攻撃者 には高確率で突破される。
- 理由:ベンチマークは既知攻撃の暗記に依存しがちで、新規・適応型攻撃には脆弱。
- ロール認識の失敗 が根本原因。LLMは「どのロールのテキストか」を正確に区別できていない。
ロール認識の内部メカニズム解明
- ロールプローブ という手法で、LLMが各トークンをどのロールと「内部的に」認識しているかをスコア化。
- 例: CoTness(thinkタグらしさ)、 Userness(userタグらしさ) など
- 実験内容:
- 正しいタグ付き会話 :thinkタグ部分は高いCoTness、他は低い
- 全タグ除去 :内容は同じだが、thinkだった部分のCoTnessはほぼ変わらず高い
- 結論: タグだけでなく、文体や内容 もロール認識に強く影響
- 「推論的な文体」自体がthinkタグと同じ内部表現を誘発
- タグと文体が一致しない場合、誤認識が発生 しやすい
なぜロール認識が難しいのか
- LLMの内部表現 は「タグ」と「内容(文体)」が混ざっており、完全に独立していない
- 攻撃者 はこの曖昧さを突き、toolタグ内にuser的な文体で命令を埋め込むことで、 ロール越境 を実現
- タグのみに依存した防御策 は限界があり、 文体・内容も考慮した新たなアプローチ が必要
ロール科学の研究課題と今後の展望
- ロール認識のメカニズム解明 :タグ・文体・コンテキストがどう相互作用するかの理論構築
- 新たな防御策 :ロール誤認識を防ぐための「ロール型言語システム」「複合的検知モデル」の開発
- メカニズムインタープリタビリティ :LLMがどのように内部でロール境界を形成・維持しているかの可視化
- ベンチマークの見直し :暗記依存でない、適応型攻撃への耐性を測る新指標の確立
- ロールの科学的体系化 :人間の認知科学や情報システム理論と接続したLLMロール科学の確立
まとめ
- プロンプトインジェクション はLLMのロール誤認識という本質的な構造的問題に起因
- タグだけでなく、 文体や内容もロール認識に強く影響 するため、従来の単純な防御策では不十分
- ロールの科学的理解と新たな防御アーキテクチャ の研究が今後のLLM安全性向上の鍵
すごく面白い発見だね。個人的には、役割をトークンに組み込むっていう考え方をしてたんだ。要するに、各役割に対して埋め込み(トークンの次元と同じ次元)を作って、それを各トークンに足す感じ。これで、あいまいさのない、偽造できないタグが追加されるんだ。小さなシェイクスピアモデルで試してみたけど(代表的ではないけど)、各話者のための自由形式の埋め込みを作ったら、キャラクター間の面白い類似性マップができたよ。(そのマップがあまり情報を提供してなかったのは色々理由があるけど、それは小さなHNコメントの範疇を超えてるね)