Analýza: zranitelnost „rom-0“ postihuje 1,5 milionu domácích routerů

21. 5. 2014
Doba čtení: 7 minut

Sdílet

Aktualizováno: Aktualizováno (23. 5. 2014 10:50)
Internetem se šíří zprávy o tom, že „některé“ domácí routery je možné „nějak“ napadnout a poté jim „nějak“ změnit nastavení DNS a tím ohrozit bezpečnost na celé síti za nimi. Doposud byly informace velmi nekonkrétní a zoufale nepřesné. Následující analýza ukazuje, že jde o velmi rozsáhlý problém.

Nedávno se v mainstreamových médiích objevily články na téma zranitelnosti SOHO routerů. Přiblížení incidentů, které se týkají celé rodiny routerů s operačním systémem ZyNOS, je technicky nepříliš zajímavé a celkem triviální. Překvapivá je však velikost celého problému, neboť se ukazuje, že počty napadnutelných, a pravděpodobně i napadených, zařízení jdou v některých zemích do statisíců a celosvětově pravděpodobně přesahují 1,5 miliónu boxů.

Co je ZyNOS a co o něm (ne)víme

ZyNOS je zkratka pro ZyXEL Network Operating System. Firma ZyXEL jej uvedla na trh v roce 1998. Jedná se pravděpodobně o proprietární real-time OS, který nemá základ v Linuxu ani v *BSD, ale je údajně odvozen od Kadak AMX RTOS. V routerech běží především na procesorech MIPS, ale o některých boxech se ani neví, o jakou architekturu se vlastně jedná. O bootloaderu ZyXEL routerů se podařilo vybudovat jisté komunitní know-how metodou pokusů a omylů. O samotném ZyNOSu a nebo o jeho toolchainu se neví veřejně nic.

ZyNOS se těšil mezi výrobci levných SOHO routerů velké oblibě. Dodnes se vyrábí boxy s novými verzemi ZyNOSu a je tedy pravděpodobně stále vyvíjen. Od začátku vývoje do dneška vychrlili výrobci neuvěřitelně širokou škálu zařízení různých značek, modelů a revizí, které sdílí společný základ a liší se často jen designem krabičky, detaily HW konfigurace a brandingem webového rozhraní. Navíc od začátku chybí průhledné číslování verzí SW, ze kterého by byla patrná návaznost, a u označování HW je situace často ještě nepřehlednější.

Zranitelnost rom-0

ZyNOS si nese docela slušnou sbírku bezpečnostních chyb, které jsou postupně objevovány. Jednou z nich je i zranitelnost „rom-0“. Jedná se o chybu nedostatečné kontroly přístupu ve webovém rozhraní pro správu routeru. Ve zkratce jde o to, že router umožňuje vyexportovat a stáhnout celou konfiguraci v podobě binárního souboru. Součástí konfigurace jsou, mimo jiné, i přístupová hesla k webovému administračnímu rozhraní. Chyba pak spočívá v tom, že tento soubor lze stáhnout, aniž je před tím vyžadováno heslo – stačí pouze znát jednoduché URL tohoto souboru. A kritická je tato chyba proto, že značné množství routerů ve výchozím nastavení umožňuje konfiguraci stáhnout i přes WAN rozhraní, tedy odkudkoliv z internetu.

Chybějící podpora

O chybě „rom-0“ se ví minimálně od konce roku 2013 či začátku 2014, kdy ji popsal blog ROOT@NASRO. Už ale v půlce roku 2012 byly jisté náznaky v podobě článků, kde anonymní hackeři tvrdili, že v některých zemích může být drtivá většina domácích routerů napadená, aniž specifikovali mechanismus napadení.

Problém je, že SOHO routery předchozích generací nemají automatické aktualizace a ani zmiňovaný ZyNOS tuto funkci nepodporuje. Je tedy na uživateli, aby případnou novou verzi sám vybral, stáhl a nahrál do routeru. To není úplně jednoduché a někdy to vede k vyresetování nastavení routeru, což je z hlediska běžného uživatele havarijní stav.

Ještě větší problém je ale na straně výrobců boxů, kteří pro většinu zranitelných zařízení již ukončili podporu, a proto existuje nejméně pět typů routerů, které jsme fyzicky prozkoumali (pravděpodobně jich ale bude mnohem více), pro které nejnovější a poslední firmware tuto chybu neřeší. Komunita je také zcela bezbranná, protože routery jsou uzavřené a není proto příliš reálné vyprodukovat „after-market image“ ZyNOSu s bezpečnostními aktualizacemi.

Existuje sice poněkud hard-core návod, jak opatchovat běžící binárku v paměti, ale reálné řešení pro uživatele to není. Zůstávají pak jen různá dočasná řešení, která jsou ale jen „méně děravá“. Podobné řešení vyšlo i na blogu CZ.NIC v reakci na zaznamenané útoky v ČR.

Útoky a využití chyby

Doposud se zdá, že útočníci jsou na tom podobně, jako uživatelé a vývojáři open source: Bez zdrojových kódů a nebo aspoň toolchainu ZyNOSu nedokáží spouštět vlastní kód na routerech. Nebo aspoň doufáme, že to útočníci neumí.

Nejobvyklejší útok pomocí SOHO routeru se zaměřuje na počítače v síti za ním. Útočník změní DNS servery na routeru tak, že si přesměruje dotazy na svůj server, kde podvrhuje záznamy pro důvěryhodné stránky, například google.com. Tím se snaží uživatele nalákat ke stažení a spuštění malware.

Škála problému

Detailně jsme rozebrali jeden případ popsaného útoku, který se stal v ČR a přivedlo nás to na otázku: Kolik je vlastně v ČR napadnutelných či dokonce napadených boxů?

V první iteraci jsme zkusili udělat jednoduchý sken. Použili jsme seznam hostů se specifickou signaturou pro webserver ZyNOSu (RomPager) ze služby Shodan a zkoušeli jsme ověřit, zda vylistované adresy umožní stáhnout soubor rom-0. Touto triviální metodou se ukázalo, že by v ČR mohlo být potenciálně kolem 2500 napadnutelných boxů.

V další iteraci jsme nezůstali jen v ČR, ale pokusili jsme se zmapovat situaci celosvětově. V první řadě se ukázalo, že nemůžeme spoléhat na Shodan a musíme projít sami celý IPv4 prostor a otestovat nalezené webservery HTTP příkazem HEAD, zda nabízí soubor rom-0 a zda má správnou velikost. Splnění těchto podmínek pak dává velkou šanci, že jsme narazili na zranitelný router a že heslo půjde snadno zjistit. Nechtěli jsme ale masivně lámat hesla jen proto, abychom ověřili, že to jde. V tomto ohledu jsme se raději spokojili se statistickým zobecněním z mnohem menšího vzorku.

Jeden ze zranitelných routerů: TD-W8901G

Výsledky jsou šokující. Jedním chodem scanneru přes víkend 17. a 18. května 2014 jsme objevili 1 219 985 zranitelných routerů. V ČR jsme našli 5368 zranitelných routerů, na Slovensku 6119. V Evropě je na tom nejhůře Itálie s 116 731 napadnutelnými routery. Následuje Polsko s 22 702 napadnutelnými boxy a Velká Británie s 10 070. To, že jsme našli jedním chodem 1,2 milionu zranitelných routerů, nás vede ke kvalifikovanému odhadu, že po sečtení více běhů v různý čas bychom jich dostali přes 1,5 milionu.

Na absolutní špičce našeho testu je Thajsko s 167 505 napadnutelnými routery a následuje Kolumbie (139 976), zmíněná Itálie (116 731), Indie (91 561), Egypt (88 268), Vietnam (78 980), Ekvádor (78 553), Mexiko (58 777) a Írán (57 003).

Následující mapa ukazuje výsledek našeho skenu v absolutních číslech, tedy počet potenciálně napadnutelných hostů v každé zemi.

Dále považujeme za zajímavou i otázku, jaký podíl tvoří napadnutelné routery v dané zemi z domácích připojení. Tato čísla jsou však jen orientační, protože není lehké zjistit, kolik je kde DSL přípojek. Mimo Evropu se jedná spíš o odhady a úplně chybějící data jsme odhadli podle počtu obyvatel dle statistik Světové banky, což jsou v některých případech také jen kvalifikované odhady. Následující diagram je proto nutné brát s určitou rezervou.

Poslední dvě otázky, které se hodí zodpovědět je, kolik routerů je tedy doopravdy napadnutelných a kolik už bylo napadeno? Na první otázku jsme přesvědčeni, že odpověď stojí: Přes 90 % z 1,2 milionu, co jsme našli, resp. z 1,5 milionu, který věříme, že existuje. Tento odhad jsme udělali na základě velmi omezeného experimentu, který už ale splňuje statistické podmínky pro rozšíření na celou populaci routerů.

Odpověď na otázku, kolik routerů je už napadených a kolik jich už bylo zneužito, je složitější a na jejím zodpovězení pracujeme. Z předběžných analýz je vidět, že nejméně 30 % routerů má opakující se hesla. V některých případech je to dost jasné. Například, když útočník nastaví heslo „PortablePwned“.

Podle našeho vzorku mají toto konkrétní heslo asi 3 % všech napadnutelných routerů. Nicméně i napadený router může mít nenápadné heslo a nemusí akutně škodit. Například proto, že je v bridge módu a změna DNS serverů pak nehraje roli. Přikláníme se proto k názoru, že co mohlo být napadeno, to napadeno skutečně bylo, v mnoha případech i vícenásobně.

Neoptimistický závěr

Tento článek bohužel nekončí optimisticky. Zatím se nám nepovedlo sestavit vyčerpávající černou listinu zranitelných routerů. Víme, že zranitelnost se týká přinejmenším typů:

  • TP-LINK TD-W8901G
  • TP-LINK TD-8816
  • TP-LINK TD-W8951ND
  • TP-LINK TD-W8961ND
  • D-Link DSL-2640R

Očekáváme, že zranitelných modelů je mnohem více. Objevili jsme několik dalších značek: ZTE, Billion a pochopitelně i ZyXEL, ale u většiny případů neznáme konkrétní typové označení. Nejspolehlivější metoda, jak lze tedy zjistit, zda je konkrétní router zranitelný, je zkrátka zkusit stáhnout soubor rom-0 z URL  http://<IP adresa routeru>/rom-0.

ict ve školství 24

I když některý router touto konkrétní chybou netrpí, nelze se ani do budoucna příliš spoléhat na chabé bezpečnostní standardy a kvalitu low-cost SOHO routerů. Model masivní výroby a klonování closed-source HW i SW společně s laxní a krátkou podporou na straně autora prototypu i výrobce klonů se ukazuje jako velká nevýhoda. Mezi výrobci a konzumenty SOHO routerů pak panuje zásadně rozdílný přístup k chápání životnosti routeru. A tato situace může do budoucna vážně ohrozit celý internet. Hodí se podotknout, že k low-cost DSL a CATV modemům prakticky neexistuje žádná open-source alternativa kvůli tajnůstkářství výrobců ohledně specifikací a software pro DSP, které implementují xDSL nebo CATV rozhraní.

ZyXEL: jde o historickou chybu

Dle vyjádření českého zastoupení společnosti ZyXEL je tato chyba historická a nepostihuje žádný současný originální produkt společnosti ZyXEL. Dále upozorňují, že ZyXEL nenese odpovědnost za nynější podobu firmwaru ostatních výrobců, které jsou spojovány s originálním systémem ZyNOS. Více je uvedeno v tiskové zprávě.

Autor článku

Tomáš Hlaváček pracuje ve sdružení CZ.NIC jako programátor pro výzkum a vývoj. Věnuje se analýze směrování v Internetu a pomáhá s projektem Turris.