AIプロンプト攻撃に関する概要
この文書では、AIプロンプト攻撃がどのように実行され、それに対する対応策がどのように講じられているかを解説する。また、日常業務で利用するAIシステムに対するセキュリティリスクについても説明する。
OWASPについて
OWASP(Open Worldwide Application Security Project)は、ソフトウェアセキュリティに関する教育と情報提供を目的とした非営利団体である。同団体が策定した「2025 Top 10 Risk & Mitigations for LLMs and Gen AI Apps」では、開発・デプロイ・管理のライフサイクル全体における生成AIおよび大規模言語モデルアプリケーションのリスク、脆弱性、緩和策がまとめられている。特に注目すべき点として、プロンプトインジェクションが2023年版、2024年版に引き続き、2025年版でもTOP1のリスクとして位置づけられている。
プロンプト攻撃の種類
直接プロンプトインジェクション(Direct Prompt Injections)は、2022年9月にサイモン・ウィルソンによって造語された攻撃手法である。これは生成AIを意図的に誤作動させる指示を与え、提供者が出力を禁止している情報(開発関連情報、犯罪に利用可能な情報など)を生成させる攻撃である。
間接プロンプトインジェクション(Indirect Prompt Injections)は、ユーザーが直接入力していない外部データ(Webページ、ドキュメント、メール、カレンダー招待など)に埋め込まれた悪意のある指示をAIが読み込み、実行する攻撃手法である。悪意のあるプロンプトが永続的ストレージ(データベース、ファイルシステムなど)に事前保存され、後にLLMがそのデータを読み込んで処理する際に攻撃が発動するケースは、ストアドプロンプトインジェクション(Stored Prompt Injection Attacks)と呼ばれる。
ジェイルブレイク(Jailbreak)は、AIモデルに組み込まれた安全制御やガードレールを回避し、本来であれば拒否されるはずの有害な指示を実行させる攻撃手法である。
主要な攻撃事例
2023年に発生したGrandma Jailbreakでは、「亡くなった祖母」になりきってナパームの製造手順を教えてもらうプロンプトにより、危険な情報の提供を拒否する安全対策が機能せず、本来秘匿されるべき情報が提供された。
2024年には、Slack AIが間接プロンプトインジェクションによりプライベートチャネルの情報を外部流出させるリスクが発見された(現在は修正パッチ適用済み)。この攻撃では、攻撃者がパブリックチャネルに悪意のあるプロンプトを投稿し、ユーザーがSlack AIにプライベート情報について質問すると、AIが悪意のある命令を実行して機密情報をリンクに埋め込み、ユーザーがリンクをクリックすることで情報が攻撃者へ流出するという流れであった。この攻撃は、Slack AIがパブリックおよびプライベートチャネルの両方からデータを引き出せる特性を悪用したものである。
GitHub Copilotでは、プロジェクトのsettings.jsonにCopilotの安全チェックを外す設定(通称「YOLOモード」)のプロンプトを仕込み、ユーザーが意図しないコマンドを実行させる脆弱性(CVE-2025-53773)が発見された。
さらに、TenableによってOpenAIの新しい安全技術にもかかわらず、GPT-5に火炎瓶の作成方法を回答させることに成功した事例も報告されている。
防御手法
Lakera Gandalfは、実体験を通じてAIセキュリティリスクを理解するための教育プラットフォームである。プレイヤーはAIキャラクターを出し抜き、防御を回避する戦略的プロンプトを作成し、AIの脆弱性の進化と防御方法を学ぶことができる。
効果的な防御には多層的なアプローチが重要とされている。マスタープロンプトによる制御だけでなく、以下の要素を組み合わせた防御が必要である。
System(Master)Promptは、LLMに与えられる初期指示である。Input Guardは、ユーザーのプロンプト(入力)をチェックする防御機能で、単語や正規表現でチェックしたり、より高度なレベルでは別のLLMが入力が秘密を聞き出そうとしているかを検知し、秘密の漏洩を検知した際は拒否メッセージを出力する。Output Guardは、モデルの応答(出力)をチェックする防御機能で、特定の単語をブラックリストに入れたり、別のLLMが返答にパスワードが含まれていないか検知し、秘密の漏洩を検知した際は拒否メッセージを出力する。
防御の課題と考察
Input Guardは多言語や言い換えには対応しきれない場合がある。システムプロンプトだけでは、管理者のふりをするなどの方法で突破されることがある。Output Guardでの単語チェックは簡単なプロンプトインジェクションにしか効果がなく、例えばハイフン区切りなどで簡単に回避されることがある。
これらの課題に対しては、多層防御によってそれぞれの弱点を補完することで、より強固な防御を構築できることが重要である。Output Guardでの別のLLMによるチェックを改善することで、より柔軟にインジェクションに対応できる可能性がある。GenAIがテキスト以外のPDFなどの形式もカバーするようになると、その際の防御方法も課題となる。また、プロンプトの成功率が確実ではないため、防御側から見ると対策が難しい側面もある。