OpenAI、3月20日のChatGPT障害原因を公表:OSSのRedisバグで情報誤表示
OpenAIは発生したChatGPT障害の原因を報告した。オープンソースライブラリ「redis-py」のバグにより、他人のチャット履歴タイトルや、特定9時間のPlus会員約1.2%の氏名やカード番号下4桁が誤表示されたという。現在はパッチが適用され、サービスは完全復旧している。

作業の続きをしようと ChatGPT を開いた瞬間、左のサイドバーに見知らぬ他人のチャット履歴が並び、アカウント画面に他人の名前やカード情報が一部表示されていたらどうでしょうか。
OpenAI は 3 月 20 日に発生した ChatGPT の大規模障害について詳細な技術報告書を公開し、一部ユーザーのチャット履歴や支払い情報が流出していた事実を公表しました。
発端となったのはオープンソースライブラリの不具合です。別のアクティブユーザーのチャット履歴のタイトルが見えたり、同じ時間帯にアクセスしていた場合は新規会話の最初のメッセージが他人に閲覧されたりする状態に陥っていました。
9 時間の隙間に起きた 1.2% の有料会員情報露出
調査を進めた結果、この不具合は有料プランである ChatGPT Plus 会員の決済情報にも波及していたことが判明しました。
太平洋時間の 3 月 20 日午前 1 時から午前 10 時までの 9 時間にアクセスしていたアクティブな ChatGPT Plus 会員のうち、約 1.2% の支払い関連情報が第三者に誤って表示された可能性があるとされています。
閲覧された可能性があるのは、氏名、メールアドレス、請求先住所、クレジットカードの種別、有効期限、そしてカード番号の下 4 桁です。OpenAI は、カード番号全体の流出は一切なかったと説明しています。
実際に他人の情報を閲覧してしまったケースはごくわずかと見られています。対象の時間帯に誤送信された購読確認メールを開いたか、アカウント画面から購読管理をクリックしたユーザーに限られるためです。
OpenAI は影響を受けたユーザーへ個別に連絡を開始しており、現在はデータの継続的なリスクはないと発表しています。
オープンソースの接続プールが生んだバグ
事故の原因は AI のアルゴリズムではなく、Python の Redis クライアントライブラリである redis-py に潜んでいた不具合でした。
OpenAI はデータベースの負荷を減らすため、Redis Cluster と非同期フレームワーク Asyncio を使ってユーザー情報をキャッシュし、コネクションプールを使い回していました。
問題は、リクエストが送信キューに入った後、レスポンスを取り出す前にリクエストがキャンセルされると発生しました。接続が汚染され、次にその接続を再利用した無関係のリクエストが、前のリクエストの応答データを受け取ってしまったのです。
さらに 3 月 20 日午前 1 時に実施したサーバー変更によってリクエストのキャンセルが急増し、この潜在バグが一気に顕在化しました。
OpenAI は Redis のメンテナと協力してパッチを適用したほか、返されたキャッシュデータがリクエスト元のユーザーと一致するか検証する冗長チェックなどの再発防止策を講じました。
なぜ重要か
私たちは、この障害が急成長する生成 AI 業界に対して古典的かつ極めて重要な教訓を突きつけたと考えています。プロンプトインジェクションやモデルの悪用ばかりが注目されがちですが、実際に重大な事故を引き起こしたのは、使い慣れたはずのバックエンドの配管部分でした。
機密コードや事業戦略を AI に日常的に入力しているユーザーにとって、チャットのタイトルや決済情報が他人に漏れる事態は最大の恐怖です。たとえカード番号全体が守られたとしても、信頼の失墜は避けられません。
OpenAI の障害報告は技術的に極めて誠実で、原因を詳細に開示しオープンソース側にも貢献した姿勢は評価できます。しかし同時に、空前のトラフィック急増に対応する中で、インフラの些細な変更が予測不能な連鎖反応を生む脆さも露呈しました。
今後各社がエンタープライズ顧客を獲得していく上で、モデルの賢さだけでなく、データ分離と堅牢な基盤運用を維持できるかどうかが決定的な差別化要因になりそうです。
情報源 (1)
- openai.com(新しいタブで開きます)原文openai.com