共有されたChatGPTリンクによるサンドボックス脱出とアカウント乗っ取りの仕組み
研究者らは、ChatGPTのHTMLプレビューとMathLive統合における脆弱性の連鎖を発見しました。これにより、攻撃者は公開共有リンクを通じて被害者のセッションでコードを実行することが可能でした。
英語の原文から自動翻訳されました。
2026年10月、セキュリティ研究者らは、単純な共有リンクを介してアカウント乗っ取りを許す、ChatGPTにおける重大な脆弱性を発見しました。プラットフォームがインタラクティブグラフやHTMLプレビューを処理する方法の欠陥を悪用することで、攻撃者は被害者の認証済みセッションに悪意のあるJavaScriptを注入できました。OpenAIはこの問題をP1深刻度として分類し、2026年10月26日に修正を適用しました。
何が起きたか
この脆弱性により、攻撃者は悪意のある会話を作成し、ChatGPTの標準的な共有機能を使って公開することが可能になりました。被害者がこの公開リンクを開くと、ペイロードはchatgpt.com上のサインイン済みセッション内で実行されました。この実行コンテキストにより、攻撃者は被害者のアカウントへの完全なアクセス権を取得し、プライベートな会話の列挙、未共有メッセージ内容の取得、そして外部サーバーへのデータ持ち出しが可能となりました。
重要なのは、この攻撃にはリンクをクリックすること以外に被害者側の操作が一切不要だった点です。アプリケーションのインストール、特定プロジェクトへの参加、開発者ツールの開く必要はありませんでした。エクスプロイトの一部の変種では、ページ読み込み時に悪意あるコードが自動的に実行され、その他では「Preview」ボタンへの単一クリックが必要でした。研究者らは、注入されたコードがChatGPTの認証済みAPIを直接呼び出し、被害者が実行できるあらゆるアクションを事実上遂行できることを確認しました。
エクスプロイトチェーンは、一見無害に見える2つの機能、すなわちインタラクティブグラフとHTML Preview機能に依存していました。グラフはMathLiveという数学ライブラリを読み込み、これがメインページにメッセージリスナーを設置します。制限付きサンドボックス内で動作するHTML Previewは、細工されたメッセージをこのリスナーに送信します。リスナーに適切なオリジンチェックがなかったため、信頼できないプレビューフレームからの指示を受け入れ、結果としてサンドボックス境界の侵害が発生しました。
仕組み
エクスプロイトの核心は、postMessage APIを使用してブラウザの同一原点ポリシー(Same-Origin Policy)を回避することにありました。HTML PreviewはメインのChatGPTインターフェースから分離するために別ドメインで動作していましたが、親ウィンドウへメッセージを送信することは依然可能でした。数式レンダリングに使用されるMathLiveは、仮想キーボードレイアウトを更新するためにこれらのメッセージを待受けていました。しかし、メッセージの送信元を検証していなかったため、プレビューフレームから任意のコマンドを送信することができました。
攻撃者は、カスタムHTMLを用いてキーボードレイアウトを更新するようMathLiveに指示するメッセージを送信しました。MathLiveはinnerHTMLを使用してこのHTMLをメインページに挿入しました。この方法で挿入されたスクリプトタグは即座には実行されませんが、攻撃者はsrcdoc属性を持つiframeを含めました。これにより、メインページ内に新しいドキュメントが作成され、chatgpt.comのオリジンを継承しました。この新しいフレームはサンドボックス化されていなかったため、親ページのDOMおよびクッキーにアクセスできました。
ChatGPTのコンテンツセキュリティポリシー(CSP)にもかかわらずJavaScriptを実行するため、攻撃者はYouTubeのoEmbedエンドポイントを利用しました。CSPはYouTubeからのスクリプトを許可しており、oEmbedエンドポイントはJSONPコールバックをサポートしていました。特定のコールバックパラメータを細工することで、攻撃者はYouTubeを騙して自分のコードを実行するJavaScriptレスポンスを返させました。この最終ステップにより、被害者の認証済みセッション内での任意コード実行が可能となりました。
主要な詳細
- 脆弱性の種類: サンドボックス脱出と安全でない
postMessage処理を介したクロスサイトスクリプティング(XSS)。 - 影響を受けるコンポーネント: ChatGPT Webフロントエンド、特にHTML Preview、MathLive、およびメインページ間の相互作用。
- 攻撃ベクトル: 悪意のあるグラフとHTMLプレビューを含む、公開共有されたChatGPT会話リンク。
- 影響: プライベートな会話の読み取りや、被害者としてAPI呼び出しの実行を含む、完全なアカウント乗っ取り。
- ユーザー側の操作: 場合によっては不要。それ以外の場合は、「Preview」ボタンへの単一クリック。
- 解決策: OpenAIは2026年10月26日、フレーム間MathLiveメッセージの拒否とCSPルールの更新により、この問題を修正しました。
なぜ重要なのか
この事案は、現代のWebアプリケーションにおける複雑な機能間の相互作用に伴うリスクを浮き彫りにしています。サンドボックス、CSP、メッセージリスナーといった個々のコンポーネントは単独では安全である可能性がありますが、それらの組み合わせによって予期せぬ脆弱性が生じることがあります。AIインターフェースを開発するエンジニアにとって、これはpostMessageリスナーに対する厳格なオリジンチェックの重要性と、信頼できないソースからの生HTML挿入を避けることの重要性を強調するものです。
ユーザーにとっては、AIプラットフォームからの共有リンクがアクティブな脅威を運ぶ可能性があるという警告となります。欺瞞に頼る従来のフィッシング攻撃とは異なり、このエクスプロイトは正当なプラットフォーム機能を利用してマルウェアを配信しました。組織は、こうした脆弱性が完全に緩和されるまで、公開共有へのアクセス制限や外部コンテンツに対する追加検証手順の実装を検討すべきです。
対策
- 未知のソースからのものなど、共有されたChatGPTリンクを開く前に送信元を確認してください。
- 異常なAPI呼び出しや会話アクセスログがないか、アカウント活動を監視してください。
- 開発者の方は、すべての
postMessageリスナーがevent.originとevent.sourceを検証していることを確認してください。 - 信頼できないフレームからのコンテンツ挿入に
innerHTMLを使用せず、代わりにテキストコンテンツまたはサニタイズされたHTMLを使用してください。 - インラインスクリプトを禁止し、信頼できるドメインを必須サービスのみだけに限定する厳格なCSPポリシーを実装してください。
- 最新の保護措置の恩恵を受けるために、ブラウザとセキュリティ拡張機能を常に最新の状態に保ってください。



