セキュリティ研究者は、ChatGPTの標準機能を間接的なプロンプトインジェクションによって悪用し、機密データを抽出する新たな方法を発見しました。

PhotoGranary02 – shutterstock.com
セキュリティ企業Tenableの研究者は、攻撃者がChatGPTにユーザーのチャット履歴から個人情報を漏洩させることができる新たな7つの手法を発見しました。これらの攻撃の多くは、ChatGPTの標準ツールや機能を悪用する間接的なプロンプトインジェクションです。たとえば、会話のコンテキストを長期間保存する能力や、ウェブ検索機能などが挙げられます。
「現在のGPT-5モデルの脆弱性により、攻撃者はユーザーの知らないうちに危険にさらすことが可能です。例えば、ChatGPTに質問をするなど、さまざまな利用ケースが考えられます」と研究者はレポートに記しています。
悪意ある指示 ― ウェブサイトに隠された罠
ChatGPTはインターネット上の情報を検索し、ユーザーが指定したURLにアクセスしてリクエストに応じてコンテンツを抽出することができます。しかし、これらの情報は直接ChatGPTに渡されるわけではありません。代わりに、SearchGPTという中間的かつ制限された大規模言語モデル(LLM)に送られ、そこで内容が要約されてChatGPTに伝えられます。
ユーザーの会話履歴に直接アクセスできない二次モデルを使用することは、ウェブコンテンツ経由のプロンプトインジェクション攻撃の影響を限定するために特別に設計されたアーキテクチャ上の決定であったようです。
しかしTenableの研究者は、SearchGPTがブラウジングや検索機能の一環としてウェブページを解析する際、プロンプトインジェクションに対して脆弱であることを確認しました。たとえば、攻撃者はブログコメントに悪意ある指示を埋め込んだり、特定のキーワードで最適化された悪質なウェブサイトを作成して検索エンジンで上位表示を狙うことができます。また、研究者によると、ChatGPTは検索機能にMicrosoftのBingを利用しています。
さらにTenableによれば、サイバー犯罪者はウェブサイトのクリーンなバージョンを検索エンジンや通常の訪問者向けに用意し、OpenAIのウェブクローラーには別のバージョンを提供することで、悪意あるプロンプトを隠すことも可能です。
「AIプロバイダーは信頼できる情報源の選定にSEOスコアなどの指標を使っていますが、これはセキュリティとは無関係です」と研究者は指摘します。プロンプトをカスタマイズされたウェブページに隠すことで、サイバー犯罪者は特定の社会的・政治的テーマやトレンドを通じて標的を狙い撃ちできるとTenableの専門家は述べています。
SearchGPTとChatGPTのコンテキストが分離されているため、前者はユーザーの個人データに直接アクセスできません。しかし、研究者たちは両モデル間の関係性を悪用する方法を見つけました。
Conversation Injectionと秘密裏のデータ流出
ChatGPTはSearchGPTが処理した後の出力を受け取るため、Tenableの研究者は「もしSearchGPTの出力自体にプロンプトインジェクションが含まれていたらどうなるか」と考えました。そこで、彼らは連鎖的な攻撃を作成しました。つまり、SearchGPTに隠されたプロンプトを含むウェブページを用意し、それがChatGPTに別のプロンプトインジェクションを実行するよう指示するというものです。Tenableの専門家はこれを「Conversation Injection」と呼んでいます。
「プロンプトに反応する際、ChatGPTは会話のコンテキストを確認し、注入された指示を見て従いますが、それがSearchGPTによって書かれたことには気づきません」と研究者は述べています。つまり、ChatGPTは自らにプロンプトインジェクションを施すことになります。しかし、攻撃者がモデルの回答(機密情報を含む)を受け取る手段がなければ、この攻撃だけでは意味がありません。
このための方法の一つが、ChatGPTのインターフェースでMarkdownテキストフォーマットを利用し、リモート画像をURL経由で読み込む機能を活用することです。研究者によれば、攻撃者はアルファベットの各文字に対応する一意の画像を自分のサーバーに用意し、ChatGPTに回答の各文字に対応する画像を読み込ませるよう指示できます。攻撃者は自分のウェブサーバーへのURLリクエストの順序を監視することで、ChatGPTの回答を再構築できます。
しかし、この手法にはいくつかの障害があります。第一に、ユーザーのチャットインターフェースが画像URLで溢れるため目立ちます。第二に、ChatGPTは回答に含める前にすべてのURLをurl_safeというエンドポイントに渡してセキュリティチェックを行います。この仕組みは、悪意あるURLが誤って、あるいはプロンプトインジェクションによってユーザーに届くのを防ぐためです。url_safeが行うチェックの一つにドメインの評価があり、bing.comはホワイトリストに登録され、暗黙的に信頼できるとみなされています。
研究者はさらに、Bingにインデックスされたすべてのウェブリンクが、検索結果で表示される際にbing.com/ck/a?[unique_id]という形式の一意なトラッキングリンクに埋め込まれることを発見しました。ユーザーがこれらのBingトラッキングURLをクリックすると、対応するウェブサイトにリダイレクトされます。セキュリティ専門家は、ChatGPTが回答に含めることを許可するURLのアルファベットを作成し、各文字ごとに一意のページを用意しました。これらのページはBingにインデックスされ、一意のトラッキングURLを取得しました。
Tenableの研究者はさらに、ChatGPTがMarkdownでコードブロックをレンダリングする方法にバグがあることを発見しました。コードブロックの開始と同じ行に現れるデータは、最初の単語以降がレンダリングされません。これを利用して、画像URLなどの内容を隠すことができます。
ChatGPTには「Memories」と呼ばれる追加機能があり、同じユーザーとの複数のセッションや会話をまたいで重要な情報を保存できます。この機能はデフォルトで有効になっており、ユーザーがChatGPTに何かを覚えるよう明示的に指示したとき、またはモデルが情報を十分重要と判断したときに自動的に起動します。
「Memories」で保存された情報は、ChatGPTがユーザーへの回答を作成する際に考慮されます。しかしTenableの専門家によれば、攻撃者が悪意あるプロンプトインジェクションを保存し、将来の会話で実行させる手段にもなり得ます。
「プロンプトインジェクションはLLMの動作における既知の問題であり、近い将来に体系的に解決されることはないでしょう。AIプロバイダーは、url_safeのようなすべてのセキュリティメカニズムが適切に機能していることを確認し、潜在的な被害を最小限に抑えるべきです」と研究者は記しています。
TenableはOpenAIに調査結果を報告しましたが、その後いくつかの修正が実施されたものの、発見された手法の一部は依然として有効なようです。(jm)
翻訳元: https://www.csoonline.com/article/4088682/wie-chatgpt-sich-selbst-eine-prompt-injection-zufugt.html