ChatGPT-Werbetracking: Wie das Cookie __obi Website-Aktivitäten an Konten bindet

Makroaufnahme einer Platine mit Mikrochip und leuchtenden Kupferleiterbahnen
Deine Reaktion:

Ein Entwickler hat den Vorgang auf dem eigenen Telefon nachgebaut: ChatGPT in Chrome unter Android, angemeldet mit dem eigenen Konto, der Netzwerkverkehr mit zwei unabhängigen Methoden mitgeschnitten. Beim Aufruf gewöhnlicher Einkaufsseiten – Chewy, Wayfair, ThriftBooks und neun weiterer – taucht dabei jedes Mal dieselbe Kennung auf.

Im Mitschnitt erscheint bei jeder dieser Seiten ein Cookie, das keine von ihnen gesetzt hat. Es heißt __obi, ist auf die Domain openai.com beschränkt und trägt eine Kennung, die kurz zuvor im Chat erzeugt wurde. Der Entwickler dokumentiert damit ein Werbetracking-System, das ChatGPT mit dem Verhalten auf fremden Websites verbindet. Er hat den Ablauf auf dem eigenen Gerät nachgebaut, mit zwei unabhängigen Mitschnittmethoden geprüft und gegen mehrere Monate aufgezeichneten Verkehr gehalten: 936 Werbe-Pixel auf 1.029 Hostnamen.

Der Mechanismus besteht aus bekannten Teilen. Interessant ist, wo er auftaucht. Eine Analogie hilft bei der Einordnung: ein Armband auf einem Festival. Am Eingang wird es angelegt, jeder Stand kann es lesen, und am Ende wissen die Veranstalter, an welchen Ständen du warst. So ist __obi gebaut.

Vom Chat zur Kennung: so entsteht das Cookie der OpenAI-Werbeplattform

Der erste Schritt spielt auf chatgpt.com und fällt niemandem auf. Der Client erzeugt 16 zufällige Bytes und schickt sie an den Endpunkt /backend-api/bazaar/obi/sync-token, abgemeldet an die Variante für anonyme Nutzer. Zurück kommt ein signiertes Token im Format RS256, ein JWT mit kryptografischer Signatur. Darin steht im Feld sub das Konto, im Feld obi die Kennung. Das Token ist auf den Collector beschränkt und läuft nach 60 Sekunden ab.

Die Namen verraten die Herkunft. bzr steht für Bazaar, den internen Namen der OpenAI-Werbeplattform, wadi heißt der ausstellende Dienst. Wer den Namen Bazaar bisher nirgends gesehen hat, findet hier den ersten konkreten Anhaltspunkt: ein Werbesystem mit eigener Domain, eigener Infrastruktur und eigenem SDK.

Im zweiten Schritt wird aus der Kennung ein Cookie. Der Client schickt das Token per Cross-Site-Request an bzr.openai.com/v1/obi/sync. Der Server antwortet mit einem Set-Cookie-Header, der drei Dinge festlegt: SameSite=None, Secure, ein Jahr Laufzeit. SameSite=None ist der Schalter, der ein Cookie überhaupt erst bei seitenübergreifenden Anfragen mitschickt. Der Wert im Cookie ist derselbe wie im Token. Das ist der Kniff.

Der dritte Schritt gehört den Werbetreibenden. Jede Firma, die auf ChatGPT Anzeigen bucht, baut ein kleines Stück OpenAI-Code in die eigene Seite ein, so wie sie längst Code von Meta und Google einbaut. Lädt ein Browser dieses Skript von bzrcdn.openai.com, hängt er das Cookie von sich aus an die Anfrage. Das passiert, bevor auch nur eine Zeile des Skripts ausgeführt wird.

Was der Ad-Collector zusätzlich aus Formularen und Tag-Managern liest

Das SDK begnügt sich nicht mit der Kennung. Auf der Seite des Werbetreibenden sammelt es Identitätsdaten und sortiert sie in vier Quellen, die OpenAI selbst so benennt: in steht für Werte, die der Werbetreibende bewusst übergibt, fm, ht und js stehen für Werte, die das Skript aus Formularfeldern, gerendertem Seitentext und dem Datenbus des Tag-Managers abgreift. In den beobachteten Datenverkehren überwog die abgegriffene Identität die übergebene deutlich, mit 685 zu 255 Ereignissen.

Der Tag-Manager-Bus ist die ergiebigste Quelle für E-Mail-Adressen. Das SDK ersetzt window.dataLayer.push durch eine eigene Funktion, liest zusätzlich adobeDataLayer und findet umbenannte GTM-Schichten, indem es den Parameter l aus dem Skript-Tag von gtm.js auswertet. In aktuellen Versionen nimmt es E-Mail und Telefonnummer von dort. Version 0.1.31 holte zusätzlich Namen und Geografie, bevor der Umfang am 27. August eingeschränkt wurde.

Vor dem Versand werden E-Mail, Telefon, Vor- und Nachname mit SHA-256 gehasht. Land, Region, Stadt und Postleitzahl gehen im Klartext raus. Die Postleitzahl war das am häufigsten abgegriffene Formularfeld, mit 100 Ereignissen auf 28 Websites. URLs werden auf Origin plus Pfad gekürzt; in keinem der 23.929 beobachteten Fälle war eine Query-Zeichenkette dabei. Die Pfade bleiben aussagekräftig. Darunter fanden sich eine medizinische Diagnose, ein Schuldenberatungs-Funnel und ein Formular für Sammelklagen.

Ein zweiter Schalter sitzt in OpenAIs Ads Manager: das automatische Matching. Es war bei 638 von 881 Pixeln mit bekannter Einstellung aktiv, darunter bei jedem beobachteten Kredit- und Finanzierungswerbetreibenden. Eine Sperrliste schließt Passwörter, Einmalcodes, Kartennummern, Sozialversicherungsnummern, Geburtsdatum, Krankengeschichte, Diagnosen und Gerichtsfelder aus. Dass eine solche Liste nötig ist, sagt einiges über den Rest des Feldes.

Warum nur __obi die Seitengrenze überquert

Auf denselben Anfragen von Werbeseiten blockierte der Browser jedes andere Cookie von OpenAI. oai-did und oaicom-stable-id scheiterten an SameSite=Lax, das sie nur bei Navigationen mitschickt. oai-client-auth-info und die Session-Cookies scheiterten an der Domain, weil sie nicht zu openai.com, sondern zu chatgpt.com gehören.

__obi dagegen wurde gesendet, und das ist kein Zufall. Es ist die einzige OpenAI-Kennung, die mit SameSite=None konfiguriert ist. In der Armband-Analogie ist das der Unterschied zwischen einem Armband, das jeder Stand scannen kann, und einem Zettel in der Hosentasche, der nur im eigenen Gebäude gilt. Beide sind Kennungen, aber nur eine ist für das gebaut, was die Werbebranche Cross-Site-Tracking nennt.

Zwölf Shops, dreizehn Pixel: die gemessene Reichweite

Auf dem Gerät des Entwicklers wurde ein einziger __obi-Wert an OpenAI von zwölf kommerziellen Websites unter dreizehn verschiedenen Pixel-IDs gesendet, darunter Chewy, Wayfair, ThriftBooks, Eventbrite, HelloFresh, Coursera und SeatGeek. Jede dieser Anfragen quittierte der Collector mit dem Status 202, also mit Annahme. In der breiteren Datenbasis tauchten 12 von 30 beobachteten __obi-Werten bei mehr als einem Werbetreibenden auf, einer sogar bei zehn verschiedenen.

Ab hier wird aus einem einzelnen Cookie ein Profil. Ein Wert, der nur bei einem Händler auftaucht, sagt wenig. Ein Wert, der bei zehn auftaucht, erlaubt Rückschlüsse darauf, wie dieselbe Person einkauft, liest und recherchiert. So lässt sich ein ChatGPT-Account mit Website-Aktivitäten verknüpfen, ohne dass eine der beteiligten Seiten davon weiß.

Auch ohne Anmeldung und trotz getrennter Einwilligungen

Von 932 entschlüsselten Sync-Tokens trugen 736 die Angabe subject_type: account_user, die übrigen 196 die Angabe anonymous. Der anonyme Betreff ist genauso stabil wie der angemeldete: einer pro Gerät, nachweisbar über mindestens 27 Tage. Wer ChatGPT also nur ausgeloggt benutzt, verliert die Zuordnung nicht, er verliert nur den Namen daran.

In der Cookie-Richtlinie von OpenAI steht __obi unter Analytics-Cookies, mit einem Jahr Laufzeit, gültig für chatgpt.com und openai.com. Es ist der einzige Eintrag in dieser Kategorie. Analytics-Cookies werden dort als Hilfe beschrieben, um zu verstehen, wie die eigenen Dienste funktionieren und genutzt werden. Für Marketing betreibt OpenAI eine separate Einwilligung, oai_consent_analytics und oai_consent_marketing sind zwei verschiedene Schalter.

Jedes Token, das der Entwickler entschlüsselte, trug die Angabe consent_decision: analytics_allowed. Wer Analytics erlaubt und Marketing ablehnt, bekommt also genau dieses Cookie. Das ist der heikelste Befund für den Datenschutz bei ChatGPT. Nicht weil ein Cookie gesetzt wird, sondern weil die Einordnung als Analytics-Cookie die Frage aufwirft, ob Nutzer überhaupt verstehen können, was sie an dieser Stelle erlauben.

Der Entwickler hat am 14. September zwei Fragen an press@openai.com und privacy@openai.com geschickt: warum __obi als Analytics-Cookie klassifiziert ist, und ob jemand, der Analytics erlaubt und Marketing ablehnt, es trotzdem erhält. Die Antwort kam vom OpenAI-Support. Sie bestätigte die Anfrage, kündigte eine interne Prüfung an und beantwortete keine der beiden Fragen.

Wo die Beobachtung endet und was davon bleibt

Die Grenzen der Untersuchung benennt der Entwickler selbst. Gemessen wurde in Chrome unter Android. Safaris Intelligent Tracking Prevention blockiert Drittanbieter-Cookies vollständig, und Chrome unter iOS läuft auf WebKit, sodass der Mechanismus in keinem iOS-Browser funktioniert. Desktop-Chrome wurde nicht getestet. Auch die Auslösung ist nicht konstant: etwa jede fünfte ChatGPT-Sitzung erzeugte ein Sync-Token, und der mobile Webclient spielt Anzeigen ganz ohne Synchronisierung aus. Wer die Schritte nachvollzieht, kann also ein Pixel ohne Cookie sehen.

Auch der letzte Schritt ist eine Schlussfolgerung. Der Status 202 bedeutet, dass der Collector das Ereignis mit angehängtem Cookie angenommen hat. Dass OpenAI es serverseitig dem Konto zuordnet, folgt aus dem Design, wurde aber nicht direkt beobachtet. Der Unterschied ändert wenig an der Architektur, aber viel an der Beweislage.

Zum Vergleich: Das andere Cookie des Systems, __obref, wird auf der Domain des Werbetreibenden gesetzt. Jede Seite bekommt einen anderen Wert, keine kann den Wert einer anderen sehen; von 2.860 beobachteten Werten erschienen 2.828 unter genau einem Werbetreibenden. Die Werbetreibenden selbst haben also keinen Einblick. Sie haben ein Conversion-Pixel eingebaut und erfahren nicht, dass ihre Besucher mit einer ChatGPT-Identität verknüpft werden.

Strukturell ist das nichts Neues. Meta hat vor Jahren etwas gebaut, das demselben Muster folgt: ein angemeldetes Konto, Drittanbieter-Cookies beim Pixel-Aufruf, serverseitig aufgelöste Off-Site-Conversions. Neu ist der Ort. Auf einem KI-Chatprodukt landen Fragen, die viele Menschen nie in einem sozialen Netzwerk stellen würden, und dieselben Produkte handeln zunehmend im Auftrag ihrer Nutzer. OpenAI-Tracking auf Werbeseiten ist damit nicht nur ein Datenschutzthema, sondern eine Frage der Rollenvermischung.

Wenn du ChatGPT in Chrome unter Android nutzt, reicht es nicht, Marketing abzulehnen. Prüfe, was unter Analytics eingestellt ist, und entscheide, ob dieser Schalter für dich passt. Cookies lassen sich im Browser löschen — das setzt die Kennung zurück, beendet aber nicht die Mechanik. Die zwei Fragen an OpenAI stehen weiterhin offen.

Quelle: buchodi.com

Deine Reaktion:
Artikel teilen:
Krötzsch-Check0 — 100
Fakten 88
Relevanz 80
Hype 22
Einschätzung 76
Redaktion 50 Stand 50 · noch keine Stimmen
Ist das Hype?
Sebastian Krötzsch
Autor

Sebastian Krötzsch

Sebastian Krötzsch schreibt auf sebask.de über Künstliche Intelligenz, Automatisierung, digitale Systeme und die Frage, was davon im Alltag wirklich nützlich ist. Ohne Buzzword-Nebel, dafür mit klarem Blick auf Praxis, Tools und echte Wirkung.