Prohlížeč (javascript) dostane možnost enumerovat a přistupovat k lokálním USB zařízením. Přes síť ne.
Znamená to, že libovolný skript třeba v reklamě si bude moct prolézt uživatelovy periferie a zkusit něco. Minimálně na fingerprinting to bude úplná paráda, protože serialNumber tahle API číst umožňuje a velká většina USB zařízení je má skutečně unikátní.
Nepůjde to automaticky, je to možné spouštět jen v eventu od nějaké interakce (např. kliknutí), ale přimět lidi na něco kliknout je hračka (třeba "⨯" v pop-over reklamě).
3. 1. 2023, 10:19 editováno autorem komentáře
Prohlizece to nejspis budou blokovat, a budou se ptat zda uzivatel chce povolit strance xyz pristoupit k USB zarizeni.
Jenze hadam tak 50 % lidi ma problem rozlisit zda to dialogove okno je od prohlizece a nebo od webove stranky.
Sleduju sve kluky na prvnim stupni zakladky, a jen koukam jaky maji bordel v tom co je internet, webova stranka, jak se to lisi od programu v pocitaci, co muze fungovat bez 'wifi' a co ne. A to se jim to snazim postupne vysvetlovat. Vetsina uzivatelu tohle asi prestane rozlisovat uplne.
Tohle se už běžně používá třeba na programovaní Micro:bitu z https://makecode.microbit.org/
A ano, Chrome se před povolením přístupu zeptá.
Přes síť ne.
No nevím. Dokážu si představit triviální scénář: javascriptový kód načtený přes body-onload ihned po dotáhnutí stránky šahá na USB zařízení, uživatel kliká jako obvykle na "povolit", aniž by četl obsah hlášky, protože přece potřebuje honem na tu stránku s online hrou, následně data z USB zařízení odesílá skript ajaxovými requesty na server, případně nechává spojení otevřené, aby sever mohl zpět posílat "upřesňující" dotazy...
Proti hloupému uživateli není obrany, ale tohle opravdu smrdí backdoorem.
Jak je zmíněno níže, funkci WebUSB lze ověřit v chromiovém prohlížeči. Funguje např. https://codesandbox.io/s/goubn .
Mě se sandbox ptá na všechna USB zařízení, dokonce separátně na bezdrátovou myš a na její přijímač. Také vidí čtečku smartcard, která je zjevně interně napojená na USB. Musím zvolit, které zařízení chci připojit.
Skutečně mi přijde, že lze mnohem snadněji odsouhlasit cookies a polohu/kameru a tím ukázat, kdo jsem.
uživatel kliká jako obvykle na "povolit", aniž by četl obsah hlášky, protože přece potřebuje honem na tu stránku s online hrou,
Jenže za tohle nemůžou tak úplně jen uživatelé. Je to způsobené nadměrným používáním různých confirm hlášek. Jen když mám čistý FF profil tak abych si našel stránku a dostal se na ni musím podtvrdit minimálně 4 hlášky (1 import že nechci, 2 barvičky firefoxu, 3 cookies a šmírovací pravidla na google, 4 cookies na cílovém webu). Na každém webu na mě kvůli (zprominutim fakt nepovedenému) zákonu v EU vyskočí další confirm na cookies. Ty uživatelé z toho musejí být reálně otrávení a člověk funguje tak, že pokud ho něco moc otravuje, začne to ignorovat a automaticky klikat na Accept (nebo Reject/Deny, záleží člověk od člověka)
Není to nic z toho.
WebUSB už je v prohlížečích (používajících jádro Blink) implementováno a umožňuje JavaScriptu v prohlížeči (po té, co uživatel schválí přístup – podobně jako třeba přístup k poloze, ke kameře nebo k mikrofonu) komunikovat s USB periferiemi.
WebUSB API umožňuje, aby v rámci zjišťování dostupných USB zařízení o sobě USB zařízení zveřejnilo nějaké informace, např. odkaz na webovou stránku toho zařízení („landing page“). Ta záplata do Linuxového jádra umožňuje zveřejnit tu URL landing page pro USB zařízení. V patchi se píše „Linux-based USB gadgets“, což nevím, jestli si vykládat jako USB zařízení založená na Linuxu.