DEF CON 33 konverentsil esitati rünnakumeetod brauserilaiendite vastu, mis sisestavad oma liideselemente vaadatavatele lehtedele. Rünnaku rakendamine paroolide haldamise laienditele võib viia infokadu, mis on salvestatud paroolihalduritesse, sealhulgas autentimise parameetrid, krediitkaardi andmed, isikuandmed ning ühekordsed paroolid kahefaktorilise autentimise jaoks. Probleem puudutab kõiki testitud paroolihaldureid, sealhulgas 1Password, Bitwarden, LastPass, KeePassXC-Browser, NordPass, ProtonPass ja Keeper.
Rünnakumeetod põhineb sellel, et brauserilaiendid sisestavad automatiseeritud parooli sisestamise dialooge otse kuvavale lehele, integreerides oma elemendid antud lehe DOM-i (dokumendi objekti mudel). Kui ründajal on võimalik oma JavaScripti koodi lehe peal käivitada, näiteks kasutades saidi XSS-august, saab ta manipuleerida kõigi DOM-i elementidega, sealhulgas sisestatud brauserilaienditega.
Muuhulgas on võimalus muuta kinnituse dialoog läbipaistvaks ja koondada nupp selles dialoogis ründaja loodud vale dialooge, mis manitseb kasutajat klikkima. Selliste vale dialoogide hulka võivad kuuluda vale autoriseerimisnõuded Cookies'i töötlemiseks, reklaambännerid või CAPTCHA vormid. Asetades vale dialooge läbipaistva paroolihalduri dialooge kohakuti ja joondades nuppude asukohad ekraanil, on võimalik saavutada, et kasutaja klikk on suunatud paroolihalduri autentimise parameetrite täitmise kinnitamise nuppule, kuigi kasutaja arvab klikinud näiteks reklaami sulgemise nuppu.

Rünnak koosneb järgmistest sammudest:
- Kutsuva elemendi loomine lehel, mis manitseb kliki sooritama.
- Veebivormi lisamine sisenemiseks või isikuandmete täitmiseks.
- Veebivormi läbipaistvuse seadmine ("opacity: 0.001" CSS-is).
- focus() meetodi kasutamine, et seada sisestusfookus vormi väljale, mis aktiveerib paroolihalduri automaatse täitmise dialooge.
- Paroolihalduri dialooge otsimine DOM-is ja nende läbitavaks seadmine.
- Kasutaja kliki ootamine nähtaval kutsuval elemendil lehe peal, mis õige elementide segunemise korral viib klikkimiseni läbipaistva dialoogis oleva nupule ja paroolihalduri väljade täitmisele.
- Andmete väljavõtmine täidetud veebivormist ja nende saatmine ründaja serverisse.
Kuna paroolihalduri autentimise parameetrite automaatne täitmine aktiveeritakse ainult veebilehtedel, mille jaoks need parameetrid on salvestatud, tuleb rünnaku korral kasutada oma JavaScripti koodi käivitamiseks ründatava saidi või alamsüsteemi osi. Seega tuleb kas saada alamsüsteem samas domeenis, millega rünnatav sait asub, või leida saidil XSS-augud, mis võimaldavad oma koodi kasutajale suunatud sisu integreerida.
Märgitakse, et paljud kasutajad kasutavad ühte paroolihaldurit nii sisenemisparameetrite salvestamiseks kui ka ühekordsete paroolide genereerimiseks kahefaktorilise autentimise jaoks, mis võimaldab kasutada arutletud rünnakumeetodit ühekordsete paroolide automaatse täitmise korral. Näiteks demonstreeritakse rünnakut saidile issuetracker.google.com, mis sisaldab XSS-augus. Sisenemise parameetrite ja kahefaktorilise autentimise koodi saamiseks piisab kasutajale XSS augustavat linki saatmisest ja kolme kliki saavutamisest vale kooreütleude abil (Cookies'i töötlemise nõusolek, isikupärastamise nõusolek ja privaatsuspoliitikaga nõustumise nõusolek).
Peale XSS-augudega saitide võib rünnakut sooritada teenustele, mis pakuvad alamsüsteeme kõigile soovijatele - enamiku paroolihaldurite vaikeseades teostatakse sisenemisparameetrite täitmine mitte ainult põhijuhiks, vaid ka alamsüsteemide jaoks.
Rünnakut saab kasutada ka kasutaja paroolihalduris salvestatud isikuandmete ja krediitkaardi andmete määramiseks. Sel juhul pole eeldatud vajalikke JavaScripti koodi käitamiseks teise saidi kontekstis ja piisab, kui petta ohver ründaja saidile - isikuandmete täitmine veebivormidel toimub nende tüübi alusel (aadress, krediitkaardi number, nimi), seondumata. domaadi. Kõige ohtlikum on krediitkaardiandmete lekkimine, kuna paroolihaldurid sisestavad mitte ainult kaardi numbri, vaid ka kehtivuse kuupäeva ja turvakoodi.
Probleemi avastanud teadlane testis 11 paroolihalduri brauserilaiendust, millel on kokku 39,7 miljonit aktiivset installatsiooni, ja kõik nad olid selliste rünnakute suhtes kaitsetud. Mõned tootjad vabastasid uuendused (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), mis püüdsid ringiga rünnakut blokeerida. Teised laiendused (KeePassXC-Browser, 1Password, iCloud Passwords, Enpass, LastPass, LogMeOnce) jäävad kuni praegu parandamata. Haavatavuse ilmnemise testimiseks erinevates paroolihaldurites on avaldatud testlehtede kogum.


1Passwordi arendajate seisukoht, kes ei ole parandust välja andnud, on, et haavatavus on fundamentaalne ja ei ole otseselt seotud konkreetse brauserilaiendusega, seetõttu blokeerivad katsetused selle kõrvaldamiseks ainult üksikuid rünnakute suundi, kuid ei lahenda ise probleemi, mida tuleb lahendada brauseris või eraldi kinnituse nõudmise kaudu enne automaatsete väljade täitmist. Mainitakse, et 1Password toetab juba makseparameetrite automaatse täitmise eel kinnitusküsimuse kuvamist ning järgmises väljaandes lisatakse võimalus sarnase küsimuse kuvamiseks kõikide automaatsete täidetavate andmete liikide jaoks (kasutuse mugavuse vähenemise tõttu ei aktiveerita sellist võimalust vaikimisi).
Uuringu autori poolt pakutud kaitsemeetodite seas mainitakse leheküljel sisestatud elementide stiilide muudatuste jälgimist API MutationObserver abil, muudatuste blokeerimist Shadow DOMi «suletud» režiimis, elementide läbipaistvuse jälgimist, API Popoveri kasutamist dialoogide kuvamiseks, kihistumise kontrollimist, näidikunäidikute (pointer-events:none) ajutist väljalülitamist kõigis hõljuvates elementides paroolihalduri dialooge kuvades. Samuti on soovitatav täieliku kirjelduse klassi blokeerimiseks rakendada brauseritasemel eraldi API kaitseks klikkide pistmiseks.
Üks universaalseid kaitsemeetodeid Chromiumi põhistel brauseritel on soovitus aktiveerida laienduse kinnitamise režiim saidile (Laienduse seaded → „saidile juurdepääs“ → „kliki pealt“), mille korral laiendusel on juurdepääs saidile ainult pärast ikoonile klõpsamist aadressiriba paremas servas. Alternatiivse kaitsemeetodina mainitakse ka automaatse täitmise keelamist ja paroolide käsitsi kopeerimist lõikepuhvrisse, kuid see tekitab probleemi ühisest lõikepuhvrist andmete leke ja oht jääda märkamata kalapüügi katsetele.
Allikas: opennet.ru
