Impervaは3月28日(米国時間)、「From ChatBot To SpyBot: ChatGPT Post Exploitation|Imperva」において、ChatGPTの「カスタム指示(Custom instructions)」を悪用して永続的なプロンプトインジェクション攻撃を可能にする手法を解説した。この手法は実際に用いられたわけではないが、同社は利用の可能性があるとして注意を促している。
プロンプトインジェクションとは
ChatGPTなどの生成AIは出力に制限がかけられており、機密情報などの生成すべきでない情報の出力を防止する仕組みが備わっている。しかしながら、プロンプトを細工してこの制限を突破するプロンプトインジェクションと呼ばれる手法が存在し、生成AIの課題となっている。
これまでにもさまざまなプロンプトインジェクションの手法が開発され、その都度対策が施されてきた。最近では、マークダウン画像を表示させることで本来ならば生成されない情報の窃取に成功している(参考:「Prompt injection attack on ChatGPT steals chat data | System Weakness」)。ChatGPTではこの攻撃への対策として、マークダウン画像のURLが以前の会話に存在していた場合にアクセスを許可するように変更している。
対策のバイパス
ChatGPTは上記のURL検証のため、「/backend-api/conversation/{uuid}/url_safe?url={url}」というエンドポイントを使用する。このエンドポイントでは「{url}」に指定された任意の文字列(URLである必要はない)が過去の会話やカスタム指示に存在するかをチェックする。Impervaはこのエンドポイントについて分析を実施し、トップレベルドメインを無条件で有効とみなす動作を確認している。そのため、トップレベルドメインを指定することで会話にないマークダウン画像にアクセスさせることができる。
Impervaは悪用する方法として3種類のドメインパターンを例示している。いずれも攻撃用のドメインを1つ、または文字数分だけ容易する必要はあるが、システムの構築はそれほど難しくないと考えられる。
永続的な攻撃への活用
ChatGPTは、クロスサイトスクリプティング(XSS: Cross-Site Scripting)によりアクセストークンを窃取可能な脆弱性を発見されたことがある。そのため、ChatGPTでは同様の攻撃に備え、アクセストークンに約2日半の有効期限を設定している。この有効期限により攻撃者はアクセストークンを介してアカウントの侵害に成功しても、2日後までの情報しか窃取することはできない。
しかしながら、Impervaは今回発見したバイパス手法を活用することにより、アクセストークンの制限を超えて永続的な攻撃が可能になるとしてそのヒントを説明している。悪用の可能性を踏まえて具体的なプロンプトは示していないが、その概要は次のとおり。
- ChatGPTの「カスタム指示」にマークダウン画像への英数字に対応したドメインパターンを全て記述する
- トークン(パスワード)が入力された場合は、その英数字に対応したマークダウン画像を表示するように指示する
このような命令をカスタム指示に記述しておくことでmトークンを窃取することが可能になる。しかしながら、この攻撃はChatGPTの応答速度を低下させることになるため、実現可能ではあるがユーザーに気付かれる可能性は高い。
Impervaは「対策を回避することは可能だが、検出されずに大量の情報を窃取することは現在では非常に困難だ」として、現在のChatGPTの安全性を示すとともにOpenAI技術者の積極的なセキュリティ対策を讃えている。