「制御プレーンとデータプレーンの混同」(control-data plane confusion)は、プロンプトインジェクションが通常の防御に抵抗する理由を説明するために、NVIDIA の記事 LLM システムをプロンプトインジェクションから守る が用いている言い回しである。同記事によれば、標準的なセキュリティのベストプラクティスに反して、LLM を扱う場合には制御プレーンとデータプレーンを分離できない。1 つのプロンプトが制御とデータの両方を含んでおり、プロンプトインジェクションはこの分離の欠如を突いて、データが期待される場所に制御の要素を挿入する。この説明に従えば、この脆弱性は特定のアプリケーションの欠陥ではなく、同記事が現在の LLM に内在すると呼ぶものであり、だからこそ同記事はプロンプトインジェクションを、パッチで塞ぐものではなく、それを前提に設計すべきものとして扱っている。この言い回しは同記事自身の結論部に一度現れるだけであり、確立した用語として提示されているわけではない。
用法
この言い回しは、技法を名指すためではなく、ある帰結を説明するために用いられている。プロンプトにテキストを入れることができる攻撃者は出力を確実に操れるため、同記事が述べる結論は、LLM が生成するものはすべて潜在的に悪意あるものであり、入力にテキストを注入できるあらゆる主体の支配下にあるものとして扱わなければならない、というものである。すなわち、下流の何かがそれを解析する前に検査し、サニタイズしなければならない。被害が生じるのはまさにその下流である。同記事が取り上げる 3 つの事例はいずれも、モデルの出力を受け取り、そこからインタープリター、HTTP エンドポイント、データベースへの呼び出しを組み立てるチェーンであり、出力を支配することがそのままサービスを支配することになる。
同記事で NVIDIA AI Red Team が推奨する防御の姿勢は、入力を浄化しようとすることからではなく、出力を信頼できないものとして扱うことから導かれている。外部サービスへの呼び出しは厳密にパラメーター化し、最小権限のコンテキストで行わなければならず、その後の各呼び出しには、現在のプロンプトに寄与したあらゆる主体のうち最も低い権限を適用する。プラグインのテンプレートは可能な限りパラメーター化すべきであり、入力はこの混同を悪用しようとする試みがないかを特に調べるべきである。回避できる場合には、そもそもモデルを外部リソースに接続しないよう同記事は勧めており、複数のサービスを呼び出す多段階のチェーンについては、厳格なレビューが必要なものとして特に挙げている。
関連用語
プロンプトインジェクション、間接プロンプトインジェクション、デュアル LLM パターン、ガードレール、LangChain、LLM システムをプロンプトインジェクションから守る