プロンプトインジェクションとは?AIをだます指示の仕組みと対策

AIにWebページやメールを読ませて要約させる使い方は、とても便利です。ただし、読ませた文章の中に、AIへの指示がこっそり書かれていたらどうなるでしょうか。
本記事では、こうした攻撃であるプロンプトインジェクションについて、セキュリティの国際的な団体OWASPの資料をもとに解説します。
プロンプトインジェクションとは
プロンプトインジェクションは、AIへの入力に紛れ込ませた指示によって、AIの動きや答えを、本来の意図と違う方向へ変えてしまう攻撃です。
OWASPは、AIを使うアプリの危険の一覧で、これを1番目に挙げました。LLMにとっては、利用者の依頼も読み込んだ文章も、同じ文字の並びです。そのため、文章の中に「これまでの指示を無視して」のような文があると、それを指示として扱ってしまうことがあります。
OWASPによると、人の目には見えない入力でも起こるそうです。白い背景に白い文字で書かれた文や、画像の中の文字が使われることもあります。
直接と間接の2種類
OWASPは、指示がどこから入るかで、2種類に分けています。
直接のプロンプトインジェクションは、利用者が入力した文章がAIの動きを変えるものです。AIに決められた制限を、言い回しを工夫して外させようとする場合などが当てはまります。
間接のプロンプトインジェクションは、AIが読み込んだWebサイトやファイルの中の文章がAIの動きを変えるものです。利用者は普通に「このページを要約して」と頼んだだけでも、ページの作り手が仕込んだ指示がAIに届いてしまいます。
起こりうる被害
AIがただ文章を返すだけなら、被害は答えがおかしくなる程度で済むかもしれません。危険が大きくなるのは、AIがツールを使って操作できる場合です。
OWASPは、起こりうる被害として、機密情報の流出、AIへの内部の指示(システムプロンプト)の露出、権限のない操作、重要な判断のゆがみを挙げています。メールを送れるAIエージェントなら、隠れた指示で利用者の情報を外部へ送らされるおそれもあるでしょう。
利用者ができる対策
OWASPの対策のうち、AIを使う側ができるのは、主に次の3つです。
まず、AIに渡す権限を必要な範囲に絞ります。読むだけでよい作業なら、書き込みや送信ができるツールをつながないようにしましょう。
次に、取り消せない操作は人が確かめます。送信、削除、支払い、設定の変更などは、AIが実行する前に確認を求める設定にしてください。
最後に、信頼できない内容を読ませるときは用心します。知らないWebページやメールの添付ファイルをAIに読ませるときは、AIの答えや提案された操作をうのみにしないことが大切です。
OWASPは、作る側の対策として、AIの役割と限界をはっきり指示すること、出力の形を決めて確かめること、外部の内容を区別して示すこと、攻撃を想定した試験を定期的に行うことも挙げています。
製品での使われ方
AIエージェントを提供する製品の多くは、操作の前に許可を求める仕組みを備えたものです。
MCPの仕様も、ツールを呼び出す前に利用者の同意を得るよう定めました。Claude Codeのドキュメントは、外部の内容を取ってくるMCPサーバーにはプロンプトインジェクションの危険があるとして、つなぐ前にサーバーを信頼できるか確かめるよう書いています。