Článek je překladem zápisku The Internet of Stupid Things, který napsal v dubnu 2015 Geoff Huston. Překlad vychází se souhlasem původního autora.
Vize internetu věcí není vůbec nová. Moje auto má už dnes asi 100 mikroprocesorů, které se starají o všechno od regulace motoru až po ukládání polohy sedačky. Ambiciózní vize internetu věcí předpokládá propojení všech těchto procesorů do jednoho ohromného internetu. Gartner předpokládá, že svět chatujícího křemíku naroste na 25 miliard zařízení do roku 2020. Cisco sázku zvyšuje na 50 miliard, a Morgan Stanley trumfuje s předpokladem 75 miliard zařízení připojených k internetu do stejného roku. Ostatní jdou se svými odhady klidně až na 100 miliard. Taková míra nespoutané technické euforie počítá s ekonomickou hodnotu aktivit v této oblasti v řádu bilionů dolarů v roce 2020.
Co ale víme o věcech, které jsou k internetu připojené už nyní?
Některé z nich nejsou moc dobré. Přesněji řečeno, některé z nich jsou opravdu hloupé. A jejich hloupost je nebezpečná, protože způsob chování a přístup k bezpečnosti často škodlivým způsobem ovlivňuje ostatní.
Jeden z dřívějších incidentů způsobených hloupostí ve velkém měřítku se odehrál v roce 2003, když Dave Plonka, tehdy z University of Wisconsin-Madison, zpozoroval něco, co vypadalo jako obrovský útok namířený na univerzitní časový server. Jak bylo tehdy napsáno:
V květnu 2003 se University of Wisconsin-Madison stala příjemcem soustavného zaplavování internetovým provozem, který byl cílen na jeden z veřejných časových (NTP) serverů. Míra útoku byla ve stovkách tisíc paketů za sekundu a ve stovkách megabitů za sekundu.
Následně jsme zjistili že zdrojem provozu byly doslova stovky tisíc skutečných internetových zařízení z celého světa. Příčina nicméně nespočívala ve zlomyslném distribuovaném útoku (DDoS), ale v závažné návrhové chybě ve stovkách tisíc levných internetových produktů jednoho výrobce, které byly určeny pro domácnosti. Neočekávané chování těchto zařízení představuje pro univerzitu závažný provozní problém pro následující roky.
Zmíněné zařízení, domácí router značky Netgear, používal SNTP protokol pro získávání reálného času, neboť sám neměl ani hodiny, ani baterii. IP adresa univerzitního časového serveru byla v routeru natvrdo nastavena výrobcem. Čím víc kusů bylo prodáno, tím víc rostl souhrnný provoz na univerzitní časový server.
Šlo o opravitelný problém? Mohl výrobce svolat všechna zařízení k opravě?
Jak Netgear, tak i ostatní členové přezkumného týmu považují za nepravděpodobné, že by víc než několik málo majitelů dotčeného zařízení toto zařízení vrátilo, neboť se zdá být plně funkční. Také jen velmi malé množství zákazníků výrobek zaregistrovalo u výrobce, takže by bylo velmi obtížné všechny zákazníky kontaktovat.
Jde o věc, co leží někde ve skříni. Pozornost je jí věnována jen, když přestane fungovat. Neexistuje způsob, jak v zařízení na dálku vyměnit software a neexistuje ani způsob, jak upozornit uživatele, že je nutné zařízení aktualizovat. Takže problém přetrvává.
V tomto případě šlo o jedinou oběť hlouposti věcí připojených k internetu. Jiné formy nebezpečné hlouposti ovlivňují mnohem více lidí. Webová stránka openresolverproject.org popisuje snahy Jareda Maucha dokumentovat míru rozšíření internetových zařízení, které jsou fakticky tzv. otevřenými DNS resolvery.
Jde opět obvykle o domácí modemy, propojující domácí síť k internetu. Původní záměr byl pravděpodobně poskytnout odpovědi na DNS dotazy z vnitřní sítě přeposíláním dotazů do vnější sítě. Zdá se ale, že v některých případech se softwaru nepodařilo správně rozlišit, která síť je vnitřní a která vnější, takže odpovídal stejným způsobem i na dotazy z vnější sítě. Takto hloupých zařízení je velmi mnoho; podle zmíněné webové stránky jich bylo v říjnu 2013 28 milionů.
Takováto zařízení mohou být zapojena do nebezpečného chování tak, že jsou jim poslány DNS dotazy z internetu. Otevřený resolver se pokusí dotaz odpovědět (protože nedokáže rozlišit mezi vnitřní a vnější sítí) a pošle odpověď na zdrojovou adresu dotazu. DNS odpověď může být výrazně větší než dotaz. Jedna forma nebezpečného útoku pak tedy spočívá v hromadném oslovení takovýchto otevřených resolverů s dotazem na jediný autoritativní DNS server s cílem takový server zahltit. Jiná forma útoku používá falšované zdrojové IP adresy, konkrétně adresy zamýšlené oběti útoku, a použije miliony otevřených resolverů k posílání DNS odpovědí směrem k oběti.
Stejně jako u problému se SNTP v Netgearu, ani zde není možnost snadné nápravy. Jde o nespravovaná zařízení ležící kdesi ve skříni. Nikdo se o ně nestará.
I u nás v APNIC jsme narazili na podobný problém. Jeden z našich serverů byl soustavně zatížen zhruba 5000 dotazy za sekundu, všechny na jediný skript, vracející IP adresu, odkud dotaz přišel. Zkrátka šlo o jednoduchou variantu služby „Jaká je moje IP adresa“. Když jsme chtěli zmíněné servery přestěhovat, začalo nás zajímat, odkud se takový provoz bere. Zdá se, že stejně jako předchozí zkušenosti se špatným řízením kvality softwaru domácích routerů, i tady nějaký výrobce vložil URL skriptu pro zjištění IP adresy na stránkách APNIC do softwaru nějakého digitálního videorekordéru nebo televizoru. A software daného zařízení z nějakého důvodu danou adresu pravidelně dotazuje.
Zdá se, že APNIC je zde jediná oběť. Problém je nicméně o něco hlubší. APNIC teď může určitě podle dotazů zjistit, kolik zařízení bylo prodáno a kam byly instalovány. Kromě úniku informací o trhu zde vyvstává ještě několik nepříjemných otázek. Co když APNIC změní skript tak, že bude vracet špatnou IP adresu? Co když skript zasekne TCP spojení a nikdy neodpoví? Došlo by k pádu zařízení, kdyby skript vrátil namísto několika očekávaných bajtů několika megabajtovou odpověď? Mohla by odpověď přetéct přes velikost přijímacího bufferu a přepsat zásobník operačního systému zařízení? Dalo by se odpovědí skriptu dostat dovnitř zařízení a proměnit ho v dálkově ovládaného robota? Je jasné, že my nebudeme nic z toho zkoušet. Není to ale příjemná pozice, vědět, že stojíme na kritické cestě někoho jiného.
Možná se to celé zlepší, až software v podobných zařízeních začne být spravovaný. Dvanáct procent všech chytrých telefonů prodaných minulý rok, zhruba 180 milionů kusů, je poháněno softwarem iOS od Apple. Součástí obchodního modelu Apple je App Store, a aby jej lidé využívali, jsou telefony zamčené. Každý vyhledávač vás ale s radostí nasměruje k instrukcím, jak svůj iPhone odemknout, k čemuž se zneužívají chyby ve většině verzí iOS. Takže nejde jen o problémy se softwarem v levných nespravovaných zařízeních, jde i o masově vyráběná drahá zařízení, kde je silný komerční zájem na nejlepší kvalitě softwaru.
Když uvažujeme o internetu věcí, máme na mysli svět meteostanic, webkamer, chytrých aut, osobních tréninkových monitorů a tak dále. Máme ale sklon zapomínat na to, že všechna tato zařízení jsou postavena z vrstev softwaru jiných lidí do produktu s nejnižší možnou cenovou hladinou. Je vcelku znepokojující uvědomit si, že webkamera, kterou jste právě nainstalovali, je postavena na bezpečnostním modelu, který se dá shrnout do jediného slova: ano. Tato kamera vystavuje pohled na váš dům pro celý internet. Ještě více znepokojující může být fakt, že vaše elektronická peněženka je uložena v zařízení, které je postaveno na ohromné složenině open source softwaru z velké části nejasného původu, s bezpečnostním modelem, který nikdo pořádně nechápe, ale o kterém se snažíte být přesvědčeni, že funguje.
Co s tím budeme dělat?
Bylo by pěkné, myslet si, že jsme přestali dělat chyby v kódu a od teď už bude software ve všech našich věcech perfektní. To je však beznadějně idealistická představa. Tak to nebude. Software nebude dokonalý. Vždy v něm budou zranitelnosti.
Bylo by pěkné, myslet si, že internet věcí se vytvaruje do podoby trhu, kde záleží na kvalitě a kde zákazníci budou volit dražší produkt, i když je funkčně srovnatelný s levnějším, který však nebyl podrobně testován na bezpečnostní chyby. Ale to je také beznadějně idealistická představa.
Internet věcí bude nadále trhem s kompromisy mezi kvalitou a cenou. Bojím se, že obětujeme kvalitu ve prospěch nízké ceny. Pokud to tak bude, co nás zastaví od dalšího zamořování internetu ohromným množstvím rozmanitých nespravovaných programovatelných zařízení s vestavěnými zranitelnostmi?
Co můžeme udělat k tomu, aby svět těchto levných zařízení byl méně hloupý a méně škodlivý?
Jasné odpovědi na tuto otázku se nacházejí těžko. Nicméně si myslím, že už časti odpovědi známe.
Jedna část odpovědi je, že bychom opravdu měli používat IPv6 pro internet věcí. S IPv4 je spojena spousta problémů, jeden z nich je příliš malý adresní prostor. Pokud chcete mít svou věc vystavenou na internetu, každý tu vaši věc najde také.
ZMap je open-source síťový skener, který umožňuje výzkumníkům snadno uskutečnit výzkum na celém internetu. S jedním strojem a dostatečně dimenzovaným síťovým připojením umožnuje ZMap provést kompletní sken IPv4 adresního prostoru za méně než 5 minut, čímž se přibližuje k teoretické kapacitě desetigigabitového ethernetu.
Ano, jen 5 minut stačí k proskenování celého IPv4 adresního prostoru. Na IPv4 se není kam schovat. Pokud chcete danou věc vidět, ostatní ji uvidí také.
Jak je to s IPv6? Pokud trvá 5 minut skenování 4 miliard adres, jak dlouho by trvalo skenování všech 340 sextilionů (1036) adres? Při stejné rychlosti by to trvalo 70 triliard (1021) let. I při obvyklém omezení na používané adresy a další heuristice není skenování IPv6 prostoru realisticky proveditelné. Už jen průzkum 64bitového identifikátoru rozhraní zabere stejným tempem 41 tisíc let, takže IPv6 systém, který řádně používá náhodné privátní adresy se sám o sobě skrývá v ohromném prostoru k prohledání.
Jiná část odpovědi je vyhnout se zbytným vnějším závislostem. Například se nesnažit vyzradit svou existenci voláním externích skriptů. Nespoléhat na cizí internetové zdroje, že budou online a funkční.
A nakonec je zajisté užitečné být paranoidní. Nevěřte internetu. To není to samé jako „nepoužívejte internet“. Využívejte připojení a jeho služby, ale nebuďte přehnaně důvěřiví. Pokud používáte DNS k mapování jmen na IP adresy, používejte interní DNS knihovnu, která validuje všechno co přijme namísto spoléhání na to, že externí resolver by vám přece nelhal. Pokud používáte zabezpečené kanály pro přístup k zařízení, což byste měli, použijte bezpečnostní model, který bude úzce zaměřený na použití konkrétního pevného bodu důvěry. Představte si internet jako nepřátelské území: jak můžete zabránit vašemu zařízení, aby bylo zajato a zneužito ostatními?
Nic není dokonalé. Software se vyvíjí rychleji než hardware. Dobře si rozmyslete, jak chcete spravovat zařízení která jsou už nasazena v terénu na internetu. Jak můžete taková zařízení aktualizovat, abyste opravili katastrofální chybu?
Žádná z těchto pouček není nová. Kdybychom je byli schopni aplikovat retrospektivně, už bychom se dnes nedívali na 30 milionů nespravovaných otevřených DNS resolverů uvažujíce co s nimi budeme dělat. Tady už je ale dokonáno. Mnohem důležitější je vyhnout se dalšímu rozšiřování skupiny takto škodlivých věcí. Pokud míříme k internetu stovky miliard věcí v nastávajících pěti letech, pak se ujistěme, že si pamatujeme předchozí chyby a jsme schopni se z nich poučit. Opravdu se musíme ujistit, že nepůjde o internet sta miliard hloupých věcí, které budou připraveny ke konání zla.