ClaudeBleed wieder offen — Wenn "Resolved" nicht gepatcht bedeutet
- Die beiden Bypässe in Claude for Chrome verstehen — eine fehlende event.isTrusted-Prüfung und ein URL-Parameter, der das Side Panel selbst eskaliert
- Sehen, warum Anthropic das Ticket vor dem 9. Juni "Resolved" markierte und dann acht weitere Releases (v1.0.73 → v1.0.80) unverändert auslieferte — das ist die eigentliche Geschichte
- Das allgemeine Verteidigungsmuster lernen: clientseitige Allowlists sind keine Sicherheitsgrenze, wenn eine andere Erweiterung deinen Origin teilt
- Drei konkrete Maßnahmen, die du in unter zwei Minuten jetzt sofort anwenden kannst
Am 7. Juli 2026 veröffentlichte Anthropic Claude for Chrome v1.0.80. Manifold Security testete es am selben Tag und stellte fest, dass ihre beiden Bug-Reports aus dem Mai Byte für Byte gegenüber v1.0.72 immer noch reproduzierbar waren. Jede andere Erweiterung in deinem Browser mit Skript-Zugriff auf claude.ai — eine Berechtigung, die Tausende Chrome-Erweiterungen anfordern — kann Claude still anweisen, Gmail zu öffnen, eine Nachricht zu lesen und darauf zu handeln. Kein Bestätigungsdialog. Keine Nutzeraktion.
Die Geschichte ist nicht "eine Erweiterung hatte einen Bug". Chrome-Erweiterungen schippern ständig Bugs. Die Geschichte ist, dass ein ausgeliefertes agentisches Browser-Produkt, nach neun Monaten Prüfung und einem öffentlichen "ClaudeBleed"-Vorfall im Rücken, sein Berechtigungsmodell immer noch an einem Ort durchsetzt, den ein Angreifer vollständig kontrolliert — dem Client — und das Tracking-Issue Resolved markiert, ohne dass sich der Code ändert.
Die beiden Fehler in einem Bild
Zwei unabhängige Bugs. Jeder alleine reicht, um jede hartkodierte Aufgabe auszulösen. Zusammen liefert einer den Trigger (gefälschter Klick), der andere die stille Ausführung (Auto-Eskalation).
Fehler #1 — die fehlende isTrusted-Prüfung
Jedes Event, das ein Browser dispatched, hat einen isTrusted-Boolean. Echte Nutzeraktionen — ein physischer Klick, ein Tastendruck, ein Touch — kommen mit isTrusted: true an. Alles, was JavaScript per dispatchEvent(new MouseEvent(...)) synthetisiert, kommt mit isTrusted: false an. Es ist das einzig zuverlässige User-vs-Code-Signal des Browsers, und es existiert genau, damit sicherheitskritische Handler sie unterscheiden können.
Das Content Script von Claude for Chrome lauscht auf Klicks auf das Element mit der ID #claude-onboarding-button und leitet, wenn der Klick zu einer von neun allowlisteten Task-IDs passt (usecase-gmail, usecase-gdocs, usecase-calendar, usecase-salesforce, plus DoorDash, Zillow und drei Onboarding-Challenges), den passenden Prompt an Claudes Side Panel zur Ausführung weiter.
Der Handler prüft event.isTrusted nie. In den Worten der Forscher: aus Sicht der Erweiterung ist ein gefälschter Klick von einem echten nicht unterscheidbar.
Das ist relevant wegen eines leicht übersehenen Architekturpunkts: jede andere installierte Chrome-Erweiterung mit content_scripts, die auf https://claude.ai/* matchen, teilt aus Chromes Sicht Claudes Origin und kann ein Skript in die Seite injizieren. Diese Berechtigung ist nicht exotisch — Passwort-Manager, Notiz-Clipper, Übersetzungstools, Ad-Blocker und unzählige "Produktivitäts"-Erweiterungen fordern sie routinemäßig an. Sobald ein Skript in dieser Seite läuft, ist das Dispatchen eines synthetischen Klicks auf #claude-onboarding-button etwa sechs Zeilen Code. Manifolds Report nennt genau diese Größe, um einen Punkt zu machen: der Fix ist ein if-Statement, der Exploit ist ein Dispatch-Aufruf.
Die Neun-Prompt-Allowlist war Anthropics frühere Milderung für ClaudeBleed — die Idee war "selbst wenn ein Klick gefälscht ist, kann nur eine feste Liste sicherer Tasks laufen". Dieses Modell zerbricht in dem Moment, wo "Gmail-Integration ausführen" auf der Liste steht. Gmail lesen und darauf handeln ist keine sichere Aufgabe.
- Die Lektion ist nicht "isTrusted hinzufügen" — sondern die dahinterliegende: eine Allowlist "sicherer" Agent-Tasks ist nur so sicher wie die unsicherste Aufgabe darauf. Feingranulare per-Integration-Nutzerzustimmung gehört an jeden dieser Trigger, nicht nur an die untrusted freeform ones.
Fehler #2 — ?skipPermissions=true in der Panel-URL
Chrome-Extension-Side-Panels haben ihre eigene URL, und deren Query-String ist im Panel per window.location.search lesbar. Claudes Side Panel liest einen skipPermissions-Parameter. Ist er "true", initialisiert das Panel mit permissionMode = "skip_all_permission_checks" — derselbe interne Modus wie wenn ein Nutzer manuell Act without asking aktiviert.
Das ist clientseitige, selbstbediente Privilege-Escalation. Das Panel fragt sich selbst um Erlaubnis und antwortet mit ja, basierend auf einem Wert, den das Panel selbst in seiner URL bekam — den alles, was chrome.sidePanel.open({...}) aufrufen oder das Panel navigieren kann, liefern kann.
Manifold bewertet dieses Szenario mit CVSS 9.6 Critical, weil es in diesem Modus keinen Bestätigungsdialog gibt: die neun allowlisteten Prompts führen still aus. Der synthetische-Klick-Fehler allein (mit dem normalen Bestätigungsdialog noch sichtbar) wird mit 7.7 High bewertet, weil ein Nutzer den Dialog prinzipiell noch bemerken könnte, bevor er Enter drückt.
Die richtige Form des Fixes ist nicht "URL-Parameter sanitizen". Es ist, dass Übergänge zwischen Berechtigungsmodi eine explizite, isTrusted-Nutzeraktion auf einem echten UI-Element erfordern sollten, nachdem das Panel geladen ist — nie einen Wert, den das Panel aus seiner eigenen URL, seinem eigenen Storage oder einem Message-Channel liest, auf dem eine andere Erweiterung senden kann. Das ist dieselbe architektonische Einschränkung, die Browser bereits auf Fullscreen-, Kamera- und Clipboard-Berechtigungen anwenden, und aus demselben Grund.
Warum "Resolved" ≠ gepatcht — das Prozessversagen
Die Timeline ist, was das zu einer Governance-Geschichte macht, nicht nur zu einer Code-Geschichte:
- Zwei separate Bug-Reports bei Anthropic gegen v1.0.72 eingereicht.
- Anthropic bestätigte beide. Report #1 wurde als Duplikat eines existierenden Trackers geschlossen; Report #2 als "informational" abgetan mit der Argumentation, der URL-Parameter sei "nur von der Erweiterung selbst genutzt" — genau die Annahme, die der Bug verletzt.
- Das umfassende "ClaudeBleed"-Issue wurde in Anthropics internem Tracking auf Resolved geflippt — offenbar auf der Stärke der Neun-Prompt-Allowlist-Milderung, nicht auf einem Fix für die beiden zugrundeliegenden Bugs.
- Acht Releases (v1.0.73 → v1.0.80) gingen zwischen Report und jetzt raus. Forscher re-verifizierten: der Click-Handler und die Panel-Init sind unverändert gegenüber der Version, die sie ursprünglich testeten.
- Kein CVE. Kein Anthropic-Advisory. Öffentlicher Blogpost + Hacker News + Branchenberichte. Stand dieser Seite: immer noch ungepatcht.
Zwei Failure-Modes, die es sich zu verinnerlichen lohnt, weil sie außerhalb dieser Geschichte üblich sind:
- Mitigation Collapse. Eine Milderung, die die Form eines Exploits ändert ("du musst jetzt einen von neun Buttons klicken"), wird als Fix behandelt. Wenn der Trigger für diese Buttons selbst fälschbar ist, fügt die Milderung keine Sicherheit hinzu — sie ändert nur das Angriffsrezept.
- "Resolved by design"-Drift. Bug #2 wurde geschlossen unter der Theorie, dass nur die Erweiterung selbst
skipPermissionssetzt. Das ist eine Beschreibung der Absicht, nicht der tatsächlichen Durchsetzung des Browsers. Alles mitsidePanel-Zugriff oder einer Umleitung durch die Panel-URL kann es auch setzen.
Beide Muster stehen aus einem Grund auf Security-Review-Anti-Pattern-Listen. Achte auf sie in deinem eigenen Code.
Was läuft, und welche Daten es erreichen kann
Die neun hartkodierten Task-IDs aus Manifolds Report:
| Kategorie | Task-IDs | Was der Prompt Claude ungefähr sagt |
|---|---|---|
usecase-gmail, usecase-gdocs, usecase-calendar | Gmail lesen (inkl. eines "unsubscribe from promo emails"-Flows, der die Inbox iteriert), Google-Docs-Kommentare lesen, Kalender-Verfügbarkeit lesen und Meetings erstellen | |
| CRM / Commerce | usecase-salesforce, usecase-doordash, usecase-zillow | Salesforce-Leads lesen und in Opportunities konvertieren; DoorDash-/Zillow-Flows durchgehen |
| Onboarding | drei Onboarding-Challenges | Geführte-Tour-Prompts |
Die Reichweite hängt davon ab, welche Connectoren das Opfer aktiviert hat. Ist Gmail verbunden, liest usecase-gmail Gmail. Ist Salesforce verbunden, berührt usecase-salesforce das CRM. Das Panel tut, was ein Nutzer bat — nur nicht dieser Nutzer und nicht jetzt.
- "Act without asking" ist kein spezieller Entwicklermodus. Es ist eine Checkbox in den Claude-for-Chrome-Einstellungen. Ist sie an, löst Fehler #1 allein echte Gmail-/Docs-/Kalender-/Salesforce-Reads aus. Ist sie aus, kann Fehler #2 (?skipPermissions=true) sie still für die Lebensdauer des Panels wieder aktivieren.
Drei Dinge, die du jetzt tun solltest (zwei Minuten)
- Claude-for-Chrome-Einstellungen → "Act without asking" deaktivieren. Bestätigungs-Prompts sind nervig, aber sie sind das einzige nutzersichtbare Signal, das Fehler #1 allein dir lässt.
- chrome://extensions → Details auf jeder → Site access. Alles, was auf All sites gesetzt ist oder claude.ai listet, kann ein Content Script in die Claude-Seite injizieren. Downgrade oder entferne die, denen du nicht aktiv vertraust. Passwort-Manager und Notiz-Clipper sind die zwei Kategorien, die doppelt geprüft werden sollten.
- In Claude → Einstellungen → Connectoren, trenne Gmail-/Docs-/Kalender-/Salesforce-Integrationen, auf die du nicht angewiesen bist. Die neun hartkodierten Tasks sind nur gegen tatsächlich verbundene Connectoren gefährlich.
Wenn du agentische Erweiterungen für ein ganzes Team betreibst, füge ein viertes hinzu: Laufzeit-Beobachtung dessen, was Agenten tatsächlich ausführen — nicht nur welche Berechtigungen sie halten. Beide Fehler bestehen einen Berechtigungs-Audit und scheitern an einer Verhaltensbeobachtung, weil sie den Agenten dazu bringen, Dinge zu tun, um die der Nutzer nie bat. Diese Lücke ist, wo Manifolds eigene Empfehlung landet, und sie generalisiert weit über dieses eine Produkt hinaus.
Chrome-Extension-Audit-Prompt für Claude
Here is my current chrome://extensions export (or a list I'll paste): {LIST}.
For each extension:
1. Is its "site access" set to "All sites" or does it match claude.ai? Flag those.
2. From its Chrome Web Store description, what content_scripts permissions does it plausibly require? Is claude.ai a required domain for its stated function?
3. Rate each on a "trust to run a script inside my Claude tab" scale from 1 (dedicated password manager from a known vendor) to 5 (random productivity extension with <10k installs).
4. Give me a two-column recommendation: KEEP AS-IS / RESTRICT TO SPECIFIC SITES / REMOVE — with a one-line reason per row.
Do not soften. If something looks sketchy, say sketchy.Das größere Muster — clientseitige Allowlists, agentischer Scope
Zoom aus Claude for Chrome heraus. Dieselbe Form zeigt sich in einer wachsenden Zahl agentischer Produkte:
- Ein vertrauenswürdiges UI (Erweiterung, Desktop-App, IDE-Plugin) exponiert einen Agenten, der echte Aktionen auf Nutzerdaten ausführen kann.
- Um das Risiko einzuschränken, fügt der Anbieter eine Allowlist von Tasks/Prompts/Tools hinzu, die der Agent ohne Bestätigung ausführen darf.
- Der Trigger für Einträge auf der Allowlist bleibt innerhalb des Clients — ein Klick, eine URL, eine gespeicherte Einstellung, eine Nachricht auf einem Channel, den andere Komponenten teilen.
- Jeglicher anderer Code in derselben Trust-Zone (derselbe Extension-Host, derselbe Origin, derselbe IPC-Bus) kann den Trigger fälschen.
Die Lektion, die jede Runde lehrt, ist dieselbe. Vgl. auch docs/security/agentic-browsers-same-origin.mdx (Agent-Reads-über-SOP), docs/security/coding-agents-under-attack.mdx (Auto-Approve als neue Angriffsfläche) und docs/security/prompt-injection.mdx (untrusted Content wird zu untrusted Instruktionen). Jede davon ist ein Fall von die Grenze wird gezogen, wo der Angreifer bereits steht.
Zwei Invarianten, die es wert sind, auf einen Post-it zu schreiben:
- Eine Berechtigungsprüfung, die der Angreifer aufrufen kann, ist keine Berechtigungsprüfung. Wenn irgendetwas von "jedes Skript auf dieser Seite", "jeder URL-Parameter", "jeder Storage-Wert" oder "jede postMessage von unbekanntem Origin" deinen Agenten von ask zu act flippen kann, gehört dieser Flip hinter eine
isTrusted-Aktion auf einem echten DOM-Element, das du gerendert hast. - Allowlists sind kein Ersatz für Zustimmung. Wenn irgendeine einzelne Aufgabe auf der Liste den Nutzer bei ungeforderter Ausführung überraschen würde (
read my Gmailqualifiziert), reduziert die Allowlist Angreiferwahl, nicht Angreiferwirkung.
Schnellcheck
Check yourself
0/4- v1.0.80 von Claude for Chrome (7. Jul. 2026) ist immer noch anfällig für die beiden Manifold-Bugs, die erstmals gegen v1.0.72 im Mai gemeldet wurden — synthetischer-Klick-Bypass der Neun-Prompt-Allowlist und Selbst-Eskalation via ?skipPermissions=true in der Panel-URL.
- Beide Bugs sind clientseitige Berechtigungsprüfungen. "Resolved" im Tracker bezog sich auf eine Milderung (die Allowlist), nicht auf die zugrundeliegenden Durchsetzungslücken.
- Jetzt: Act without asking ausschalten, prüfen, welche anderen Chrome-Erweiterungen Skripte in claude.ai injizieren können, und Connectoren trennen, die du nicht nutzt.
- Allgemeine Regel: eine Berechtigungsprüfung, die jedes Skript auf der Seite aufrufen kann, ist keine Berechtigungsprüfung. Modus-Übergänge müssen auf einer isTrusted-Aktion auf einem echten UI-Element reiten, nicht auf einem URL-/Storage-/Message-Wert.
Quellen & weiterführende Lektüre
- Manifold Security — ClaudeBleed Reopened: browser extensions can still push Claude for Chrome to read your Gmail (primäres technisches Write-up; Timeline, CVSS-Bewertungen, die Byte-identisch-Code-Beobachtung)
- The Hacker News — Researchers Say Claude for Chrome Flaw Lets Rogue Extensions Trigger Gmail Reads (Branchenberichterstattung; Anthropics öffentliche Antwort)
- BleepingComputer — Claude Chrome extension flaw lets malicious extensions trigger AI actions (Angriffsfläche, Berechtigungsanforderungen)
- TechRadar — The bypass is still six lines of JavaScript (Kontext, warum der Fix ein einzelnes Conditional ist)
- Verwandt auf AILmanac: Agentic Browsers Break the Same-Origin Policy, When Coding Agents Get Weaponized, Prompt Injection: the safety model you can't ignore
- OWASP — Top 10 for LLM Applications (LLM01 Prompt Injection & LLM06 Excessive Agency sind die beiden Kategorien, auf die diese Bugs mappen)