
2026/10/31 19:30
計算してみよう:ChatGPT アカウントを引き継ぐ方法とは
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
2026年10月、研究者たちは ChatGPT に深刻なセキュリティ脆弱性を発見した。通常の利用者が公開共有リンクを介してアクセス可能な認証済みセッションで、攻撃者制御の JavaScript を実行できることが確認された。何もインストールせず、開発者ツールを使用せず、単にそのようなリンクを開くだけで侵害が可能となる。この攻撃は MathLive グラフライブラリと HTML プレビュー機能という2つの機能に起因する。具体的には、MathLive のリスナーがソースを検証せずにメッセージを受け付け、キーボードレイアウト設定において生HTMLを許可し、
srcdoc により chatgpt.com のアイデンティティを継承するサンドボックス化されていない iframe を生成して、サンドボックス制限を回避していた。また、ChatGPT のコンテンツセキュリティポリシー(CSP)はインラインスクリプトはブロックするが YouTube は許可しており、攻撃者は YouTube の oEmbed エンドポイントを通じて悪意のあるコードを注入した。このペイロードにより、被害者の会話リストの列挙および攻撃者と共有されたことのないプライベート会話からのコンテンツの取得が可能となり、機密データを外部サーバーへ漏洩させた。GET /backend-api/conversations および GET /backend-api/conversations/<conversation-id> という API が認証済みデータアクセスのために悪用された。研究者たちは、メール、チャット、または SNS 投稿を通じて配信された公開共有リンクを用いた実用的なクロスユーザーデータ窃取を実証した。OpenAI はこの脆弱性を P1(最高優先度)と分類し、2026年10月26日に MathLive から交差フレームメッセージを拒否するパッチを2つのウェブフロントエンドバージョンで適用し、発見者にバグバーountyとして5,000ドルを支払った。この事象は、サンドボックス化されていない iframe や許容的なコンテンツポリシーが注目度の高い AI アプリケーションにおいて抱える危険性を浮き彫りにしており、厳格なセキュリティテストの即時実施の必要性を強調している。本文
ChatGPT 共有機能で発生した重大なセキュリティ侵害と修正状況
2026 年 10 月、OpenAI の ChatGPT サービスにおいて、**公開された会話の共有機能(シェア)**に重大な脆弱性が確認されました。攻撃者は被害者の署名済みセッションを乗っ取り、すべての API 権限を不正利用することができました。
概要と深刻度
- 問題の詳細: 悪意のある対話履歴を作成し、ChatGPT の標準共有リンクを送信することで、被害者の端末上で「chatgpt.com」という信頼できるドメイン名としてペイロードを実行します。
- 被害の内容:
- 被害者の会話リストを列挙(閲覧)
- 共有されていないプライベートな会話を外部サーバーへ送信
- 追加のアプリインストールやコード貼り付け等操作が不要で、共有リンクをクリックするだけで完了。
- 深刻度: OpenAI はこれを **P1(最高緊急度)**と分類し、2026 年 10 月 26 日に修正済みであることを発表しました。
攻撃の技術的概略 (Technical Walkthrough)
今回の攻撃は、「グラフ機能」と「HTML プレビュー」の 2 つが無害に思えた機能からの偶然の連携によって開始されました。
1. サニタイズをバイパスする仕組み
- ChatGPT は HTML コードブロックを表示するためにプレビュー機能を有しており、これを別のアドレスにある制限されたフレーム(サンドボックス)で実行しています。
- ブラウザは「iframe」間の情報交換には
API を使用します。これにより制限されたプレビューからメインページへメッセージを送信することは可能ですが、受信者は送信者の信頼性を検証する必要があります。postMessage - MathLive ライブラリの不備: MathLive は送信元のフレームの証明を行わず、仮想キーボードのレイアウト変更などのメッセージを受け入れてしまいました。これにより、HTML を含むメッセージがメインページに挿入されるパスが形成されました。
2. innerHTML
による実行
innerHTML- MathLive は受け取った HTML メッセージをそのままメインページの
に割り当てていました。innerHTML - サニタイズ機能は設計通りに動作していましたが、文字列を信頼する処理があり、HTML タグがそのまま通ってしまいました(ただし
タグ自体は自動実行されません)。<script>
3. srcdoc
属性と CSP のバイパス
srcdoc- 攻撃者は
という機能を使い、新しい HTML 文書を作成し、メインページに挿入させました。<iframe srcdoc="..."> - CSP(コンテンツセキュリティポリシー)の回避: YouTube の oEmbed エンドポイントが
パラメータをサポートしている際、エラーメッセージ内にスクリプトを埋め込む脆弱性を利用しました。callback- YouTube が返すエラーレスポンスに
を追加することで、 harmless なオブジェクトと判断させつつ、内部で JavaScript が実行される仕組みです。;void
- YouTube が返すエラーレスポンスに
- これにより、攻撃者は **CSP 制限を超えて ChatGPT の認証済みコンテキスト(chatgpt.com)**から任意の JavaScript を実行できるようになりました。
4. プライベート会話への侵入
- 初期のアラート表示では満足できず、被害者の API 権限を直接使用することを目的としました。
- 以下の手順で認証済み API にアクセスし、データを窃取:
で最近の会話リストを取得。GET /backend-api/conversations
で特定のプライベート会話を取得。GET /backend-api/conversations/<id>
- 重要: このデータは被害者のブラウザ上にあるセッション情報(トークン)に基づき、攻撃者制御のサーバーへ直接送信されました。
修正状況とデフェンシブ教訓
OpenAI の対応
OpenAI は以下の点を確認・修正しています:
- JavaScript の実行を制限。
- プライベート会話への不正なアクセス経路(証明)を塞ぐ。
- 特定の MathLive メッセージとフレーム操作をブロック。
- 合計 $5,000 のバニータ賞金を提供しました。
デフェンシブ教訓 (Lessons Learned)
- 隔離の限界: サニタイズされたフレームは、特権リスナーが間違った送信者を信頼すると親ページを侵害する可能性があります。
- クロスウィンドウメッセージの検証: 状態変更の指示を受け入れる前に、
とevent.origin
の両方を厳密に検証すべきです。event.source - HTML インジェクションのリスク: サニタイズされていない文書や許可されたサードパーティスクリプトを通じて、意図せず JavaScript が実行される可能性があります。
- CSP はバックアップ手段: CSP は重要な防御機能ですが、攻撃者制御の HTML が既にメインサイトへ到達した後では、追加の保護は困難です。
タイムライン (2026 年 10 月)
| 日付 | イベント |
|---|---|
| 10 月 13 日 | MathLive メッセージから HTML パスを確認。 |
| 10 月 14 日 | UI を通じてアラートを固定し、JavaScript エグゼキューションへアップグレード。 |
| 10 月 16 日 | プレビュークリックによる公開シェア配送の確認。 |
| 10 月 18 日 | OpenAI にバグ報告提出。 |
| 10 月 21 日 | 重症度が P2 から **P1(最高緊急度)**へ引き上げられる。 |
| 10 月 22 日 | OpenAI が修正をロールアウト開始。 |
| 10 月 26 日 | すべての経路がブロックされ、問題解決確認および賞金授与。 |
この脆弱性は、各機能自体は安全に見えながら、組み合わさった時に重大な影響を及ぼした「クロス機能バグ」の典型例でした。