OpenAIの__obiクッキー、ChatGPTアカウントを広告主サイトに接続

この識別子は「分析」への同意の下に分類されている — 争点はまさにそこから始まる

|7分で読める0
A hand holding a smartphone running ChatGPT, the app whose account identifier the __obi cookie carries onto advertiser websites.
A hand holding a smartphone running ChatGPT, the app whose account identifier the __obi cookie carries onto advertiser websites.

今週公開されたOpenAIの広告ピクセル解析で争点になっているのは、クッキーがユーザーをウェブ上で追跡している事実そのものではありません。そのクッキーがどの同意項目の下に置かれているか、という点です。Buchodi's Threat Intel名義で活動する研究者は9月20日、OpenAIがログイン中のChatGPTアカウントに紐づく識別子__obiを「分析クッキー」として分類していると報告しました。しかし観測された限り、この識別子が実際に担っている役割は、そのアカウントを広告主のウェブサイトへ運ぶことです。分析には同意し、マーケティングを拒否したユーザーにも、このクッキーはそのまま付与されます。

この記事の要点

  • __obiはOpenAIのクッキーの中で唯一SameSite=Noneが設定されています。ブラウザがクロスサイトリクエストにクッキーを付与するために必須のフラグで、.openai.comドメインで1年間保持されます。
  • 研究者が解読した同期トークン932件はすべてconsent_decision: analytics_allowedというクレームを含んでおり、うち736件はアカウントのサブジェクトを明示していました。
  • クッキーと一緒に送信された個人データの大半は、広告主が意図的に渡した値ではなく、広告主のページから収集された値でした。685件対255件という比率です。

仕組みではなく分類が問題である理由

クロスサイトピクセル自体はありふれた技術です。Metaはログイン済みアカウント、ピクセル発火に乗る3rdパーティクッキー、プロフィールに紐づけ直されるサイト外コンバージョンという3つの要素を、すでに数年前に組み合わせています。エンジニアリングとして見れば、OpenAIのコレクターはごく平凡なアドテクです。

それでも分類が決定的な意味を持つのは別の理由からです。OpenAIはoai_consent_analyticsoai_consent_marketingという独立した2つの同意スイッチを運用していますが、クッキーポリシーで分析の項目に記載されているのは__obiただ一つです。ePrivacy規則をもとにした同意制度では、クッキーが実際に果たす目的が必要な同意の水準を決めます。事業者がどの見出しの下に記載したかは基準になりません。広告用のIDを第三者サイトの閲覧に結びつけることが実測された機能であるなら、サービスの性能を把握するためのツールだと弁明するのは困難です。

3ステップで進むハンドシェイク

ChatGPTのクライアントは16バイトの乱数を生成し、/backend-api/bazaar/obi/sync-tokenで有効期間60秒のRS256 JSON Web Tokenと交換します。このトークンのクレームが、64文字のアカウントサブジェクトと22文字の識別子を結びつけます。クライアントはそのトークンをbzr.openai.com/v1/obi/syncへクロスサイトで送信し、レスポンスがHttpOnlySecureSameSite=Noneと1年の有効期限付きで__obiを書き込みます。クッキーの値とJWT内の識別子は同一の文字列です。以後、OpenAIのピクセルが設置されたページであれば、どこでもこの値が送り返されます。OpenAI社内の命名では、bzrは広告プラットフォーム自体を指すbazaarの略です。

SDK自身が用意した安全策を無効化する発見もありました。ピクセルには認証情報を付けずにリクエストするコードパスが存在しますが、ブラウザはSDKを取得する<script src>リクエストの段階で、すでにクッキーを付けて送信しています。OpenAIのコードが1行も実行される前の話です。つまりタグを読み込むだけで識別子は開示され、広告主が連携方法をどう選んでも、この開示を止めることはできません。

ピクセルのもう一つの仕事 — ホストページを読む

OpenAIのペイロードは、個人情報の取得元を4種類に区別しています。広告主が意図的に渡した値はin、SDKが入力フォーム、描画済みのページテキスト、タグマネージャのバスから取得した値はそれぞれfmhtjsです。最後の経路が最も攻撃的です。SDKはwindow.dataLayer.pushを自前の関数に差し替え、adobeDataLayerを読み取り、gtm.jsタグのl=パラメータを解析して名前を変更されたGoogleタグマネージャのコンテナまで特定します。現行ビルドはこの方法でメールアドレスと電話番号を取得します。バージョン0.1.31までは氏名と地域情報も取得しており、範囲が絞られたのは8月27日のことです。

ハッシュ化は中途半端です。メールアドレス、電話番号、氏名はSHA-256でハッシュ化されますが、国、地域、市区町村、郵便番号は平文のまま送られます。しかも郵便番号は28サイト・100件で収集され、単一項目としては最も多く取得されたフォームフィールドでした。ハッシュ化されたIDに平文の郵便番号が加われば、プライバシーの境界線はハッシュ化だけを見た場合よりはるかに脆くなります。完全なURLはオリジンとパスのみに短縮され、観測された2万3929件のうちクエリ文字列を含むものは皆無でした。それでもパス自体が内容を十分に物語る場合は少なくありません。コレクターに到達したパスには、特定の疾患名、債務整理の申込フロー、訴訟の受付フォームが含まれていました。設定を確認できたピクセル881件のうち638件で自動マッチングが有効になっており、クレジットおよび融資系の広告主はそのすべてが該当しました。

広告主がこれを監査する手段はほとんどありません。__obiは広告主のスクリプトが読み取れないドメインに置かれているため、タグを設置した事業者は自社の訪問者がどの個人情報を渡しているのかを確認できないのです。ウェブスクレイピングによる経路が意図的な受け渡しを3倍近く上回っている以上、訪問者に同意を告知する法的義務を負う側と、何を収集するかを決める側が食い違う場面が頻発することになります。

証拠が届かない範囲

報告書は自らの限界を明確にしています。HTTP 202のレスポンスは、コレクターがクッキー付きのイベントを受理したことを示すだけで、OpenAIがそのイベントを自社システム内で特定のアカウントに結びつけたことまでは示しません。研究者自身も、サーバー側での結合は観測した事実ではなく設計から導かれる推論だと説明しています。

影響範囲にも偏りがあります。この挙動が捕捉されたのはAndroid版Chromeです。Safariは3rdパーティクッキーを全面的に遮断し、iOS版ChromeはWebKitで動作するため、iOSのブラウザではこの仕組みは機能せず、デスクトップ版Chromeは未検証のままです。同期トークンが実際に発行されたChatGPTセッションは、およそ5回に1回でした。結果として露出は均等に広がるのではなくAndroidユーザーに集中しており、実測された普及規模は全体像ではなく下限値として読むべき数字になります。

通信記録がはっきり裏づけているのは持続性です。研究者本人の端末では、1つの__obiの値が13のピクセルIDを経由して12の商用サイトからOpenAIへ送信されていました。Chewy、Wayfair、ThriftBooks、Eventbrite、HelloFresh、Coursera、SeatGeekなどが含まれます。より広い収集範囲では、異なる30個の値のうち12個が複数の広告主で出現し、うち1つは10社で確認されました。ログアウトしても逃れられません。196件のトークンは匿名のサブジェクトを含んでいましたが、その値は少なくとも27日間、同じ端末に固定されたままでした。

次に起きること

研究者はOpenAIに直接問い合わせています。9月14日にpress@openai.comとprivacy@openai.com宛てに、なぜこのクッキーを分析として分類しているのか、マーケティングへの同意を拒否すれば収集は止まるのか、という2つの質問を送りました。返ってきたのは、指摘した内容を社内で共有するというOpenAIサポートからの受領連絡だけで、どちらの質問にも回答はありませんでした。

この沈黙は、OpenAIがこのピクセルの支える事業をどれだけ速く拡大しているかと並べると、いっそう据わりが悪く見えます。ChatGPT内で販売の会話を続けるスポンサー付きエージェントから、自動マッチングのスイッチが置かれたAds Managerのコンソールまでが、その事業です。居心地の悪さの正体は、人々がAIアシスタントに打ち明ける内容と、公の場に投稿する内容がまったく違うという点にあります。この解析記事が1日でHacker Newsで379ポイントと188件のコメントを集めたことを見れば、開発者たちはその違いを即座に理解したのでしょう。最初に糸口として引かれるのは同意の分類である可能性が高いといえます。企業の公式説明と実測結果が正面から食い違う、唯一の箇所だからです。

よくある質問

ChatGPTのユーザーは__obiクッキーを無効にできますか

報告書は、これを無効化する設定を発見できませんでした。OpenAIが分析として扱っているため、マーケティングへの同意を拒否しても止まりません。.openai.comで1年間保持され、クッキーを削除しても次回の同期までしか効果がありません。3rdパーティクッキーを遮断するブラウザ、つまりSafariとiOS上のすべてのブラウザでは、クロスサイトの工程自体が成立しません。

広告主は自社の訪問者に紐づいたChatGPTの身元を確認できますか

できません。そしてそれが問題の一部でもあります。__obiは広告主のスクリプトが読めないドメインにあるため、タグを設置した事業者でも監査できないのです。ピクセルが使うもう一つのクッキー__obrefは広告主自身のドメインに書き込まれ、サイトごとに固有の値を保ちます。観測された2860個の値のうち2828個が、ちょうど1社の広告主でのみ出現しました。

OpenAIが閲覧履歴と実名アカウントを結びつけていると証明されたのですか

断定はできません。アカウントとの結合はJWTのクレーム内で確認でき、識別子がOpenAIへ送信され受理されることも実際に観測されています。ただし最終的な突合はOpenAIのサーバー上で行われ、研究者はその部分を観測できませんでした。この点は実測ではなく、アーキテクチャからの推論にとどまります。

この記事への反応を残してください!

SJ

ディスカッション

ログインして投稿
読み込み中...

関連記事

OpenAI、問い返せる広告をテストへ
Tech & Business

OpenAI、問い返せる広告をテストへ

OpenAIは水曜日、Sponsored Agentsのテストを開始しました。ChatGPTの利用者が広告をクリックすると、広告主がスポンサーするエージェントとの別の会話が開きます。同じアップデートでChatGPT広告はHubSpotとShopifyに組み込まれました。

Seung Jung5 日前
OpenAI「自社モデルがJalapeñoの設計を9か月に短縮した」
Tech & Business

OpenAI「自社モデルがJalapeñoの設計を9か月に短縮した」

AIが書いたカーネルがOpenAIの専門家による実装を最大1.8倍上回った。JalapeñoのInferenceXベンチマーク結果が初公開された。

Seung Jung26 日前
ワシントンの1ドルChatGPT契約が終了、後継契約はトークン単位で請求する
Tech & Business

ワシントンの1ドルChatGPT契約が終了、後継契約はトークン単位で請求する

OpenAIの新しい27か月のGSA契約は1席15ドルのライセンス料を免除しトークン料金を半額にしたが、年1ドルの定額を10月1日から従量課金へ切り替える。

Seung Jung8 日前
ChatGPTが架空の証人を捏造、ニューメキシコ州最高裁が弁護士に5000ドルの制裁
Tech & Business

ChatGPTが架空の証人を捏造、ニューメキシコ州最高裁が弁護士に5000ドルの制裁

ニューメキシコ州最高裁は、ChatGPTが控訴趣意書に架空の証人と警察の供述を作り出したとして、弁護士Stephen Aarons氏に5000ドルの制裁金を科し法廷侮辱と認定した。

Seung Jung9 日前
アルトマン氏、非公開S-1を提出済みでも2026年のOpenAI上場を否定
Tech & Business

アルトマン氏、非公開S-1を提出済みでも2026年のOpenAI上場を否定

OpenAIは今年中に新規株式公開を完了しない。サム・アルトマン最高経営責任者がフォーチュン編集長とのインタビューで2026年の上場を明確に否定した。

Seung Jung9 日前
Microsoft社内メモ、AI学習を「人類史上最大の労働の窃盗」と表現
Tech & Business

Microsoft社内メモ、AI学習を「人類史上最大の労働の窃盗」と表現

NYT訴訟で開示された資料には、AI学習を人類史上最大の労働の窃盗と呼んだMicrosoftのメモや、トラフィックとデータセットの数値が含まれます。

Seung Jung4 日前