Op de DEF CON 33-conferentie werd een aanvalsmethode gepresenteerd voor browserextensies die hun interface-elementen in de weergegeven pagina invoegen. Toepassing van de aanval op extensies met wachtwoordbeheerders kan leiden tot het lekken van opgeslagen informatie in deze beheerders, zoals authenticatieparameters, creditcardgegevens, persoonlijke gegevens en eenmalige wachtwoorden voor tweefactorauthenticatie. Het probleem betreft alle test-wachtwoordbeheerders, waaronder 1Password, Bitwarden, LastPass, KeePassXC-Browser, NordPass, ProtonPass en Keeper.
De aanvalsmethode is gebaseerd op het feit dat browserextensies een dialoogvenster voor het automatisch aanvullen van wachtwoorden rechtstreeks op de weergegeven pagina invoegen, waarbij ze hun elementen integreren in de DOM (Document Object Model) van die pagina. Als de aanvaller in staat is om zijn JavaScript-code op de pagina uit te voeren, bijvoorbeeld door een XSS-kwetsbaarheid op de site te misbruiken, kan hij alle elementen in de DOM manipuleren, inclusief de ingevoegde browserextensies.
Onder andere is het mogelijk om de bevestigingsdialoog transparant te maken en de knop in deze dialoog ruimtelijk te combineren met de knop van de vervalste dialoog die door de aanvaller is gemaakt en de gebruiker aanspoort om te klikken. Dergelijke vervalste dialogen kunnen gebruik maken van valse verzoeken om bevoegdheden voor Cookies, advertentiebanieren of formulieren met captcha's. Door de vervalste dialoog onder de transparante dialoog van de wachtwoordbeheerder te plaatsen en de locatie van de knoppen op het scherm te combineren, kan worden bereikt dat de klik van de gebruiker op de bevestigingsknop voor het invullen van de authenticatieparameters in de dialoog van de wachtwoordbeheerder terechtkomt, terwijl de gebruiker denkt dat hij bijvoorbeeld op de sluitknop van het advertvenster heeft geklikt.

De aanval bestaat uit de volgende stappen:
- Het creƫren van een opdringerig element op de pagina dat de gebruiker aanspoort om te klikken.
- Een webformulier op de pagina toevoegen voor inloggen of het invoeren van persoonlijke gegevens.
- De transparantie voor het webformulier instellen ("opacity: 0.001" in CSS).
- De focus() methode gebruiken om de invoerfocus op een veld in het formulier in te stellen, wat leidt tot het activeren van de automatische aanvuldialoog van de wachtwoordbeheerder.
- Het verschijnen van de wachtwoordbeheerderdialoog in de DOM zoeken en de transparantie voor deze instellen.
- Het wachten op een klik van de gebruiker op een zichtbaar opdringerig element op de pagina, dat bij de juiste combinatie van zichtbare en onzichtbare elementen zal leiden tot het klikken op de knop in de transparante dialoog en het invullen van velden door de wachtwoordbeheerder.
- Het extraheren van gegevens uit een ingevuld webformulier en deze naar de server van de aanvaller verzenden.
Aangezien de autofill van authenticatieparameters in de wachtwoordbeheerder alleen wordt geactiveerd voor websites waar deze parameters zijn opgeslagen, is het voor het organiseren van de aanval noodzakelijk om de mogelijkheid te hebben om je eigen JavaScript-code op de aangevallen website of in een subdomein uit te voeren. Dus, voor de aanval is het noodzakelijk om ofwel een subdomein te verkrijgen in hetzelfde domein als de aangevallen website, of een XSS-kwetsbaarheid op de site te vinden die het mogelijk maakt om je eigen code in de aan de gebruiker getoonde inhoud in te voegen.
Het valt op dat veel gebruikers ƩƩn wachtwoordbeheerder gebruiken voor zowel het opslaan van inlogparameters als voor het genereren van eenmalige wachtwoorden voor twee-factor-authenticatie, wat het mogelijk maakt om de besproken aanvalsmethode te gebruiken bij het autofill van eenmalige wachtwoorden. Als voorbeeld wordt een aanval op de website issuetracker.google.com gedemonstreerd, die een XSS-kwetsbaarheid bevat. Om inlogparameters en de code voor twee-factor-authenticatie te verkrijgen, is het voldoende om de gebruiker een link te sturen die de XSS-kwetsbaarheid exploiteert en drie klikken te bereiken door middel van het vervangen van valse opdringerige verzoeken (Cookies inschakelen, personalisatie toestaan en akkoord gaan met het privacybeleid).
Naast websites met XSS-kwetsbaarheden kan de aanval worden uitgevoerd op diensten die subdomeinen aan iedereen bieden ā de meeste wachtwoordbeheerders vullen standaard niet alleen de inlogparameters voor het hoofd-domein in, maar ook voor subdomeinen.
Een aanval kan ook worden gebruikt om persoonlijke gegevens van de gebruiker en creditcardgegevens die in de wachtwoordmanager zijn opgeslagen, te identificeren. Voor het lekken van dergelijke gegevens is het niet nodig om JavaScript-code in de context van een vreemde site uit te voeren; het is voldoende om het slachtoffer naar een pagina op de site van de aanvaller te lokken ā in het geval van persoonlijke gegevens wordt het invullen van webformulieren uitgevoerd op basis van hun type (adres, creditcardnummer, naam), zonder verband met een domein.. Het lekken van creditcardgegevens is het gevaarlijkst, omdat wachtwoordmanagers niet alleen het kaartnummer, maar ook de vervaldatum en de verificatiecode invullen.
De onderzoeker die het probleem ontdekte, testte 11 browserextensies met wachtwoordmanagers, die in totaal 39,7 miljoen actieve installaties omvatten, en al deze extensies bleken niet beschermd tegen dit soort aanvallen. Sommige fabrikanten hebben updates uitgebracht (NordPass 5.13.24, ProtonPass 1.31.6, RoboForm 9.7.6, Dashlane 6.2531.1, Keeper 17.2.0, Enpass 6.11.6, Bitwarden 2025.8.1), waarin ze probeerden de aanval op een indirecte manier te blokkeren. Andere extensies (KeePassXC-Browser, 1Password, iCloud Passwords, Enpass, LastPass, LogMeOnce) zijn vooralsnog onopgelost. Om de kwetsbaarheid in verschillende wachtwoordmanagers te testen, is een set testpagina's gepubliceerd.


De positie van de ontwikkelaars van 1Password, die geen oplossing hebben uitgebracht, is dat de kwetsbaarheid fundamenteel is en niet direct gerelateerd is aan een specifieke browserextensie. Pogingen om deze aan de zijde van de extensie op te lossen blokkeren slechts bepaalde aanvalsvectors, maar lossen het probleem zelf niet op, dat moet worden aangepakt in de browser of door een aparte bevestiging te vragen voordat velden automatisch worden ingevuld. Het wordt vermeld dat 1Password al de mogelijkheid ondersteunt om een bevestigingsverzoek weer te geven voordat betalingsgegevens worden automatisch ingevuld en dat in de volgende versie de optie zal worden toegevoegd om een dergelijk verzoek weer te geven voor alle soorten automatisch ingevulde gegevens (vanwege de verminderde gebruiksvriendelijkheid zal deze optie niet standaard worden geactiveerd).
Onder de door de auteur van het onderzoek aangeboden beveiligingsmethoden wordt het volgen van de veranderingen in de stijlen van elementen die op de pagina worden ingevoegd met behulp van de MutationObserver API, het blokkeren van wijzigingen via Shadow DOM in de 'closed' modus, het monitoren van de transparantie van elementen, het gebruik van de Popover API voor het weergeven van dialoogvensters, het controleren van de overlappen van lagen, en het tijdelijk uitschakelen van de verwerking van pointer-events (pointer-events:none) in alle zwevende elementen tijdens het weergeven van het wachtwoordbeheerder dialoogvenster genoemd. Voor een volledige blokkering van de beschreven klasse is het aanbevolen om op browserniveau een aparte API voor bescherming te implementeren tegen clickjacking.
Als een universele beschermingsmethode wordt gebruikers op browsers die zijn gebaseerd op de Chromium-engine aangeraden om de modus voor bevestiging van toegang van de extensie tot de site in te schakelen (Instellingen van de extensie ā 'site access' ā 'on click'), waarbij de extensie alleen toegang tot de site krijgt na een klik op het pictogram in de rechterbovenhoek van de adresbalk. Als een alternatieve beschermingsmethode wordt ook het uitschakelen van het automatisch invullen van formulieren en het handmatig kopiĆ«ren van wachtwoorden via het klembord genoemd, maar hierbij ontstaat het probleem van datalekken uit het gedeelde klembord en het gevaar om phishingpogingen niet op te merken.
Bron: opennet.ru
