FragAttacks, následník KRACK
FragAttacks, tedy fragmentation and aggregation attacks, jsou souborem zranitelností, které je teoreticky možné zneužít k útokům na Wi-Fi zařízení a tudíž k útokům na jejich často nic netušící uživatele.
Je-li útočník v rádiovém dosahu své oběti, může popisované techniky použít ke krádeži uživatelských dat, stejně jako prostému útoku na samotná zařízení. Tři z popisovaných zranitelností rodiny FragAttacks jsou přitom v samotném Wi-Fi standardu, tom jak funguje, a tudíž se dotýkají takřka všech Wi-Fi zařízení (až na výjimky). Další zranitelnosti pak staví na široce rozšířených chybách v implementaci Wi-Fi standardu v produktech a zařízeních. Experimenty autorů ukazují, že všechna Wi-Fi zařízení na světě jsou postižena alespoň jednou z popisovaných chyb, přičemž většina produktů jich obsahuje více.
Chyby přitom dopadají na Wi-Fi zařízení a jejich bezpečnostní protokoly bez ohledu na stáří. Ani původní WEP, ani nejnovější WPA3 z roku 2018 nejsou ušetřeny. Přitom právě chyba KRACK, která vedla k pádu bezpečnosti WPA2, byla před lety jedním ze spouštěčů dalšího výzkumu, který nyní vedl k představení chyb FragAttacks.
Dobré je, že popisované chyby je těžké zneužít, neb buď vyžadují interakci uživatele, nebo jsou možné jen s nějakým nezvyklým nastavením sítě. V důsledku tak reálným problémem nově popsaných chyb jsou ty, které plynou z chybné implementace, nikoli samotných Wi-Fi standardů.
To hlavní na závěr úvodu: chyby byly obšírně řešeny v období posledních devíti měsíců s členy Wi-Fi Alliance a ICASI, takže pokud pro vaše zařízení bude vydána aktualizace, je vše v pořádku. Tam, kde výrobce podporu svých zařízení neřeší, je nutné si hlídat, aby například komunikace s webovými stránkami šla pouze přes HTTPS, nikoli přes nešifrovaný protokol HTTP.
Ukázka a důsledky
Ukázka ilustruje, jak lze útoky využít. První možností pak samozřejmě je zkrátka získání citlivých dat nějakého uživatele (například přihlašovací údaje). Druhou možností je využít útoku k následnému získání přístupu k dalším zařízením v síti, neb internet věcí a různá smart zařízení jsou dnes už často součástí domácností a jde přitom často o zařízení, která jejich výrobce neaktualizuje.
Obecné doporučení je jasné: používat HTTPS (resp. HSTS) pokud možno všude. Můžeme do kontextu přidat právě probíhající přechod webových prohlížečů na striktně HTTPS spojení s webovými servery/stránkami.
Jednotlivé typy útoků
Předně tu máme plaintext injection. Několik implementací chyb zde může být zneužito k prosté injektáži rámců do chráněné Wi-Fi sítě. Útočník může vkládat nešifrované rámce do komunikace Wi-Fi tak, že například vnutí do této komunikace vlastní upravený DNS server a uživatele tak přesměruje někam jinam (ukazuje video výše). Zde samozřejmě aby došlo k nějaké škodě, je potřeba součinnost uživatele, který přehlédne varování prohlížeče o tom, že dané spojení není v pořádku. U routerů lze tuto techniku použít také k obcházení NATu/firewallu (ukázka ve videu s napadením starého PC s Windows 7).
Pokud si položíte otázku, jak může útočník sestavit nešifrovaný Wi-Fi rámec tak,a by jej podstrčil danému Wi-Fi zařízení, tak odpověď je jednoduchá: mnohá Wi-Fi zařízení prostě akceptují i nešifrované rámce i ve Wi-Fi spojení, které je chráněné. Útočník tak nemusí realizovat žádné speciální kejkle. Autor metody otestoval dva ze svých čtyř routerů a zjistil, že toto umožňují, stejně tak se chovají i IoT přístroje a mnohé smartphony.
Různá zařízení pak také akceptují agregované rámce s plaintextem, které vypadají jako handshake zprávy. Útočník tak může například poslat agregovaný rámec, kde první obsahuje handshake zprávu a druhý již „zlý“ paket, který chce vložit do komunikace. Zařízení pak jednoduše akceptuje handshake a provede celý agregovaný rámec. A v neposlední řadě pak různá zařízení zpracovávají broadcast rámce jako normální nefragmentované a některá je dokonce akceptují i když přijdou nešifrované. To útočník může využít k injektování paketů prostým zapouzdřením ve druhém rámci běžného plaintext broadcast rámce.
Mezi chyby v návrhu Wi-Fi standardu patří aggregation attack. Agregování rámců u Wi-Fi zvyšuje rychlost a propustnost sítě kombinováním malých rámců do velkých, agregovaných. Implementováno je to tak, že hlavička každého rámce obsahuje příznak (flag), který indikuje, zda přenášená data obsahují jeden rámec, nebo agregovaný rámec. Právě tento is aggregated
příznak neprochází autentizací a lze jej měnit útočníkem – ten je pak schopen injektovat libovolný svůj síťový paket tím, že přiměje oběť, aby se připojila k jeho serveru a následně nastaví tento příznak is aggregated
vybrané skupině paketů.
Proti tomuto jsou náchylná prakticky všechna Wi-Fi zařízení. Lze ji ale snadno opravit tím, že se bude autentizovat i příznak is aggregated
. Autentizace je již součástí Wi-Fi standardu (vyžadování SPP A-MSDU rámců), ale to není zpětně kompatibilní a obvykle to není ani na zařízeních podporováno.
Další chybou ve standardu Wi-Fi je mixed key attack. Týká se fragmentace rámců. Wi-Fi zde zvyšuje spolehlivost spojení tím, že rozděluje velké rámce do menších fragmentů. Když tak činí, tak všechny dílčí fragmenty patřící do stejného rámce šifruje stejným klíčem, po příjemci ale není vyžadováno, aby toto kontroloval a může dojít ke slepení rámců šifrovaných různými klíči a útočník může vesele exfiltrovat data napadeného klienta.
Tuto chybu lze opravit způsobem, který je zpětně kompatibilní prostě tak, že budou sestavovány pouze rámce, jejichž fragmenty jsou šifrovány stejným klíčem. Každopádně tento útok je možný pouze za tak specifických okolností, že jej autoři považuji za pouze teoreticky možný.
Důsledkem třetí chyby v samotné specifikaci Wi-Fi, je fragment cache attack. Ten pro změnu zneužívá vlastnosti fragmentace rámců, kdy pokud se zařízení odpojí od sítě, není po něm vyžadováno, aby smazalo znovu-nesestavené rámce ze své paměti. Toho lze zneužít proti sítím typu hotspot (včetně například eduroam) a proti různým podnikovým sítím. Útočník může získávat exfiltrovaná data oběti za pomoci injektáže upraveného fragmentu do paměti AP (tedy do fragment cache). Když se oběť k AP připojí a pošle fragmentovaný rámec, provede se zkombinování vybraných fragmentů s injektovaným fragmentem útočníka.
Opravu je možné realizovat i jako zpětně kompatibilní prostým mazáním fragmentů z paměti, kdykoli dojde k odpojení od sítě (či znovupřipojení k síti).
Výzkumníci hovoří i o dalších chybách. Některé routery například dělají to, že forwardují handshake rámce jinému klientovi, i když dosud neproběhla autentizace uživatele. To může vést k agregačnímu útoku, injektáží cizích rámců, a to vše bez vědomí uživatele.
Další obvyklou chybou v implementaci je to, že příjemce neověřuje, zdali všechny fragmenty patří do stejného rámce. Dále je mnohde implementována možnost kombinování šifrovaných a plaintext fragmentů – opět náchylné k útoku na uživatele. A nakonec tu máme třídu zařízení, které prostě neimplementují ani fragmentaci, ani agregaci. Přesto jsou náchylná na útoky, protože zpracovávají fragmentované rámce jako plné rámce, za určitých okolností je možné provést injektáž paketů.
Přehled CVE
Popis v seznamu na Githubu. Chyby v samotném návrhu Wi-Fi:
- CVE-2020–24588: akceptování non-SPP A-MSDU rámců
- CVE-2020–24587: sestavování fragmentů šifrovaných odlišnými klíči
- CVE-2020–24586: nečištění fragmentů z paměti při (znovu)připojení k síti
Chyby týkající se implementací umožňujících triviální packet injection:
- CVE-2020–26145: akceptování plaintext broadcast fragmentů jako plných rámců (v šifrované síti)
- CVE-2020–26144: akceptování plaintext A-MSDU rámců začínajících RFC1042 hlavičkou s EtherType EAPOL (v šifrovaných sítích)
- CVE-2020–26140: akceptování plaintext data rámců v chráněné síti
- CVE-2020–26143: akceptování fragmentovaných plaintext data rámců v chráněné síti
Další chyby v implementacích:
- CVE-2020–26139: forwarding EAPOL rámců i když odesílatel ještě není autentizován
- CVE-2020–26146: sestavování šifrovaných fragmentů s nenavazujícími čísly paketů
- CVE-2020–26147: sestavování kombinací šifrovaných/plaintext fragmentů
- CVE-2020–26142: zpracovávání fragmentovaných rámců jako plných rámců
- CVE-2020–26141: neověřování TKIP MIC fragmentovaných rámců