本文へスキップ
sobolewski.pro今日の AI を毎晩お届け登録する

1日1回。ワンクリックで配信停止できます。 プライバシーポリシー

ChatGPTの脆弱性:共有リンク1つでアカウント乗っ取りが可能だった

ChatGPTの脆弱性で、公開チャットリンクからアカウントを乗っ取り他人のチャットを読めた。OpenAIは5000ドルを支払った。攻撃の仕組みを解説します。

1 分で読めます

この記事の他の言語版:العربيةDeutschEnglishEspañolFrançaisItalianoPolski简体中文

この記事の内容
  1. ChatGPTの脆弱性の仕組み
  2. 攻撃者は具体的に何ができたのか?
  3. OpenAIはどう対応したのか?
  4. なぜ話題になっているのか?
  5. 今後気をつけるべきこと
  6. FAQ

10月28日、ParameterのMukul Goyal氏がChatGPTの脆弱性に関する解説を公開しました。ごく普通の公開チャットリンク(chatgpt.com/share/…)を通じて、アカウントを乗っ取れるというものです。攻撃者のコードは、リンクを開いた人のログイン済みセッションの中で実行されました。OpenAIは10月26日に報告をクローズし、バグバウンティプログラムから5000ドルを支払っています。

ChatGPTの脆弱性の仕組み

攻撃は4つのバグの連鎖です(研究者の説明による)。

  1. 会話内のインタラクティブなグラフが、数式入力用のオープンソースライブラリ MathLive を読み込んでいました。このライブラリはフレーム間のメッセージを、送信元を確認せず誰からでも受け付けていました。
  2. MathLiveのキーボードレイアウトのデータにはHTMLを含めることができ、ライブラリはそれをサニタイズせずにメインページへ挿入していました。
  3. このHTMLが sandbox 属性のないiframeを作り、新しいドキュメントはchatgpt.comのオリジンを引き継いでいました。
  4. ChatGPTのContent Security Policyはインラインスクリプトをブロックしていましたが、YouTubeは許可していました。YouTubeのoEmbedエンドポイントがJSONP形式のコールバックに対応していたため、研究者は許可されたドメインから自分のコードを読み込むことができました。

実際には、攻撃者はごく普通に見える会話を公開します。冒頭には本物のグラフ(MathLiveを読み込ませるため)があり、その後にHTMLプレビュー、つまりHTMLのコードブロックを小さな動くページに変えるPreview機能が続きます。悪意あるメッセージをライブラリに送っていたのは、このプレビューでした。

研究者によると、必要な操作は共有リンクを開くことだけでした。最も安定した版では、被害者がPreviewを1回クリックします。後の版ではプレビューが自動で開き、約4.5秒後にコード実行の証拠が表示されました。

攻撃者は具体的に何ができたのか?

コードは被害者のセッション内でchatgpt.comとして動いていたため、被害者になりすましてChatGPTの認証済みAPIを呼び出せました。研究者は概念実証で、最近の会話一覧を取得し、続いて誰も共有していないプライベートな会話の内容を取得して、その一部を自分たちのサーバーに送信しました。

投稿によると、この方法で被害者のアカウント上の事実上あらゆる操作が可能でした(原文:「Essentially, we could perform any action on behalf of the victim’s ChatGPT account」)。攻撃は別々のアカウントやワークスペースの間でも成立しました。

OpenAIはどう対応したのか?

Parameterの投稿にある時系列は次のとおりです。

  1. 10月13日:研究者が本番コードでMathLiveの脆弱な経路を確認。
  2. 10月18日:OpenAIのバグバウンティプログラムに報告。
  3. 10月21日:OpenAIがバグを再現し、優先度をP2からP1に引き上げ。
  4. 10月22日:2つあるWebフロントエンドの一方に修正が入り、10月23日にはCSPの変更で連鎖の一部がブロックされる。
  5. 10月26日:両方のフロントエンドが攻撃に使われたメッセージを拒否するようになり、報告はクローズ、研究者に報奨金が支払われる。

投稿には、この脆弱性が実際の攻撃に悪用されたという記述はありません。OpenAIがコードの何を具体的に変えたのかも書かれていません。

なぜ話題になっているのか?

1つ目は攻撃の手軽さです。リンクは他の共有チャットと見た目が変わらないため、URLを確認しても防げませんでした。

2つ目は報奨金です。投稿はHacker Newsのトップページに載り、コメントで最も多く話題になっているのは金額です。リンク1つでアカウントを乗っ取れる脆弱性に5000ドルは少なすぎると感じる人が多く、これほど低い報奨金では研究者が報告をためらうのではと懸念する声もあります。

3つ目は問題の出どころです。興味深いことに、連鎖全体の起点は数式入力用のライブラリでした(投稿のタイトルが「Do the Math」なのはそのためです)。グラフやページのプレビューなど、チャットのインタラクティブな機能が増えるほど、問題が起こりうる箇所も増えます。共有された会話は以前にもトラブルを起こしています。ご存じのとおり、Meta Museの情報漏えいでは、共有チャットのタイトルが公開DNSに載ってしまいました。

今後気をつけるべきこと

研究者はWebアプリの開発者向けに2つの教訓を挙げています。

  1. フレーム間メッセージの受信側は、送信元のオリジンと、権限を与えたまさにそのウィンドウの両方を確認すること。
  2. CSPは予備の防御策であるべきで、攻撃者のHTMLがすでにページに入り込んだときの唯一の防壁にしてはいけないこと。

私たちユーザーにとって、この脆弱性はすでに修正済みです。それでも、他人とチャットボットの会話へのリンクは、やはり見知らぬ人から届いたリンクだということは覚えておく価値があります。アカウントやAPIキーの守り方については、AIエージェントのセキュリティガイドで詳しく書いています。

FAQ

ChatGPTの脆弱性はもう修正されていますか?

はい。研究者によると、OpenAIは10月26日に、ChatGPTの両方のWebフロントエンドが攻撃に使われたメッセージを拒否することを確認しました。

自分のアカウントで何か対応する必要はありますか?

Parameterの投稿には、ユーザー向けの手順は書かれておらず、研究者のテスト以外での攻撃についても触れられていません。

OpenAIは報告にいくら支払いましたか?

バグバウンティプログラムで5000ドルです。報告の優先度はP1とされました。

本当にリンクを開くだけでよかったのですか?

研究者によれば、はい。ある版ではPreviewを1回クリックする必要があり、後の版ではプレビューが自動で起動しました。

  • AI
  • セキュリティ
  • OpenAI

今日の AI を毎晩お届け

その日の AI の重要ニュースとブログの新着記事を、毎晩お届けします。簡潔に、出典付きで。

1日1回。ワンクリックで配信停止できます。 プライバシーポリシー