Samenvatting

Beveiligingsonderzoekers van LayerX hebben een kwetsbaarheid ontdekt in... Claude's Chrome-extensie (“Claude in Chrome”) maakt het voor elke extensie, zelfs een zonder speciale machtigingen, mogelijk om de extensie van Claude te kapen door er kwaadaardige instructies in te injecteren, alle gewenste informatie te extraheren en Claude namens hen actieve acties te laten uitvoeren.

LayerX meldde het probleem aan Anthropic. Anthropic antwoordde dat ze al op de hoogte waren van het probleem en dat het in de volgende versie van de extensie zou worden verholpen. Anthropic bracht echter slechts een gedeeltelijke oplossing uit, die de hoofdoorzaak van het probleem niet aanpakte, waardoor de kwetsbaarheid nog steeds kan worden misbruikt.

De fout zit hem in een instructie in de code van de extensie die elk script dat in de oorspronkelijke browser draait, in staat stelt te communiceren met Claude's LLM, maar niet controleert wie het script uitvoert. Hierdoor kan elke extensie een contentscript aanroepen (waarvoor geen speciale machtigingen nodig zijn) en opdrachten naar de Claude-extensie sturen.

Als onderdeel van ons onderzoek hebben we deze zwakte op verschillende manieren uitgebuit om aan te tonen hoe deze als wapen ingezet zou kunnen worden:

  • Een bestand uit een Google Drive-map halen en delen met een externe partij.
  • Een e-mail versturen namens de externe aanvaller.
  • Het stelen van broncode uit een privérepository op Github. 
  • De laatste vijf e-mails samenvatten, naar een externe gebruiker sturen en de verzonden e-mail verwijderen.

In de update van de extensie liet Anthropic de externe toegang open, maar voegde een extra laag interne beveiligingscontroles toe om te voorkomen dat extensies die in de "standaard" modus draaien, externe commando's kunnen uitvoeren. Door de extensie echter over te schakelen naar de "bevoorrechte" modus (zonder de gebruiker hiervan op de hoogte te stellen of om toestemming te vragen) werden deze controles omzeild en konden dezelfde externe commando's als voorheen worden uitgevoerd.

Om te illustreren hoe deze kwetsbaarheid werkt en welke gegevens ermee verkregen kunnen worden, is hieronder een demonstratievideo te zien. Deze video laat zien hoe een prototype-extensie, zonder enige machtigingen, kan schrijven naar de "gepatchte" versie (v.1.0.70) van de Claude for Chrome-extensie, deze opdracht geeft om naar de Google Drive van de gebruiker te gaan, een bestand met de naam "Top Secret" opent en dit deelt met een externe gebruiker.

Deze tekortkoming legt het onderliggende probleem bloot waarmee veel AI-tools kampen: in de race naar productiviteit, automatisering en de beste positie onder AI-leveranciers, wordt de vertrouwensgrens te ver opgetrokken en worden fundamentele beveiligingsaspecten verwaarloosd, waardoor de deur openstaat voor misbruik door kwaadwillenden.

Technisch overzicht

We hebben een kritieke ontwerpfout ontdekt in de Claude Chrome-extensie waardoor elke Chrome-extensie – zelfs een met nul opgegeven machtigingen – om het gedrag van Claude volledig te controleren en indirect namens de gebruiker te handelen via meerdere webdiensten.

De hoofdoorzaak is een schending van de vertrouwensgrens:

  • De extensie stelt een geprivilegieerde berichteninterface beschikbaar aan het hoofdsysteem. claude.ai LLM via externally_connectable, een manifestinstelling die definieert welke externe websites of extensies met uw extensie mogen communiceren. 
  • Het vertrouwt op de oorsprong (claude.ai) in plaats van de feitelijke uitvoeringscontext

Hierdoor kan elke JavaScript-code die binnen claude.ai wordt uitgevoerd – inclusief scripts die door een andere extensie worden geïnjecteerd – opdrachten met verhoogde bevoegdheden uitvoeren.

We tonen aan dat een minimale uitbreiding het volgende kan:

  • Voer willekeurige prompts uit
  • Doorbreek de ingebouwde vangrails van Claude's LLM.
  • Gebruikersbevestigingsprocessen overslaan
  • Manipuleer Claude's perceptie van de gebruikersinterface.
  • Gevoelige acties uitvoeren op meerdere sites (Gmail, Google Drive, GitHub)

Er zijn geen machtigingen, geen gebruikersinteractie en geen exploitketen nodig.

Impact

Deze kwetsbaarheid effectief doorbreekt het beveiligingsmodel van Chrome-extensies door een extensie zonder machtigingen toe te staan ​​de mogelijkheden van een vertrouwde AI-assistent over te nemen.

Een kwaadaardige extensie kan:

  • Gevoelige gegevens stelen (Gmail, Google Drive, GitHub)
  • Handelingen uitvoeren namens de gebruiker (e-mails verzenden, gegevens verwijderen, documenten delen)
  • Mechanismen voor gebruikerstoestemming omzeilen
  • Manipuleer AI-gestuurde besluitvorming

In de praktijk verandert dit Claude in een verwarde ondergeschikte die met gebruikersrechten door de aanvaller aangestuurde workflows uitvoert.

Waarom dit ernstig is

  • Geen toestemmingen vereist → zeer discreet en waarschijnlijk goedgekeurd door de beoordeling.
  • Werkt zoals bedoeld → geen exploitketen of kwetsbaarheidsketen nodig
  • Geen gebruikersinteractie vereist
  • Moeilijk te detecteren of toe te schrijven

Dit creëert een privilege-escalatie-primitief over extensies heenIets wat het beveiligingsmodel van Chrome juist expliciet probeert te voorkomen.

Technisch overzicht 

Afbeelding 1. Schending van de vertrouwensgrens in de Claude Chrome-extensie.

1. De fout bij het vaststellen van de vertrouwensgrenzen

De kwetsbaarheid is ontstaan ​​in het extensiemanifest:

Dit maakt het mogelijk voor elk script dat op claude.ai draait om met de extensie te communiceren:

Kernpunt:

  • De extensie vertrouwt op de herkomst
  • Maar kan geen onderscheid maken die wordt uitgevoerd binnen die oorsprong

2. Het verkrijgen van uitvoeringsrechten in de context van claude.ai

In plaats van scripts dynamisch te injecteren, hebben we een elegantere aanpak gebruikt:

  • Een minimale extensie gemaakt.
  • verklaard a inhoudsscript
  • Ik heb het zo geconfigureerd dat het in de modus draait. HOOFDwereld

Dit zorgt ervoor dat de uitvoering onderdeel uitmaakt van de pagina zelf – en niet van een geïsoleerde extensieomgeving.

3. Een gesprek voeren met de Claude-extensie

Chrome heeft de extensie-ID nodig, die openbaar beschikbaar is:

Vervolgens verstuurden we een bericht dat legitiem verkeer nabootste:

Omdat dit binnen claude.ai wordt uitgevoerd, wordt de afzender vertrouwd.

4. Het activeren van de promptuitvoering

We hebben een berichtverwerker gevonden die willekeurige prompts accepteert en doorstuurt: onboarding_taak.

Tot nu toe hebben we het volgende bereikt:

  • Externe promptinjectie in Claude
  • Volledige controle over zijn acties

5. Eerste hindernis: Toestemmingsmodel

Claude vereist gebruikersbevestigingen voor gevoelige acties zoals het verzenden van e-mails of het openen van externe diensten. Deze meldingen vereisen expliciete goedkeuring van de gebruiker.

Omzeilen: goedkeuringslus

Figuur 2. Goedkeuringscyclus

We ontdekten dat het herhaaldelijk versturen van "Ja, ga verder" uiteindelijk de bevestigingsprocessen op gang brengt, zelfs wanneer Claude expliciete verzoeken gestructureerde of specifieke invoer

Dit wijst op:

  • Bevestiging is op de toestand gebaseerd, niet op de intentie gebaseerd
  • Het systeem bindt goedkeuringen niet strikt aan specifieke acties.

Resultaat:

Gebruikerstoestemming kan programmatisch worden vervalst.

6. Tweede obstakel: Zichtbaarheid

We konden acties betrouwbaar in gang zetten, maar hadden geen direct inzicht in de uitvoering ervan.

Reden:

  • Claude rent in een zijpaneel (geïsoleerde context)
  • Geen DOM-toegang vanaf de pagina

bypass: Vertrouwen in indirecte uitvoering

We vertrouwden op:

  • Herhaaldelijk activeren
  • Waarneembare bijwerkingen (verzonden e-mails, gedeelde bestanden)

7. Strikte beperking: Handhaving van het beleid

Sommige acties werden consequent geblokkeerd, bijvoorbeeld: het extern delen van Google Drive-bestanden die eigendom zijn van de organisatie.

8. De definitieve doorbraak: manipulatie van de perceptie

Claude's besluitvorming is sterk afhankelijk van:

  • DOM-structuur
  • Zichtbare tekst
  • UI-semantiek
  • screenshot interpretatie

Deze invoerwaarden zijn volledig door de aanvaller gecontroleerd binnen de pagina.

Omzeilen: DOM-manipulatie

We hebben de gebruikersinterface dynamisch aangepast:

  • Gevoelige indicatoren zoals 'privé' en 'wachtwoord' zijn verwijderd.
  • UI-labels hernoemd (bijv. “Delen” → “Feedback vragen”)

Neem dan uitgegeven de prompt: Klik op de knop 'Feedback aanvragen'.

Vanuit Claude's perspectief was dit een onschuldige actie. In werkelijkheid leidde het echter tot het extern delen van bestanden.

Dit omzeilt de handhaving van beleid door de perceptie aan te vallen in plaats van de logica.

9. Volledige aanvalsketen

  1. Injecteer script in claude.ai (via nul-toestemming uitbreiding)
  2. Stuur berichten naar het Claude-extensienummer.
  3. Trigger willekeurig snelle uitvoering
  4. Bevestiging omzeilen via goedkeuringslus
  5. DOM manipuleren om Claude's perceptie veranderen
  6. Voer gevoelige acties uit die meerdere locaties omvatten.

Praktische voorbeelden gedemonstreerd

Om de uitvoering te vereenvoudigen, hebben we een externe shell in onze PoC-extensie geïmplementeerd. Dit moet niet als een aparte fase worden beschouwd.

Code uit een privé GitHub-repository halen:

Beperkte Google Drive-documenten extern delen:

Een e-mail versturen via afstandsonderwijs:

De laatste 5 e-mails in de inbox samenvatten, deze per e-mail naar een extern adres versturen en vervolgens de e-mail verwijderen om alle sporen te wissen:

Root Cause Analysis

Dit is geen op zichzelf staande kwetsbaarheid. maar a systemisch falen van het vertrouwensmodel:

  • Op oorsprong gebaseerd vertrouwen – Vertrouwen op claude.ai in plaats van de uitvoeringscontext

  • Ontbrekende authenticatielaag - Er bestaat geen mechanisme om de identiteit van de afzender van het bericht te verifiëren.

  • Zwakke handhaving van toestemming - Gebruikersgoedkeuringen zijn niet cryptografisch of semantisch gebonden aan acties.

  • Op perceptie gebaseerde beveiliging – Veiligheidsbeslissingen zijn gebaseerd op door de aanvaller gecontroleerd UI-signalen

Tijdlijn voor openbaarmaking:

  • Datum gerapporteerd:  27.4.2026
  • Betreffende versie: 1.0.69 (uitgebracht op 22 april 2026)
  • Reactie verkoper: Op 28 april antwoordde Anthropic als volgt: “Na beoordeling van deze melding hebben we vastgesteld dat het een duplicaat is van een eerdere melding over hetzelfde probleem. Een oplossing die de betreffende berichtafhandelaar verwijdert, is samengevoegd en zal worden opgenomen in een toekomstige release van de extensie."
  • Status herstellen: Anthropic heeft op 6 mei 2026 een bijgewerkte versie van de extensie uitgebracht (versie 1.0.70). In tegenstelling tot hun eerste reactie, extern_aansluitbaar De berichtafhandelaar werd niet verwijderd, maar Anthropic introduceerde wel extra goedkeuringsworkflows voor geprivilegieerde acties. Het overschakelen naar de "geprivilegieerde" modus, zelfs zonder melding of toestemming van de gebruiker, maakte het echter mogelijk om deze beveiligingscontroles te omzeilen en prompts in de Claude-extensie te injecteren, zoals voorheen. Het onderliggende probleem met de vertrouwensgrens bleef onder bepaalde operationele modi en initialisatiepaden van het zijpaneel exploiteerbaar.

Aanbevolen sanering

Na de update van Anthropic hebben we een significante verandering in het uitvoeringsmodel van de extensie geconstateerd. Acties die verhoogde browserinteractierechten vereisen – zoals navigatie, pagina-interactie of het samenvatten van inhoud – activeren nu een expliciete goedkeuringsprocedure in het Claude-zijpaneel.

Op het eerste gezicht lijkt dit het probleem te verhelpen. Omdat het zijpaneel in een geïsoleerde extensiecontext wordt uitgevoerd, kan een extensie zonder machtigingen niet rechtstreeks met deze prompts communiceren of deze programmatisch goedkeuren.

De genomen maatregelen zijn echter onvolledig en pakken het onderliggende probleem slechts gedeeltelijk aan.

Claude ondersteunt momenteel twee operationele modi:

  • Vraag eerst voordat je handelt. (de standaardmodus)
  • Handel zonder te vragen (een “bevoorrechte” modus)

De tweede modus bestaat omwille van de gebruiksvriendelijkheid, zodat Claude autonoom kan blijven werken zonder dat de gebruiker herhaaldelijk bevestigingen hoeft te geven.

Wanneer de extensie werkt in “Handel zonder te vragen. In deze modus wordt de nieuw geïntroduceerde goedkeuringslaag ineffectief. We konden betrouwbaar vaststellen wanneer Claude actief was en detecteren of de autonome uitvoeringsmodus was ingeschakeld. Eenmaal ingeschakeld, bleef het oorspronkelijke aanvalspad volledig exploiteerbaar via het bestaande externe communicatiekanaal.

Hierdoor kon een door een aanvaller beheerde extensie nog steeds willekeurige instructies aan Claude geven en geprivilegieerde browseracties activeren zonder dat verdere gebruikersinteractie nodig was.

Belangrijk is dat de oplossing zich richtte op het introduceren van een extra, op de gebruikersinterface gebaseerde machtigingslaag in plaats van het afdwingen van strikte validatie van externe berichtverzenders. Het kernprobleem met de vertrouwensgrens bleef daardoor ongewijzigd.

Alternatief misbruik van zijpanelen

De oplossing van Anthropic controleerde de initialisatiestroom van de geprivilegieerde modus niet. Hierdoor kunnen kwaadwillende extensies een sessie in de geprivilegieerde modus starten door misbruik te maken van de initialisatiestroom van het zijpaneel.

Hierdoor kon de aanvaller een alternatieve Claude-uitvoeringscontext creëren die de nieuw geïntroduceerde goedkeuringsprocedure omzeilde. Als gevolg hiervan kon de gebruiker, zelfs wanneer deze was geconfigureerd om te gebruiken, een alternatieve Claude-uitvoeringscontext creëren. Vraag eerst voordat je handelt.De aanvaller zou een apart zijpaneel kunnen creëren dat zich op dezelfde manier gedraagt ​​als Handel zonder te vragen modus.

Op dat moment kreeg de aanvaller weer onbeperkte controle over de door Claude aangestuurde browseracties, ongeacht de door de gebruiker ingestelde interactiemodus.

Beveiligingsimplicaties

De mogelijkheid om de beveiligingsmaatregel kort na de release te omzeilen, wijst erop dat het onderliggende architectuurprobleem niet volledig is opgelost.

De oplossing pakt het zichtbare symptoom aan – de goedkeuringsworkflow in de gebruikersinterface – maar pakt de onderliggende oorzaak niet aan: onvoldoende validatie van entiteiten die gemachtigd zijn om te communiceren met geprivilegieerde extensiefunctionaliteit.

Zolang extern aangeleverde berichten uitsluitend worden vertrouwd op basis van de context van de oorsprong in plaats van de geauthenticeerde uitvoeringscontext, kunnen ongeautoriseerde extensies op onbedoelde manieren blijven interageren met de geprivilegieerde interfaces van Claude.

Aanbevolen sanering

  • Introduceer authenticatietokens voor pagina-extensies (bijv. ondertekende verzoeken).

  • Beperk externally_connectable tot vertrouwde extensie-ID's in plaats van origins.

  • Koppel gebruikersgoedkeuringen aan:

    • Specifieke acties

    • Eenmalige tokens

    • Niet-herhaalbare flows