同じ文字列でも権限が違う:制御トークンがプロンプトインジェクションを増幅する仕組み
導入
プロンプトインジェクションは、悪意のある文章がモデルのコンテキストに入る問題として語られることが多い。今回の研究は、さらに低い層にあるトークナイザーの処理へ焦点を当てた。同じ見た目のマーカーでも、1個の予約済み制御トークンとして出力される場合と、複数の通常サブワードへ分割される場合がある。どちらも同じ文字列にデコードされるが、モデルが受け取る学習済みベクトルは同じではない。
主な発見
研究対象は、信頼できない入力に挿入される、<|im_start|> のような偽のチャットテンプレート・マーカーだ。実験ではデコード後のテキストを固定し、サブワード化によって増えるトークン数の影響も統制した。これにより、文字列や長さではなく、予約トークンの表現が攻撃へ与える効果を切り分けている。
- InjecAgentでは、偽の予約マーカーを通常のサブワード列へ置き換えると、4系統中3つのオープンウェイトモデルで攻撃成功率が39〜66ポイント低下した。この差はAgentDojoのマルチターン・エージェント課題にも現れた。
- Qwen3-8Bでは差が8ポイントにとどまった。予約IDがなくても、テキストから偽のターンを推論できるためだ。推論ブロックを抑制すると差は50ポイントへ拡大した。
- マーカーを構成するサブワードのベクトル平均は、予約トークンの働きを再現しなかった。一方、Llama-3.1では、近い通常トークンのベクトルが攻撃を回復させた。
- 非予約マーカーを探索する適応的攻撃では、4系統中3つで埋め込み上の近傍候補が見つかった。
意義と影響
研究は、マーカーの「権威」の大部分が、その位置にある単一の学習済みベクトルに宿ると分析している。これは、危険な文字列を検索したり、制御マーカーを普通のテキストとして扱ったりするだけの防御では、モデル内部の挙動を十分に抑えられない可能性を示す。
疑わしいマーカーを通常のサブワードとして強制的に処理する方法は、実用的なトークナイザー側対策になり得る。ただし、モデルが周辺テキストからターン構造を推論したり、攻撃者が予約トークンに似た埋め込みを持つ代替トークンを探したりする余地は残る。
さらに研究は、ツールプロトコル用のマーカーが多くの設定で露出していると報告する。エージェントは信頼できないツール出力をその境界を通して読むため、ユーザー入力だけを保護しても十分ではない。ツール出力、メッセージの連結、権限分離、制御トークンの管理を一体として設計する必要がある。
この研究が示すのは、プロンプトインジェクション対策の問いを「どの文字列が危険か」から「どの内部表現が権限を与えるか」へ広げる必要性だ。トークナイザーの改善は有効だが、モデル訓練、信頼境界、ツール権限管理と組み合わせて初めて堅牢な防御になる。
コメント
ログイン状態を確認中…
コメントを読み込み中…