Na konferenci DEF CON 33 byla představena metoda útoku na prohlížečové doplňky, které vkládají své prvky uživatelského rozhraní do zobrazené stránky. Aplikace útoku na doplňky s manažery hesel může vést k úniku informací uložených v manažerech hesel, jako jsou autentizační údaje, údaje o kreditních kartách, osobní údaje a jednorázová hesla pro dvoufaktorovou autentizaci. Problém se týká všech testovaných manažerů hesel, včetně 1Password, Bitwarden, LastPass, KeePassXC-Browser, NordPass, ProtonPass a Keeper.
Metoda útoku je založena na tom, že prohlížečové doplňky vkládají dialog s požadavkem na automatické doplnění hesla přímo na zobrazovanou stránku, integrujíce své prvky do DOM (Document Object Model) této stránky. Pokud útočník má možnost spustit svůj JavaScriptový kód na stránce, například zneužitím XSS zranitelnosti na webu, může manipulovat se všemi prvky v DOM, včetně vkládaných prohlížečových doplňků.
Mezi dalšími možnostmi je možné učinit potvrzovací dialog průhledným a prostorově sladit tlačítko v tomto dialogu s tlačítkem vkládaného dialogu vytvořeného útočníkem, který pobízí uživatele k kliknutí. Jako takové vkládané dialogy mohou být použity fiktivní žádosti o oprávnění k práci s cookies, reklamní bannery nebo formuláře s CAPTCHA. Umístěním vkládaného dialogu pod průhledný dialog manažera hesel a sladěním pozice tlačítek na obrazovce lze dosáhnout toho, že kliknutí uživatele připadne na tlačítko potvrzení vyplnění autentizačních údajů v dialogu manažera hesel, ačkoli si uživatel bude myslet, že klikl například na tlačítko pro zavření okna s reklamou.

Útok spočívá v následujících krocích:
- Vytvoření vtíravého prvku na stránce, který podněcuje ke kliknutí.
- Přidání webového formuláře pro přihlášení nebo vyplnění osobních údajů na stránku.
- Nastavení průhlednosti pro webový formulář (‘opacity: 0.001’ v CSS).
- Použití metody focus() pro nastavení zaostření na pole ve formuláři, což vede k aktivaci dialogu pro automatické doplnění manažera hesel.
- Vyhledání zobrazeného dialogu manažera hesel v DOM a nastavení jeho průhlednosti.
- Očekávání kliknutí uživatele na zřejmém rušivém prvku na stránce, který při správném zkombinování viditelných a neviditelných prvků povede k stisknutí tlačítka v průhledném dialogu a vyplnění polí manažerem hesel.
- Vytahování dat z vyplněného webového formuláře a jejich odeslání na server útočníka.
Jelikož automatické vyplňování parametrů autentizace v manažeru hesel se aktivuje pouze pro weby, na nichž byly tyto parametry uloženy, pro realizaci útoku je nutné mít možnost spustit svůj JavaScriptový kód na napadeném webu nebo v subdoméně. Pro útok je tedy zapotřebí buď získat subdoménu v téže doméně jako napadený web, nebo najít XSS zranitelnost na stránce, která umožní vložení vlastního kódu do výstupního obsahu uživateli.
Je známo, že mnozí uživatelé používají jeden manažer hesel jak pro ukládání přihlašovacích údajů, tak pro generování jednorázových hesel pro dvoufaktorovou autentizaci, což umožňuje využití tohoto útočného metody při automatickém vyplnění jednorázových hesel. Jako příklad byla demonstrována útok na web issuetracker.google.com, obsahující XSS zranitelnost. Pro získání přihlašovacích údajů a kódu pro dvoufaktorovou autentizaci stačí uživateli poslat odkaz, který využívá XSS zranitelnost, a zajistit tři kliknutí prostřednictvím nahrazení fiktivními rušivými dotazy (povolení zpracování cookie, povolení personalizace a souhlas s politikou ochrany soukromí).
Kromě webů s XSS zranitelnostmi může být útok proveden na služby, které poskytují subdomény všem zájemcům – většina manažerů hesel ve výchozí konfiguraci vykonává vyplnění přihlašovacích údajů nejen pro hlavní doménu, ale i pro subdomény.
Útok může být také použit k určení osobních údajů uživatele a údajů o kreditních kartách uložených v správci hesel. K úniku těchto údajů přitom není nutné spouštět JavaScriptový kód na cizím webu; stačí, když se oběť dostane na stránku útočníka — v případě osobních údajů se vyplňují webové formuláře na základě jejich typu (adresa, číslo kreditní karty, jméno a příjmení), bez vazby na domain. Nejnebezpečnější je únik údajů o kreditních kartách, protože správci hesel doplňují nejen číslo karty, ale také datum vypršení platnosti a kontrolní kód.
Výzkumník, který problém odhalil, otestoval 11 rozšíření prohlížeče se správci hesel, která za společně činí 39,7 milionu aktivních instalací, a všechny byly vystaveny tomuto typu útoků. Někteří výrobci vydali aktualizace (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), v nichž se pokusili obcházkovým způsobem zablokovat provádění útoku. Jiná rozšíření (KeePassXC-Browser, 1Password, iCloud Passwords, Enpass, LastPass, LogMeOnce) zatím zůstávají neopravena. Pro ověření projevů zranitelnosti v různých správcích hesel byl zveřejněn soubor testovacích stránek.


Postoj vývojářů 1Password, kteří nevydali opravu, spočívá v tom, že zranitelnost je základní a není přímo spojena s konkrétním prohlížečovým rozšířením, takže pokusy o její odstranění na straně rozšíření pouze blokují jednotlivé vektory útoku, ale neodstraňují samotný problém, který je potřeba řešit v prohlížeči nebo žádostí o samostatné potvrzení před automatickým vyplněním polí. Bylo zmíněno, že v 1Password již podporují zobrazení potvrzovacího požadavku před automatickým vyplněním údajů o platbách a v dalším vydání bude přidána možnost pro zobrazení takového požadavku pro všechny typy automaticky vyplňovaných dat (kvůli snížení uživatelského komfortu nebude tato možnost ve výchozím nastavení aktivována).
Mezi metodami ochrany uvedenými autorem studie se zmiňuje sledování změn stylů prvků vložených na stránku pomocí API MutationObserver, blokování změn přes Shadow DOM v uzavřeném režimu, monitorování nastavení průhlednosti prvků, využití API Popover pro zobrazování dialogů, kontrola překrývání vrstev a dočasné vypnutí zpracování událostí ukazatele (pointer-events:none) u všech plovoucích prvků během zobrazení dialogu správce hesel. Pro úplné blokování tohoto třídy, se doporučuje na úrovni prohlížeče implementovat zvláštní API pro ochranu proti clickjacking.
Jako univerzální metoda ochrany v prohlížečích založených na enginu Chromium je doporučeno, aby uživatelé povolili režim potvrzení přístupu rozšíření na web (Nastavení rozšíření → „site access“ → „on click“), kdy rozšíření získá přístup na web pouze po kliknutí na ikonu v pravé části panelu s adresním řádkem. Jako obchvat ochrany se také zmiňuje vypnutí automatického vyplňování formulářů a ruční kopírování hesel prostřednictvím schránky, avšak toto s sebou nese problém s únikem dat ze sdílené schránky a nebezpečí nezaznamenání pokusů o phishing.
Zdroj: opennet.ru
