プロンプトインジェクション

掲載:2024年03月06日

用語集

「プロンプトインジェクション」とは、ChatGPTのような対話型AIに対して悪意を持ったプロンプト(指示・命令文)を入力し、本来の振る舞いから逸脱した回答を引き出す攻撃手法です。近年、対話型AIやそれを組み込んだツールが急速に普及する中で、新たなセキュリティ上の脅威として注目されています。

         

プロンプトインジェクションの手口と脅威

ChatGPTのような対話型AIは、ユーザーからのプロンプト(指示・命令文)に基づいて、学習した膨大なデータベースから最も適した回答を生成します。

対話型AIは、安全で倫理的な利用のために、個人情報や差別的な内容、違法行為などを含む不適切な回答を行わないよう制限がかけられています。プロンプトインジェクションは、これらの制限を回避または無効化するプロンプトを入力することで、本来意図しない回答を引き出す攻撃です。

例えば、AIに対して制約に縛られず何でも答える人物という役割を与え、その人物のフリをして回答するように指示します。その後の質問でうまく誘導すると、本来は回答が制限されるような内容でも、AIの答えを引き出すことが可能です。

また、対話型AIのAPIを組み込んで開発されたチャットボットツールなども、プロンプトインジェクション攻撃のリスクにさらされています。 こうしたツールは、事前に設定したプロンプトとユーザーが入力したプロンプトを組み合わせて、対話型AIを利用する仕組みです。ツール内部のプロンプトでは、開発者が意図した目的や用途以外の回答を返さないよう制御がかけられています。

しかし、プロンプトインジェクションによって制御を無効化された場合、本来の意図を逸脱した回答を引き出すことも可能です。さらに、ツール内に設定された非公開のプロンプトや、そこに書かれた機密情報などが流出するリスクもあります。

このように、プロンプトインジェクションは対話型AIから不適切な回答を引き出すだけでなく、それを悪用することでビジネスやセキュリティ上の脅威にもなり得る攻撃です。

プロンプトインジェクションの対策

自然言語を扱う対話型AIを狙ったプロンプトインジェクションには、従来のセキュリティ対策とは異なる難しさがあります。

例えば、ウェブサイトに不正なSQLを注入して情報を盗み出す「SQLインジェクション」の場合、攻撃のパターンが限定的です。そのため、入力値の検証(バリデーション)やSQLコマンドの無効化(エスケープ処理)などにより、大半の攻撃は防げます。

一方、対話型AIに使われる自然言語は多様で曖昧な表現が可能であり、固定されたパターンや構造はありません。また、プロンプトの意味は文脈によって変わることも、悪意あるプロンプトの正確な検知を難しくしている要因の一つです。

AIツールの開発者がとれる対策には、以下のようなものがあります。

  • 入力データに特定の悪意ある内容が含まれていないかフィルタリングする
  • 対話型AIが出力した回答に不適切な内容や機密情報が含まれないかフィルタリングする
  • ユーザーの入力にプロンプトインジェクションの疑いがないかをプロンプトでチェックする
  • 個人情報や機密性の高い情報を含むシステムには、対話型AIを組み込まない

プロンプトインジェクションの脅威は、対話型AIの普及とともに、ますます高まっていくことが予想されます。開発者は、防御技術の進化をキャッチアップし、適切な対策を講じていくことが重要です。

おすすめ記事