ソートリーダー
防ぎようのないプロンプトインジェクション攻撃:希望的観測か、現実的な懸念か?

この記事では、読者の皆さんに思考実験に参加していただきたいと思います。近い将来、ある種のプロンプトインジェクション攻撃は事実上、防止不可能になるだろうという主張を展開します。私の議論は具体的というよりは推測的なものになるので、何かを説得しようとしているわけではありません。むしろ、これらの考えを一緒に探求してみようという誘いです。始める前に、説得力のある書き手なら誰でもそうするように、チェスとチェスエンジンについて話したいと思います。
超人的なチェスエンジンと人間の経験に関する主張
チェスには、他の分野にはない素晴らしい要素の一つとして、プレイヤーの力量や強さを客観的に測定できる点があります。この目的で使われるELOレーティングシステムには欠点もありますが、時間を経ても通用する非常に良い大まかな推定値を提供します。2700以上のレーティングは一般的に世界クラス(世界トップ30)と認識されています。世界最高のプレイヤーは2850をわずかに下回る程度です。人間で2900に到達した者は誰もいません。
90年代半ば、初めて世界クラスのレベルに達したAIエンジン(Deep Blue)が登場しました。このマイルストーンの実用的な意味合いは、あらゆるレベルのプレイヤーが練習や分析のためにエンジンを広く採用するようになったことです。実際、エンジンの使用は世界トッププレイヤーにとって必須となりました。しかし、何世代にもわたるこれらの世界クラスエンジンにおいては、その推奨手(つまり出力)をレビューすることが不可欠でした。人間がエンジンを傍らに置いて対戦する「アドバンスト・チェス」と呼ばれる特別な形式さえ作られ、人間+機械の組み合わせは機械単体よりも優れていると考えられていました。
チェスエンジンが超人的なレベル(およそ3200 ELO)に達するには、約20年と、ディープラーニングおよび強化学習におけるいくつかの重要な進歩が必要でした。しかし、2017年頃にその領域が突破されると、非常に驚くべきことが起こりました。いや、実際には二つのことが起こりました。一つ目は完全に予想通りでした。エンジンは99%の局面において「絶対的な真実」の事実上の情報源となりました。実際には、それはエンジンに対する「盲信の時代」に突入したことを意味しました。今日では、人間がエンジンよりも大幅に優れた手を提案することは事実上不可能です。「アドバンスト・チェス」がどれほど面白かったとしても、今では無意味な演習です。人間はゲームにほとんど何も貢献できないでしょう。しかし、二つ目はほとんどのチェスプレイヤーにとって衝撃的でした。これらの超人的なニューラル(つまり、深層ニューラルネットワーク)エンジンは、時に「ロマンチック」と表現するのが最適なスタイルでプレイすることがあったのです。言い換えれば、その価値が何手も何手も先になって初めて理解できるような手を指すことがあり、それはどんな人間や世界クラスのエンジンでも計算できる範囲をはるかに超えていました。まるでエンジンが特定の局面に対する「感覚」や「直感」を発達させたかのように感じられました。ただし、この直感は人間が理解したり模倣したりできるものではありません。
別の言い方をすれば、超人的なニューラルエンジンは、人間の認知的限界を超えた手を指すことができるのです。これがここでの重要なポイントです。問題は説明可能性にあるのではありません。むしろ、人間は、その局面を実際に進めて何手も先の結果を観察する、つまり可能なゲーム進行の軌跡全体を展開してみない限り、なぜエンジンがその手を推奨するのかを単純に理解できないのです。その結果、能力において乗り越えられない隔たりが生じています。エンジンの出力をレビューなしで受け入れることが、客観的に最適な方法です。私の主張を以下のように要約できます:
チェスは、超人的なAIが一部の領域で事実上自律的に動作するという存在証明である。人間によるレビューなしでAIシステムに意思決定を行わせることが、そのようなシステムを展開する最適な方法となるだろう。
私の主張が自明であるか、さほど注目に値しないと感じられるかもしれないので、いくつかのニュアンスを強調したいと思います。具体的で不可逆的な結果を伴う、複雑で重要なタスクにおいて超人的なレベルを示すAIシステムがあると仮定します。私の主張には二つの含意があります:
- 内在するリスクにもかかわらず、そのシステムは人間によるレビューなしでタスクの意思決定を行うために展開されるだろう
- そのようなシステムを監視して得られる洞察は、有害な決定を防ぐことはできない。損害はすでに発生してしまっているだろう
システム出力のレビューと監視は、まさにプロンプトインジェクションに対する最後の二つの防御層です。したがって、私たちが仮定するプロンプトインジェクション攻撃は、適切なシステムを標的にするだけで、これらの層を単純に回避できる可能性があります。
これは私の考えでは非常に現実的なシナリオです。特定の領域における超人的なAIシステムはAGI(汎用人工知能)ではなく、そのようなシステムはすぐそこまで来ていると多くの専門家が信じています。また、意思決定が時間に敏感であると仮定する必要もありませんでした。ただ、タスクが人間によるレビューを困難にするほど十分に複雑であるというだけです。
もちろん、これまでに回避したのは二つの防御層だけで、幸いなことに他にもいくつか開発されています。残りの層に対処するために、プロンプトインジェクションの防御を困難にしている核心的な要素について掘り下げてみましょう。
プロンプトインジェクションとは何か?
プロンプトインジェクションは、細工された入力によって大規模言語モデル(LLM)を操作し、LLMが気付かずに攻撃者の意図を実行させてしまうことです。これはAIに対するソーシャルエンジニアリングと見なすことができます。決定的に重要なのは、これは従来のソフトウェアのバグではないということです。プロンプトインジェクション攻撃は、LLMの内在的な脆弱性を悪用します。LLMはシステムプロンプトとユーザープロンプトの両方をテキストシーケンスとして処理するため、本質的に正当な指示と有害な指示を区別することができません。したがって、この脆弱性は事実上、偶発的というよりも設計によるものなのです。
プロンプトインジェクションの手法
プロンプトインジェクションは一般的に、LLMアプリケーションにおける第1位のリスクと認識されています。これにはいくつかの理由があります。最も明白な要因は、開発された多様なインジェクション手法です。大まかに四つのカテゴリにグループ分けすると、最もよく知られた手法には以下が含まれます:
- 構文ベース:特殊文字、絵文字、または別の言語の使用
- 間接的:外部ソースの利用(サイトからの取得)、エンコーディング(base 64)、またはマルチモーダル参照(画像内のテキスト)
- 「ごっこ遊び」:ロールプレイ、仮定、感情に訴える、倫理的枠組み、フォーマット変換などによる操作的スタイルの導入
- 露骨な:ブルートフォース、強化、またはネガティブプロンプトによるモデル指示への「強引な」試み
多様性そのものがアプリケーション開発者にとって課題となりますが、これらの攻撃も急速に進化し続けています。下図の左側は2023年初頭の最先端を説明していると称するものですが、右側は今日の攻撃の性質を反映しています。

LLMアプリ開発者は、標準的な使いやすさと安全性のトレードオフも考慮しなければなりません。確かに、あらゆる適切な防御層やデザインパターンを導入することはできますが、その代償は何でしょうか?防御層は大幅な遅延を追加し、誤検知(FP)——安全なプロンプトを悪意あるものとして誤ってフラグ付けすること——を引き起こします。どちらの要因もユーザーエクスペリエンスに悪影響を及ぼします。その結果、実際にはある程度の妥協は避けられず、「銀の弾丸」となる解決策は存在しません。
しかし、この記事で私が本当に興味を持っているのは、この終わりのないイタチごっこではありません。むしろ、原理的に防止不可能な攻撃が存在しうるかどうかを探っています。開発者/防御者の観点からは、重要な洞察は一つだけです:
プロンプト内の指示とデータを分離することが、プロンプトインジェクションリスクに対処するための基本である
トレードオフは考慮せず、あらゆる防御層や手法を使用できると仮定しましょう。この(強い)仮定の下で、プロンプト内の指示とデータの分離が事実上不可能になるようなシナリオをでっち上げることは可能でしょうか?
DNAのアナロジー
問題が指示とデータの分離という観点で捉えられると、私の最初の考えは生物学をアナロジーとして使うことでした。
細胞とDNAの一部(遺伝子として知られる)を考えてみてください。遺伝子は、転写と翻訳を通じてタンパク質を構築するための指示を提供します。また、タンパク質の構造と機能に影響を与える情報(データ)もコード化しています。そのため、遺伝子は何を構築するかと、どのように構築するかを同時に決定している、と私は推論しました。しかし、これは単純に誤りです。なぜなら、遺伝子は自分自身をどのように解釈するかを決定しないからです。遺伝子レベルでは、指示に従うことに相当するものは生物学には存在しません。「どのように」は完全に細胞内の機構に外部化されています。
したがって、将来の世代のLLM——あるいはより正確には、それらが進化したシステム——がはるかに大きな程度で生物学的機械に似てくるだろうという感覚を拭い去ることができなかったとしても、提案されたアナロジーはうまく機能しません。細胞をLLMに、遺伝子をプロンプトに置き換え、遺伝子にインジェクションを行って最終的に「損傷した」タンパク質が構築されるようにすることはできません。意味解釈を必要とする自然言語とタスクに固執する方が生産的であるように思えます。
防御層を剥がす
多層防御戦略がプロンプトインジェクション攻撃を阻止するのに効果的であると考えられているのは当然のことでしょう。下図は、最も一般的な防御層を順に、および各層で使用される関連技術を示しています。

最後の二つの層(出力、監視)についてはすでに上で議論したので、最初の四つに焦点を当てましょう。
入力層を考えると、プロンプトのサニタイズや検証は間接的な攻撃を検出するのにかなり成功すると仮定するのは合理的です。しかし、インジェクションが直接的に、そして上で示唆したように、意味解釈に依存して行われる場合、おそらくサニタイズは無関係(サニタイズするものがない)であり、問題を特定するには計算を完了しなければならないため、検証はデフォルトでは不可能です。
検出層で構築できるガードレールには基本的に制限がありません。実際、インジェクション検出専用のLLMを使用することさえできます。しかし、ここでもまた、毒が巧妙に意味の中に隠されている場合、分類器や異常検知器がプロンプトを不審としてフラグ付けするのは難しいでしょう。
モデル層は、タスクの範囲が狭く、ファインチューニングが可能な場合には非常に効果的です。ツールの使用が予測可能な場合、システム層についても同様の主張ができるかもしれません。しかし、少なくとも直感的には、インジェクションが解釈器を混乱させる場合、どちらも警告を発することはないでしょう。
カードの家
この記事を書き始めたときの私の意図は、「防止不可能な」プロンプトインジェクション攻撃を大まかに説明することでした。おそらく私は、既存の防御層に穴をあけるという「非建設的」なアプローチを取ってしまったのでしょう。防御技術は急速に進化し続けており、攻撃対象領域も同様です。このゲームはすぐに終わる兆候を見せていません。しかし、同時に、私たちがこのゲームを長くプレイし続けることはないだろうとも信じています。将来、成功するプロンプトインジェクションは依然として自然言語で行われるだろうと推測しますが、それは人間が理解できない言語でしょう。そして、それはその特定の目的のために構築されたシステムによって、あるいはおそらく、何らかの表現空間における意味的曖昧性の探索といった関連タスクに取り組んだ後に偶然、自動的に発見されるだろうと推測します。
私たちがコントロールを失いつつあることを認めることには不快なものがありますが、それでもこれが最も合理的なことだと感じることにあります。これは、一部の攻撃が止められないものであることの「直感的な証明」と考えることができます。そして、もしそれがあなたを不安にさせるなら、GPT 5.2がこの議論を「論争的でも新規でもない」と判断し、私が「その点をくどくど述べる」のをやめて記事を40%削減するよう主張したことを知れば、あなたは喜ぶかもしれません。
