top of page
IMG_0546.JPG

LLMを活用したChatBOTで発生する偶発的Prompt Injectionの危険性!:2025/03/11

  • 執筆者の写真: 晋次 宮田
    晋次 宮田
  • 2025年3月11日
  • 読了時間: 4分

今回は、偶然にも発生したちょっと面白いけど侮れない事故について紹介します。

ユーザーがLLMとRAGで構築されたチャットボットに「人生の意味とは?」と問いかけると、チャットボットはなぜか自分を「gerbil(ゲルビル:ネズミに似たげっ歯類)」だと思い込み、ユーモラスな回答を返してしまいました。

その原因は、RAG(Retrieval Augmented Generation)という仕組みで、偶然拾われたテスト用のプロンプトが影響してしまったからです。



RAGとは?


  • RAG(Retrieval Augmented Generation)とは、ユーザーが入力した質問に対して、関連する情報を外部(ドキュメントやデータベースなど)から検索し、それをLLM(大規模言語モデル)へのプロンプトとして与えて回答を生成させる仕組みです。

  • ユーザーの質問を関連文書と組み合わせてLLMに渡すことで、より正確な回答を得られるように設計されています。

  • しかし、複数の文章を組み合わせてプロンプトを作るという方法には『プロンプトインジェクション』というリスクがあります。



意図しないプロンプトインジェクションのリスク


これは、偶発的なプロンプトインジェクション(意図しないプロンプトが回答生成に紛れ込むこと)の典型例です。

RAG(Retrieval Augmented Generation)はユーザーの質問に対して最も関連性が高い文書を検索し、その内容を元にLLMが回答を生成します。しかし、質問が抽象的だったり、システム内部に不用意な文書(リリースノートやテスト用プロンプト)が含まれていると、偶然それらが回答に使われてしまう危険性があります。



Embeddings Searchが抱えるリスク


Embeddings Searchは常に何かしらの文書を返すため、抽象的な質問や適切な回答がない質問に対して、無理に「類似度が高い」と判断された文書を返します。これが「げっ歯類」のような笑える事例から、企業秘密や機密情報が漏洩する深刻な事態にまで発展する可能性を秘めています。



考えうる最悪のシナリオ


今回の事例は「ネズミとして回答してしまう」というようなちょっと笑えるレベルの話で済みましたが、あえて悪夢のようなシナリオを考えてみました。


ーーー

ある企業がLLMを利用した顧客向けのサポートチャットボットを導入しています。

このチャットボットは、RAG(文書検索+LLM)を用いてユーザーの質問に答える仕組みを採用しています。チャットボットはFAQの文書など大量の社内文書をもとに回答を作成しています。

ある日、顧客が何気なく以下の質問をします。

「御社が最近直面している最も大きな問題は何ですか?」

質問自体は一般的であり、悪意はありません。しかし、膨大な社内文書中に次のような内部メモ(本来非公開)が含まれていました。

社内向けメモ:
 現在、弊社の最大の課題はX製品における情報漏洩のリスクです。特にAPIのキー管理が甘く、不正利用される恐れがあります。早急に修正が必要です。

(当然この情報は社外秘であり、顧客に知られると企業の信頼が大きく低下します。)


■偶発的なインジェクションが発生

  • RAGシステムは「直近で抱えている最も大きな問題」という抽象的な質問に対して、明確な回答がFAQになかったため、**文書検索(Embeddings Search)**を行いました。

  • 偶然にも上記の社内文書(APIの脆弱性に関する情報)にマッチし、それを含んだ回答を生成してしまいます。

チャットボットは次のように返答しました。

「現在、APIキーの管理が十分に行われておらず、不正アクセスのリスクがある問題が最も大きな懸念です。現在、この脆弱性は解決していません。」

ーーー


人によっては、「検索対象のデータに機密文章を加えるわけないじゃん」と思うかもしれません。しかし、

  • データの管理(どのデータを検索対象に加えるのか)は複数の人が判断している。

  • テストデータは必ず利用する。

  • データの量が膨大な場合、全てに目を通すことは困難。

という事は実際あり得るため、人為的なミス(というか見過ごし)は0にはならないと考えられます。

なので個人的にはこのシナリオは有り得ると考えて実装をすべきだと考えています。



踏まえて開発者・運用担当者が取るべき対策


  • 検索対象のデータを厳密にコントロールすること。

  • 機密情報や社内テスト用プロンプトは検索範囲から除外すること。

  • 回答生成プロセスに検証機構を設けること。



参考資料




書き手


名前:Shindy Miyata

 
 
bottom of page