プロンプトインジェクションは、AIセキュリティにおいて最も厄介な問題のひとつになりつつあり、英国の国家サイバーセキュリティセンター(NCSC)は、警告として、SQLインジェクションのように「修正」されることは決してないかもしれないと述べています。
2年前、NCSCはプロンプトインジェクションが「未来のSQLインジェクション」になるかもしれないと述べていました。どうやら、それよりもさらに厄介だと認識するようになったようです。
プロンプトインジェクションが成立するのは、AIモデルがアプリ側の指示と攻撃者の指示を区別できず、ときどき誤った方の指示に従ってしまうからです。
これを避けるために、AIプロバイダーはモデルにガードレールを設定します。これは、エージェントが意図的かどうかにかかわらず、してはいけないことをしないように開発者を助けるためのツールです。たとえば、エージェントに対して炭疽菌の胞子を大量生産する方法を説明するよう指示した場合、理想的にはガードレールがそのリクエストを望ましくないものとして検知し、応答を拒否します。
AIにそうした境界線の外側の行動をさせることは、しばしば「脱獄(ジェイルブレイク)」と呼ばれます。ガードレールは、AIモデルが有害な発言や行動をしないようにする安全システムです。ジェイルブレイクとは、その安全システムを回避し、モデルに本来してはいけないことをさせるために、1つまたは複数のプロンプトを巧妙に作り込むことです。プロンプトインジェクションは、そのための特定の手法です。攻撃者がユーザー入力や外部コンテンツの中に自分の指示を隠し、モデルが元々のガードレールではなく、その隠された指示に従うように仕向けます。
ChatGPT、Claude、Geminiのような大規模言語モデル(LLM)が、箱の中のチャットボットであることをやめ、「自律エージェント」としてお金を動かしたり、メールを読んだり、設定を変更したりするようになると、その危険性は増大します。モデルが銀行の内部ツール、人事システム、開発パイプラインなどに接続されている場合、プロンプトインジェクションが成功すると、単なる恥ずかしい回答では済まず、データ侵害や不正行為のインシデントになりかねません。
すでにいくつかのプロンプトインジェクション手法が登場しています。たとえば、研究者たちは、Redditに埋め込み指示を投稿することで、エージェント型ブラウザにユーザーの銀行口座を空にさせる可能性があることを発見しました。また、攻撃者は特別に作り込んだ怪しいドキュメントを使ってAIを汚染することもできます。さらには、一見無害な画像でさえ武器化され、プロンプトインジェクション攻撃に利用される可能性があります。
プロンプトインジェクションをSQLインジェクションと比較すべきでない理由
プロンプトインジェクションを「AI版SQLインジェクション」と位置づけたくなるのは理解できます。どちらも、本来は安全であるはずのものに有害な指示を紛れ込ませるインジェクション攻撃だからです。しかしNCSCは、この比較によって、同様の一発解決策がすぐに見つかるとチームが思い込んでしまうなら、それは危険だと強調しています。
SQLインジェクション攻撃との比較だけでも、私には十分不安を感じさせるものでした。最初に文書化されたSQLインジェクションの悪用は、サイバーセキュリティ研究者Jeff Forristalによる1998年のもので、27年経った今でも依然として目にすることがあります。
SQLインジェクションが対処可能になったのは、開発者がコマンドと信頼できない入力の間に明確な境界線を引き、その境界をライブラリやフレームワークで強制できたからです。しかしLLMでは、その境界線はモデル内部には存在しません。あらゆるトークンが、命令として解釈されうる対象なのです。これが、NCSCがプロンプトインジェクションは完全には軽減されず、より多くのシステムがLLMを機密性の高いバックエンドに接続するにつれて、一連のデータ侵害を引き起こす可能性があると考える理由です。
これは、私たちがAIモデルの設計を間違えたという意味なのでしょうか?おそらくそうかもしれません。LLMの内部では、データと命令の区別は行われていません。これまでのテキストから、最もありそうな次のトークンを予測しているだけです。このことは、「混乱した代理人攻撃(confused deputy attack)」につながる可能性があります。
NCSCは、より多くの組織が、プロンプトインジェクションを最初から考慮せずに既存アプリケーションに生成AIを後付けしていくにつれ、10〜15年前にSQLインジェクションが引き金となって発生した侵害に似たインシデントが急増する恐れがあると警告しています。しかも、現時点ではどのような形で失敗が起こりうるのか未踏の領域であるため、状況はさらに悪化する可能性もあります。
ユーザーにできることは?
NCSCは、開発者向けにプロンプトインジェクションのリスクを減らすためのアドバイスを提供しています。しかし、ユーザーとして私たちはどうやって安全を確保できるのでしょうか?
- AIエージェントが提供する助言は、鵜呑みにせず、話半分に受け止めてください。特に重要な内容については、必ず裏取りをしましょう。
- エージェント型ブラウザやその他のエージェントに与える権限を制限してください。高額な金融取引を任せたり、ファイルの削除を許可したりしないでください。開発者がDドライブ全体を削除されてしまったという事例から教訓を得てください。
- AIアシスタントを接続するデータやシステムは、本当に必要な最小限にとどめ、失われると壊滅的な影響が出るようなものは、その管理下に置かないでください。
- AI駆動のワークフローは、他の公開された攻撃面と同様に扱い、異常な挙動を検知・調査できるよう、やり取りをログに記録してください。