powered by TechFeed
表示モード
主要ニュース

ChatGPTの共有リンクを開くだけで過去の会話が全部盗まれる脆弱性が発見・修正済み — 3つの「安全な機能」の組み合わせが穴になった

10月31日、madrobot.blogが「Opening one shared ChatGPT link could hand a stranger your private chats」と題した記事を公開した。セキュリティ企業Parameterの研究者が発見・報告し、すでに修正済みとなったこの脆弱性は、ChatGPTの「公開共有リンク」を開くだけでアカウントを乗っ取られうるというものだ。個々には安全に見える3つの機能が組み合わさって穴になったという構造は、現代のWebアプリケーションセキュリティの難しさを改めて示している。

10月31日、madrobot.blogが「Opening one shared ChatGPT link could hand a stranger your private chats」と題した記事を公開した。セキュリティ企業Parameterの研究者が発見・報告し、すでに修正済みとなったこの脆弱性は、ChatGPTの「公開共有リンク」を開くだけでアカウントを乗っ取られうるというものだ。個々には安全に見える3つの機能が組み合わさって穴になったという構造は、現代のWebアプリケーションセキュリティの難しさを改めて示している。


リンクを開くだけでアカウントが乗っ取られる

セキュリティ企業Parameterの研究者が、ChatGPTの「公開共有リンク」を悪用したアカウント乗っ取り攻撃を実証した。被害者がやることは一つ——リンクを開くだけだ。

最初に作成した攻撃の変形では、ChatGPTのプレビューボタンを1回クリックする操作が必要だったが、後のバージョンではプレビューが自動で開くようになり、「被害者の操作はリンクを開くことだけ」になった。コードはページ読み込みから約4.5秒後に実行される。

コードが動き出すと、被害者のセッショントークンを読み取り、ChatGPT自身のバックエンドAPIを呼び出す。具体的には、直近20件の会話リストを取得し、非公開の会話内容を読み取り、その一部をParameter側のサーバーに送信する。送信には通常の画像リクエストが使われるため、見た目上は何も起きていない。

研究者らは意図的に一部データだけを送信したが、「被害者のChatGPTアカウントで事実上あらゆる操作が可能だった」と報告書に記している。実証は別々のテストアカウント間で行われ、実ユーザーへの被害は確認されていない。


攻撃の仕組み:3つの「安全な機能」が組み合わさって穴になった

攻撃が巧妙なのは、個々の機能は安全に見えるのに、組み合わさると脆弱性になる点だ。

①プレビューのサンドボックス自体は破られていない

ChatGPTのPreview機能は、チャット内のHTMLブロックを別のWebアドレス上の隔離フレームで動かす。このサンドボックスは機能していた——フレーム内のコードはChatGPTのページを直接読めない。

②MathLiveライブラリの設定不備が穴だった

会話にインタラクティブなグラフが含まれると、ChatGPTはオープンソースの数式ライブラリ「MathLive」を読み込む。MathLiveはオンスクリーンの数式キーボード用にメッセージリスナーを設置するが、このリスナーが送信元のWebアドレスを検証していなかった。さらに、受け付けるキーボードレイアウトに生のHTMLが含まれ、それをChatGPTの本体ページに直接挿入してしまう。

③YouTubeのoEmbedエンドポイントでCSPを回避

ChatGPTのContent Security Policy(CSP)はインラインスクリプトをブロックしていたが、YouTubeはホワイトリストに入っていた。研究者はYouTubeのoEmbedエンドポイントの挙動(コールバック名をJavaScriptとして返す)を利用してコードを実行した。oEmbedとは、WebページにURLを埋め込む際にタイトルやサムネイルなどのメタ情報を返す標準規格で、このJSONPコールバック機能が今回の迂回路として機能した。

最終的に、グラフとHTMLプレビューを一つの公開会話に詰め込むことで、罠全体が共有リンクとして生き残った。


OpenAIは8日で修正、報奨金は5,000ドル

Parameterのタイムラインは以下の通りだ。

日付 出来事
10月13日 本番コードで脆弱性を確認
10月18日 OpenAIのバグバウンティプログラムに報告
10月21日 OpenAIが再現確認、深刻度をP2→P1(最高)に引き上げ
10月23日 セキュリティポリシー変更で攻撃チェーンの一部をブロック
10月26日 MathLiveへのメッセージを完全拒否、修正完了
10月28日 Parameterが詳細を公開

OpenAIは報告から8日間で修正を完了し、報奨金として5,000ドルを支払った。なお、バグバウンティとは企業が自社製品の脆弱性を発見・報告した外部の研究者に報奨金を支払う制度で、OpenAIはBugcrowd経由でプログラムを運営している。OpenAIからの公式コメントは出ていない。


Parameterが示した教訓

Parameterは報告書の中で教訓を簡潔にまとめている。

  • 別フレームからのメッセージを受け取るコードは、送信元のアドレスとウィンドウの両方を検証すること
  • ウィンドウ間でやり取りする設定値に生のHTMLを含めないこと
  • Content Security Policyは「バックアップの制御」であり、唯一の防壁ではない

今回のケースはまさに三点目の教訓を体現している。サンドボックス自体は破られておらず、漏洩はページ上のサードパーティライブラリを経由して起きた。


今月2件目のChatGPTプライバシー問題

これは今月公開されたChatGPT関連のプライバシー問題として2件目にあたる。1件目はChatGPTのMacアプリの脆弱性で、同一コンピュータ上の別プログラムがチャットログを読み取れるというものだった。いずれもOpenAIが修正済みであることは共通しているが、共有・公開機能に起因するリスクは引き続き注目されている。AI共有チャットのリスクは他社でも顕在化しており、MetaのAIサービス「Muse」の共有会話が検索一発で6,800件露出した事例(ローン申請書や企業の収益レビューを含む)も報告されている。AIサービスにおける「共有」機能のリスクが、プラットフォームを横断して浮き彫りになりつつある。

詳細はOpening one shared ChatGPT link could hand a stranger your private chatsを参照していただきたい。