Ein Roblox-Cheat, eine OAuth-Freigabe und ein 2-Mio.-$-Leak bei Vercel
Der diese Woche bekannt gewordene Vercel-Einbruch begann damit, dass ein Context.ai-Mitarbeiter auf einem privaten PC Roblox-Exploits herunterlud, und endete damit, dass ein Angreifer die Kundendatenbank mit Umgebungsvariablen von Vercel auslas. Bromure Enterprise, diese Woche veröffentlicht, ist genau für diese Kette gebaut.
Ein Mitarbeiter sucht auf seinem privaten Laptop nach Roblox-Cheats. Zwei Monate später verkauft ein Angreifer die Kundendatenbank von Vercel für 2 Millionen Dollar auf BreachForums. Zwischen diesen beiden Ereignissen liegt eine Kette alltäglicher Entscheidungen — ein privates Gerät, ein Klick auf „Alle zulassen“ bei einer OAuth-Freigabe, ein Drittanbieter-KI-Tool mit einem support@-Account — auf die jedes Enterprise-IT-Team diese Woche starren sollte. Bromure Enterprise, das wir gestern veröffentlicht haben, wurde für die Mitte dieser Kette gebaut.
Am 20. April hat Vercel bekanntgegeben, dass ein „hochgradig ausgeklügelter“ Angreifer über ein kompromittiertes KI-Tool eines Drittanbieters namens Context.ai in seine internen Systeme eingedrungen war und auf nicht sensible Umgebungsvariablen einer Teilmenge von Kundenprojekten zugegriffen hatte. CEO Guillermo Rauch bezeichnete die Angreifer als „durch KI erheblich beschleunigt“ und forderte Kunden auf, alle als nicht sensibel markierten Zugangsdaten zu rotieren. Eine Gruppe, die sich ShinyHunters nennt, versucht nun, die gestohlenen Daten für $2M auf BreachForums zu verkaufen.
Die Lösegeldsumme ist die Schlagzeile. Die Angriffskette ist die Lektion. Hudson Rock hat die Infektion auf Februar 2026 zurückverfolgt: Ein Context.ai-Mitarbeiter suchte nach Roblox-„Auto-Farm“-Skripten und Spiel-Exploit-Executorn, lud einen herunter und fing sich dabei Lumma Stealer ein — einen handelsüblichen Infostealer, der Browser-Cookies, gespeicherte Zugangsdaten und OAuth-Tokens absaugt. CyberScoop und SpecterOps haben den Rest später rekonstruiert. Was Lumma extrahierte, war nicht nur ein Context.ai-Passwort; es war der gesamte Satz im Browser gecachter Unternehmens-Zugangsdaten — Google-Workspace-Sitzungen, Supabase-Keys, Datadog-Logins, Authkit-Tokens.
Von dort aus pivotierte der Angreifer in die AWS-Umgebung von Context.ai, las die OAuth-Tokens aus, die Context.ai im Namen seiner Kunden hielt, und fand einen Vercel-Mitarbeiter, der sich einst mit seinem Unternehmens-Google-Konto für Context.ais „AI Office Suite“ registriert hatte — und das Kästchen „Alle zulassen“ angeklickt hatte. Diese eine Einwilligung, Monate zuvor erteilt, war das einzige Primitiv, das der Angreifer brauchte. Er erzeugte eine Sitzung als dieser Mitarbeiter, spazierte in den Google Workspace von Vercel und von dort in Vercels interne Produkt-API, wo er jede Umgebungsvariable aufzählte und entschlüsselte, die ein Kunde nicht ausdrücklich als sensibel markiert hatte.
Vier Dinge an dieser Kette verdienen Erwähnung, weil sich jedes auf eine konkrete Kontrolle abbildet, die wir diese Woche in Bromure Enterprise ausgeliefert haben. Wir werden nicht behaupten, das Release hätte den Einbruch vollständig verhindert — das hätte es nicht. Was es getan hätte, ist, die Kette an vier separaten Punkten zu durchbrechen, von denen jeder einzelne genügt.
Der private Laptop war tragend
Das am stärksten unterbelichtete Detail in den öffentlichen Berichten ist, dass die infizierte Maschine ein privates Gerät war. Der Context.ai-Mitarbeiter suchte nach Roblox-Exploits — keine typische Unternehmensaufgabe — und die Infektion landete auf einer Maschine, auf der wahrscheinlich sowohl beruflich als auch privat gesurft wurde. Lumma Stealer ist es egal, zu welchem Profil ein Cookie gehört; er liest jede Chrome- und Edge-Zugangsdatendatei, die er finden kann, und verschickt das gesamte Paket.
Das ist das zentrale Muster der BYOD-Ära. Der Host ist unverwaltet. Die Arbeits-Cookies liegen im selben Cookie-Glas wie der Roblox-Cheat, den der Nutzer gerade heruntergeladen hat. Ein EDR-Agent mag installiert sein oder nicht; auf einem privaten Gerät ist das sehr unwahrscheinlich. Und selbst wenn, wird Lumma regelmäßig dabei beobachtet, handelsübliche AV-Lösungen zu umgehen.
Die Antwort von Bromure Enterprise ist eine verwaltete VM auf einem unverwalteten Host. Die IT stellt ein Bromure-Arbeitsprofil aus. Der Mitarbeiter installiert Bromure auf seinem privaten Laptop, meldet sich mit dem Unternehmens-IdP an (Google Workspace, Okta, Entra, Authentik), und das Arbeitsprofil bootet als eigene virtuelle Linux-Maschine. Diese VM hat ihren eigenen Kernel, ihr eigenes Dateisystem, ihr eigenes Chromium-Profilverzeichnis. Unternehmens-Cookies, im Unternehmen gespeicherte Passwörter und OAuth-Refresh-Tokens des Unternehmens leben innerhalb dieser VM. Ein Stealer, der auf dem Host-macOS oder Windows läuft — eingefangen über einen Roblox-Download oder irgendetwas anderes — kann sie weder aufzählen, lesen noch exfiltrieren. Es gibt kein gemeinsames Chrome-Profil auf der Festplatte, das er stehlen könnte. Das Cookie-Glas liegt innerhalb eines VM-Images, das das Host-OS als opake Plattendatei behandelt.
Das ist keine theoretische Trennung. Es ist der gesamte Sinn der Architektur. Der Host kann sich den ganzen Tag lang kompromittieren lassen; der Arbeitsbrowser steht in einem anderen Computer.
Der Klick auf „Alle zulassen“ war die eigentliche Trophäe
Schauen wir uns den Pfad des Angreifers genau an. Der Stealer griff Zugangsdaten für Google Workspace, Supabase, Datadog und Authkit ab. Die waren nützlich, um innerhalb von Context.ai zu pivotieren. Aber das, was bis zu Vercel reichte, war kein gestohlenes Passwort — es war ein OAuth-Token. Konkret das Token, das geprägt wurde, als sich ein Vercel-Mitarbeiter für Context.ais AI Office Suite registrierte, sich durch den Google-Einwilligungsdialog klickte und das Scope-Paket „Alle zulassen“ freigab. Diese Einwilligung lag Monate zurück. Sie wurde nie neu bewertet. Sie lag einfach da, gültig, und wartete.
Das ist die OAuth-Sichtbarkeitslücke, auf die SpecterOps hingewiesen hat: Vertrauenskanten, die einzelne Mitarbeiter durch Klicks auf Einwilligungsdialoge erzeugen, operieren vollständig außerhalb des Provisioning-Workflows der IT. Der Pfad war offen, bevor irgendjemand wusste, dass er danach suchen müsste.
Bromure Enterprise verengt diese Fläche gleichzeitig in zwei Richtungen.
Die Liste zugelassener SaaS-Kacheln ist der Engpass auf dem Weg hinein. Admins veröffentlichen den Satz freigegebener Arbeits-Apps auf der Work-Startseite jedes erfassten Nutzers. Diese Kacheln sind das, worauf Mitarbeiter klicken, um ein neues Tool einzuführen. Context.ai stand bei Vercel nicht auf dieser Liste — es konnte nicht darauf stehen; es war das Experiment eines einzelnen Mitarbeiters. Ohne Kachel gibt es keinen Ein-Klick-Sign-up-Flow innerhalb des verwalteten Arbeitsprofils. Der Mitarbeiter kann natürlich trotzdem manuell zu Context.ai navigieren; an dieser Stelle greift die zweite Kontrolle.
Das Arbeitsprofil ist SSO-geschützt und seine Einwilligungsfläche ist sichtbar. OAuth-Einwilligungen, die aus einem verwalteten Bromure-Arbeitsprofil heraus initiiert werden, laufen über den Unternehmens-IdP unter Admin-Richtlinien. Ein Admin, der überhaupt steuern möchte, welche Drittanbieter-Apps Google-Workspace-Scopes erhalten dürfen — was jeder Google-Workspace-Admin tun sollte und fast keiner tatsächlich tut — hat seinen Durchsetzungspunkt in der Bromure-Policy-Engine, statt verstreut über das, worauf jeder Mitarbeiter vor Wochen zufällig geklickt hat. Das „Alle zulassen“-Kästchen hört auf, eine Überraschung zu sein, die achtzehn Monate später während einer Incident Response auftaucht.
Nichts davon widerruft rückwirkend eine OAuth-Freigabe, die erteilt wurde, bevor der Mitarbeiter zu Bromure gewechselt ist. Aber ab sofort ist die Kategorie „ein Mitarbeiter hat breite Google-Scopes an eine zufällige SaaS-App vergeben, von der ich noch nie gehört habe“ sichtbar und steuerbar.
Danach ist das Audit-Log der einzige Weg, den Schaden einzugrenzen
Das öffentliche Bulletin von Vercel ist ehrlich dazu, was ihre Untersuchung ergeben hat: Der Angreifer hat Umgebungsvariablen aus einer Teilmenge von Kundenprojekten aufgezählt und entschlüsselt. Der Umfang wird noch präzisiert. Der Grund, warum er noch präzisiert wird, ist, dass die Rekonstruktion der Frage „Was hat der Mitarbeiter-Account zwischen Ende März und Mitte April tatsächlich gelesen?“ aus den Google-Workspace-Audit-Logs plus Vercels internen Produkt-Logs ein forensisches Rekonstruktionsprojekt ist, keine Abfrage.
Das ist die Lücke, die das Audit-Log pro Anfrage von Bromure Enterprise schließen soll. Jede HTTP-Anfrage, die aus jeder Arbeitssitzung auf jedem erfassten Gerät gestellt wird, wird zentral geloggt: Nutzer, URL, Verb, Zeitstempel. „Wer hat gestern zwischen 8:00 und 8:15 Uhr Zugangsdaten an evil.com gesendet?“ ist das Beispiel, das wir beim Launch genutzt haben. Ein besseres Beispiel diese Woche: „Für jeden Umgebungsvariablen-Endpunkt unserer Vercel-Produkt-API: Wer hat ihn in den letzten neunzig Tagen von wo aus und wann getroffen?“ Eine Abfrage, kein Projekt.
Das ist der EDR-trifft-Web-Audit-Log-Teil. EDR beantwortet dieselbe Frage für native Prozesse: Was hat dieser Prozess angefasst? Bromure beantwortet sie für das Browsing: Was hat der Browser dieses Nutzers angefasst? Bei einem Vorfall wie dem von Vercel, bei dem der Fußabdruck des Angreifers vollständig innerhalb einer kompromittierten Browsersitzung liegt, ist die EDR-Antwort leer und die Bromure-Antwort ist die Vorfall-Zeitleiste.
Datenabfluss-Kontrollen sind hier schmal — und das ist ehrlich
Wir wollen sorgfältig sein, wo Bromure Enterprise hilft und wo
nicht. Die Kontrollen für Copy-and-Paste, Datei-Downloads,
Screenshots und lokales Netzwerk sind real, und sie sind echte
Erfolge gegen Datenabfluss im Allgemeinen — ein kompromittierter
Tab in einem verwalteten Profil kann Kundendaten aus
Umgebungsvariablen nicht in ein scp auf dem Host ziehen, sie
nicht per Screenshot abgreifen oder sie nicht an einen LAN-Peer
hochladen. Für die Vercel-Kette im Speziellen fand der
Exfiltrationsschritt allerdings vollständig über die Leitung
zwischen Vercels eigenem Backend und einem vom Angreifer
kontrollierten Endpunkt statt. Der Angreifer führte authentifizierte
API-Aufrufe durch, er zog keine Dateien aus einem Browserfenster.
Die Paste/Download/LAN-Kontrollen hätten das nicht erfasst.
Was geholfen hätte und im oben genannten Audit-Log pro Anfrage aufgeführt ist, ist die Aufzeichnung der API-Aufrufe selbst. Datenabfluss-Kontrollen sind die zweite Linie; die erste Linie ist, dafür zu sorgen, dass der Angriff überhaupt nicht erst eine Sitzung in einem verwalteten Browser erzeugen kann.
Was Bromure Enterprise nicht tut
Drei ehrliche Grenzen, weil die Geschichte sie verdient.
Es stoppt keine Malware auf einem unverwalteten privaten Host. Ein Roblox-Cheat, der außerhalb der Bromure-VM heruntergeladen wird, ist immer noch ein Roblox-Cheat, der Infostealer-Malware auf dem privaten OS des Nutzers installiert. Bromure räumt das nicht auf. Was es tut: dafür zu sorgen, dass der Ertrag der Malware für den Angreifer nur die privaten Cookies des Nutzers sind — nicht die Unternehmens-Cookies.
Es entzieht OAuth-Scopes nicht rückwirkend. Einwilligungen, die erteilt wurden, bevor das Unternehmen Bromure Enterprise ausgerollt hat, stehen in der Grant-Liste von Google Workspace, nicht bei uns. Die richtige operative Maßnahme nach dem Einsatz von Bromure ist weiterhin ein Audit bestehender Drittanbieter-App-Freigaben — wir helfen Ihnen, die nächste zu verhindern, wir schreiben nicht die letzte um.
Es ersetzt nicht die Disziplin des Scopings. Der Vercel- Mitarbeiter klickte auf „Alle zulassen“. Wenn ein künftiger Mitarbeiter „Alle zulassen“ auf einer zugelassenen Kachel klickt, ist die Freigabe immer noch breit. Bromure macht die Fläche sichtbar und den Einführungspfad enger; es ersetzt nicht einen Admin, der entscheidet, welche Google-Scopes für eine bestimmte Kategorie von Apps zulässig sind und welche nicht.
Das Browser-first-Argument lautet nicht „es können keine Angriffe mehr passieren“. Es lautet, dass der wirkungsvollste Kontrollpunkt für die gesamte Kategorie von Angriffen, die über die Browsersitzung eines Nutzers laufen, der Browser selbst ist — und der Browser ist zufällig das einzige Stück Unternehmenssoftware, das auf unverwalteten Geräten nie eine ordentliche Management-Story hatte.
Die Form der Lösung
Supply-Chain-Einbrüche über SaaS-OAuth-Freigaben sind das moderne Äquivalent zu VPN-Credential-Stuffing-Angriffen vor zehn Jahren. Beide sind Folgen einer Vertrauenskante, die billig zu erschaffen, schwer zu inventarisieren und unmöglich zeitnah zu widerrufen war, wenn die Gegenseite kompromittiert wurde. Vercels Bulletin ist sorgfältig und ehrlich; die Kette, die es beschreibt, ist nicht Vercels Schuld. Sie ist das, was passiert, wenn derselbe Browser auf demselben privaten Laptop die Unternehmenssitzung des Mitarbeiters, seine Roblox-Download-Historie und seine gesammelten „Alle zulassen“-Einwilligungen für jedes KI-Tool enthält, mit dem er letztes Quartal experimentiert hat.
Die strukturelle Antwort ist, der Arbeitssitzung ihren eigenen Computer zu geben. Nicht einen zweiten Laptop — eine zweite Maschine, auf demselben Laptop materialisiert, mit ihrem eigenen Kernel, ihrem eigenen Dateisystem, ihrem eigenen Cookie-Glas, ihrer eigenen Policy-Engine, ihrem eigenen Audit-Tap in zentrales Logging. Das ist Bromure Enterprise. Wer IT in einem Unternehmen betreibt, dessen Mitarbeiter routinemäßig OAuth-Scopes an Drittanbieter-SaaS-Apps vergeben — also in jedem Unternehmen — für den ist Vercels Bulletin diese Woche der Grund, es auf die Shortlist zu setzen.
Primärquellen