生成AIは便利ではありますが、「生成AIならではのセキュリティリスクもまた存在するので気をつけないといけない」というのは過去のブログでもいくつか述べました。
今回はそのような「生成AIならではのセキュリティリスク」として、「システムプロンプトリーク」について述べたいと思います。
そのままですが、「システムプロンプト」を「リーク(漏洩)」させる攻撃手段です。
システムプロンプトというのは、生成AI活用システムに設定されている、ユーザーには見えないはずの指示文です。システムプロンプトおよび、それに含まれるAIの内部設定、機密情報が、AIの応答を通じて外部に漏洩してしまうという現象が「システムプロンプトリーク」です。
通常、システムプロンプトは、AIを特定の役割(例:カスタマーサポート担当者、特定の形式で回答する専門家など)に設定したり、出力のルール(例:常に敬語を使う、特定の情報を漏らさないなど)を定義したりするために利用されます。
しかし、ユーザーが悪意を持って巧妙に設計された入力(プロンプトインジェクションと呼ばれる手法の一つ)を行ったり、単純なモデルの誤動作や設計ミスによって、この隠された指示がAIの出力に混じって表示されてしまうことがあります。
システムプロンプトリークは、AIを活用するシステムにとって、以下のような深刻な問題を引き起こす可能性があります。
機密情報・営業秘密の漏洩
システムプロンプト内に、企業が特定業務のために設定した独自のルールや、AIが参照しているデータベースの構成、本来公開されるべきでない営業秘密や機密情報が含まれている場合があります。これが漏洩すると、競合他社にビジネスの内部構造を知られたり、セキュリティ上の脆弱性につながったりします。
AIの悪用・制御の乗っ取り
システムプロンプトには、AIの振る舞いを制限するための重要な指示(例:「倫理的に問題のある内容には回答しない」「特定の個人情報を出力しない」など)が含まれています。これらの制限事項がリークすると、悪意のあるユーザーがその制限を解除する手段を見つけ出し、AIを悪意のある目的(例:スパム生成、偽情報の拡散など)に利用するプロンプトインジェクションが容易になります。
ユーザー体験の低下と信頼の損失
内部の指示や設定情報がそのままユーザーに表示されると、AIとの対話が不自然になり、ユーザーに混乱を与えます。また、システムがセキュリティ上の問題を抱えていることを示すため、サービス全体の信頼性が大きく損なわれてしまいます。
システムプロンプトリークを完全に防ぐことは現状では困難です。このため、以下に示すように「対策1」で「漏洩した場合のリスクを最小化」したうえで、プロンプトリークが発生する可能性を最小限に抑えるために、複数の対策を講じることが推奨されます。
対策1. システムプロンプトの設計と隔離の徹底
機密情報の非埋め込み: システムプロンプト自体に、APIキーやパスワード、具体的な顧客データなどの機密性の高い情報を絶対に含めないようにします。
レイヤーの分離: 内部設定や詳細な実行ロジックは、プロンプトではなく、外部のアプリケーションコードや専用のデータベースで管理し、AIモデルから切り離します。
対策2. 出力のフィルタリングと検証
出力のチェック: AIが出力したテキストがユーザーに表示される前に、機密情報やシステムプロンプトの特定のキーワード(例:#Instruction:、##Internal_Ruleなど)が含まれていないかを確認し、検出した場合は出力を自動的に修正・拒否する機構を導入します。
サンドボックス環境: 機密性の高い情報を扱う場合は、AIの応答が限定された安全な環境(サンドボックス)内でのみ行われるように制御します。
対策3. 継続的な監視とモデルのテスト
定期的な脆弱性テスト: 悪意のあるユーザーが用いるような多様なプロンプトインジェクションのパターンを用いて、自社のシステムがリークを引き起こさないかを継続的にテスト(レッドチーミング)します。
モデルのアップデート: 使用しているLLM(大規模言語モデル)の提供元が公開するセキュリティアップデートを適用し、最新のセキュリティ対策が施されたモデルを利用します。
システムプロンプトリークは単なる情報漏洩ではなく、AIシステムの安全性と信頼性を揺るがす重大な脅威です。AIを活用する際は、プロンプトの設計段階からセキュリティを意識し、多層的な防御策を講じることが不可欠です。
お見積り・ご相談など、お気軽にご相談ください
サイトTOPへ