La conferința DEF CON 33 a fost prezentată o metodă de atac asupra extensiilor de browser care insera elemente ale interfeței în pagina vizionată. Aplicarea atacului asupra extensiilor cu manageri de parole poate duce la scurgerea informațiilor stocate în managerii de parole, cum ar fi datele de autentificare, informațiile despre cardurile de credit, datele personale și parolele unice pentru autentificarea cu doi factori. Problema afectează toți managerii de parole testați, inclusiv 1Password, Bitwarden, LastPass, KeePassXC-Browser, NordPass, ProtonPass și Keeper.
Metoda de atac se bazează pe faptul că extensiile de browser inserază un dialog cu solicitarea de completare automată a parolei direct pe pagina afișată, integrându-și elementele în DOM (Document Object Model) al acestei pagini. Dacă atacatorul are capacitatea de a rula codul său JavaScript pe pagină, de exemplu, prin exploatarea unei vulnerabilități XSS pe site, el poate manipula toate elementele din DOM, inclusiv pe cele introduse de extensiile browserului.
Printre altele, există posibilitatea de a face dialogul de confirmare transparent și de a suprapune spatial butonul din acest dialog cu butonul dialogului fals creat de atacator, care încurajează utilizatorul să facă clic. Dialoguri false pot include solicitări fictive de permisiuni pentru gestionarea cookie-urilor, bannere publicitare sau formulare cu captcha. Dacă se plasează dialogul fals sub dialogul transparent al managerului de parole și se aliniază locația butoanelor pe ecran, se poate obține ca clicul utilizatorului să se îndrepte către butonul de confirmare a completării datelor de autentificare din dialogul managerului de parole, deși utilizatorul va crede că a făcut clic, de exemplu, pe butonul de închidere a ferestrei publicitare.

Atacul constă în următorii pași:
- Crearea unui element invaziv pe pagină, care încurajează efectuarea unui clic.
- Adăugarea pe pagină a unei formulare web pentru autentificare sau completarea datelor personale.
- Setarea transparenței pentru formularul web („opacity: 0.001” în CSS).
- Folosirea metodei focus() pentru a seta focusul de introducere pe un câmp din formular, care duce la activarea dialogului de completare automată al managerului de parole.
- Căutarea dialogului managerului de parole apărut în DOM și setarea transparenței pentru acesta.
- Așteptarea unui clic de la utilizator pe un element vizibil intruziv de pe pagină, care, prin combinarea corespunzătoare a elementelor vizibile și invizibile, va duce la apăsarea pe un buton într-un dialog transparent și la completarea câmpurilor de către managerul de parole.
- Extracția datelor dintr-un formular web completat și trimiterea acestora pe serverul atacatorului.
Deoarece completarea automată a parametrilor de autentificare în managerul de parole este activată doar pentru site-urile la care acești parametri au fost salvați, pentru a organiza atacul este necesar să se poată rula propriul cod JavaScript pe site-ul atacat sau pe un subdomeniu. Astfel, pentru atac este necesar fie să obțineți un subdomeniu în același domeniu cu site-ul atacat, fie să găsiți o vulnerabilitate XSS pe site care permite inserarea codului propriului în conținutul afișat utilizatorului.
Se observă că mulți utilizatori folosesc un singur manager de parole atât pentru stocarea parametrilor de autentificare, cât și pentru generarea de parole unice pentru autentificarea în doi pași, ceea ce permite utilizarea metodei de atac analizată la completarea automată a parolelor unice. Ca exemplu, a fost demonstrat un atac asupra site-ului issuetracker.google.com, care prezintă o vulnerabilitate XSS. Pentru a obține parametrii de autentificare și codul pentru autentificarea în doi pași, este suficient să trimiteți utilizatorului un link care exploatează vulnerabilitatea XSS și să obțineți trei clicuri prin substituirea cererilor intruzive false (permisiunea de a procesa cookie-uri, permisiunea de personalizare și acceptarea politicii de confidențialitate).
Pe lângă site-urile cu vulnerabilități XSS, atacul poate fi efectuat și asupra serviciilor care oferă subdomenii tuturor doritorilor — majoritatea managerilor de parole, în configurația lor implicită, completează parametrii de autentificare nu doar pentru domeniul principal, ci și pentru subdomenii.
Atacul poate fi folosit și pentru a determina datele personale ale utilizatorului și detaliile cardurilor de credit salvate în managerul de parole. În acest caz, nu este necesară executarea codului JavaScript în contextul unui site străin, ci este suficient să se atragă victima pe o pagină de pe site-ul atacatorului - în cazul datelor personale, completarea formularelor web se face pe baza tipului acestora (adresă, număr de card de credit, nume complet), fără a fi legată de domeniu. Cea mai periculoasă este scurgerea detaliilor cardurilor de credit, deoarece managerii de parole completează nu doar numărul cardului, ci și data expirării și codul de verificare.
Cercetătorul care a identificat problema a testat 11 extensii de browser cu manageri de parole, având în total 39.7 milioane de instalări active, iar toate s-au dovedit a fi nesecurizate împotriva acestui tip de atac. Unii producători au lansat actualizări (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), încercând să blocheze atacul printr-o abordare ocolitoare. Alte extensii (KeePassXC-Browser, 1Password, iCloud Passwords, Enpass, LastPass, LogMeOnce) rămân în continuare fără soluții. Pentru a verifica manifestarea vulnerabilității în diferitele manageri de parole, a fost publicat un set de pagini de test.


Poziția dezvoltatorilor 1Password, care nu au lansat o soluție, se rezumă la faptul că vulnerabilitatea este fundamentală și nu este direct legată de o extensie de browser specifică, astfel că încercările de a o remedia pe partea extensiei blochează doar vectori de atac specifici, fără a soluționa problema de fond, care trebuie abordată în browser sau printr-o solicitare separată de confirmare înainte de completarea automată a câmpurilor. Se menționează că în 1Password deja se suportă afișarea unei cereri de confirmare înainte de completarea automată a detaliilor de plată și că în următoarea versiune va fi adăugată o opțiune pentru a afișa o astfel de cerere pentru toate tipurile de date completate automat (din cauza reducerii confortului de utilizare, această opțiune nu va fi activată implicit).
Printre metodele de protecție propuse de autorul studiului se menționează urmărirea modificărilor stilurilor elementelor inserate pe pagină utilizând API-ul MutationObserver, blocarea modificărilor prin Shadow DOM în modul «closed», monitorizarea transparenței elementelor, utilizarea API-ului Popover pentru afişarea dialogurilor, verificarea suprapunerii straturilor, dezactivarea temporară a procesării evenimentelor pointer (pointer-events:none) în toate elementele plutitoare în timpul afișării dialogului managerului de parole. În acest sens, pentru blocarea completă a clasei descrise, în cazul atacurilor, se recomandă implementarea unui API separate în cadrul browserului pentru protecție împotriva clickjacking-ului.
Ca metodă universală de protecție în browserele bazate pe motorul Chromium, utilizatorilor li se recomandă activarea modului de confirmare a accesului extensiilor la site (Setări extensiilor → „acces la site” → „on click”), în care extensia obține acces la site doar după ce se dă clic pe pictograma din partea dreaptă a barei cu adresa. Ca soluție alternativă, se menționează și dezactivarea completării automate a formularelor și copierea manuală a parolelor prin clipboard, dar apare problema scurgerii de date din clipboardul comun și riscul de a nu observa tentativele de phishing.
Sursa: opennet.ro
