Hlavní navigace

Internet ohrozila největší bezpečnostní hrozba desetiletí

8. 8. 2008
Doba čtení: 10 minut

Sdílet

 Autor: 29
Zvláště nebezpečná díra v systému DNS ohrozila bezpečnost celého Internetu. Celý svět záplatoval jako o život, jenom někteří poskytovatelé (včetně např. české Telefóniky O2) problém nepochopitelně podcenili a odbyli. Co se vlastně stalo a proč je DNS cache poisioning tak velkou hrozbou?

Pro řadu pozorovatelů byla bezpečnostní hrozba tak významná, že ji média i odborníci označili ze největší bezpečnostní problém posledního desetiletí. A celý svět tvůrců DNS serverů se zcela neočekávaně spojil, aby v jeden konkrétní den umožnili všem svým uživatelům opět používat bezpečný Internet. Na druhé straně existují ti, kteří stejnou bezpečnostní hrozbu nepovažují za podstatnou. Může jít o Apple, který se záplatou pro svůj DNS server opravdu nijak nespěchal. Může to ale paradoxně být i největší český poskytovatel internetového připojení, Telefónica O2, kde používají neopravené DNS servery ještě týdny poté, co je všude po světě instalována oprava.

Telefónica O2 neustále podniká celou řadu kroků pro zvýšení zabezpečení svých technologií. Vzhledem k tomu, že používáme modifikované systémy (nestandardní), nemůžeme použít běžně distribuované patche (opravné scripty), které jsou určeny pro komerční „krabicové“ operační systémy, bez předchozího důkladného testování, ladění a následného postupného nasazování na jednotlivé servery. Postupné nasazování patchů probíhá od 8. července a bude dokončeno v horizontu několika dnů. Jakékoli unáhlené jednorázové použití standardních patchů (ke kterému bychom jistě přistoupili při existenci vážného rizika), by mohlo vést ke snížení stability služeb, jejichž kvalitní poskytování je naší prioritou.

Zdroj: jménem tiskového mluvčího společnosti Martina Žabky odpověděla Hana Hejsková.

Poslední zvýrazněnou větu doporučuji přečíst alespoň dvakrát. Chystám se totiž rovnou přejít k popisu toho, co zcela určitě bylo jednou z největších bezpečnostních hrozeb ohrožujících samy základy Internetu.

DNS Cache Poisioning

Když Dan Kaminski, bývalý zaměstnanec společnosti Cisco a dnes pracující pro společnost IOActive, náhodou objevil chybu v DNS protokolu, pravděpodobně nevěřil vlastním očím. Po několikanásobném ověření mu už bylo jasné, že jde opravdu o velký problém.

„DNS Cache Poisioning“ nebo otrávení DNS vyrovnávací paměti (cache) je sice dlouhou dobu známou metodou útoku zneužívajících DNS servery, ale v případě objevu Dana Kaminského se přišlo na metodu, kterou může použít prakticky kdokoliv. A během několika minut pozměnit libovolné DNS záznamy v libovolném DNS serveru.

V praxi by to například mohlo znamenat, že jmenné servery Telefónicy O2 by dodávaly jinou IP adresu pro www.seznam.cz (nebo ale taky třeba Českou spořitelnou, Komerční banku či jakoukoliv jinou navštěvovanou nebo důležitou internetovou adresu). Nic netušící uživatelé by místo běžné IP adresy dostávali falešnou. A na falešném www.seznam.cz by se do jejich počítačů snažil dostat virus. Případně na falešném webu České Spořitelny by fungovala nová verze sběrače hesel do internetového bankovnictví způsobem „man-in-the-middle“. Kyberkrimnálnící by během několika hodin dokázali vyprázdnit tisíce účtů nic netušících zákazníků.

Abych ale nebral jméno Telefónicy O2 nadarmo, řada dalších českých i zahraničních ISP své DNS servery neopravila hned a bez problémů. Ačkoliv bezpečnostní opravy byly dostupné po skutečně historicky nevídané spolupráci výrobců pod koordinací organizace CERT (zde se nezbývá než zeptat, kde vlastně byl v té době český CERT, ať již ten ustanovený a financovaný MVČR, nebo ten ustanovený a financovaný školstvím a jinými subjekty.

V USA se Dan Kaminski dokázal sejít se skupinou šestnácti bezpečnostních expertů a zástupců výrobců na půdě Microsoftu již 31. března 2008. Záplaty pro většinu DNS serverů se objevily 8. července 2008. A ještě 30. července se Telefónice O2 nepodařilo nasadit záplaty a mohla přivést své zákazníky do velmi nebezpečné situace. Objektivní poznámka je v tomto případě více než nutná – stejná situace panovala u řady dalších českých ISP.

Jak můžete vidět na velmi originálním grafickém znázornění, opravy byly po celém světě instalovaný opravdu velmi pomalu. A třeba právě takový zmíněný Apple? Tomu se zadařilo až 1.srpna 2008. World's big­gest ISPs drag feet on critical DNS patch ukazuje laxnost poměrně jasně.

DNS Cache Poisioning, přichází vysvětlení

Měl bych ale konečně vysvětlit princip DNS Cache Poisioning. Jde totiž skutečně o metodu útoku na DNS server, která je známa již řadu let. A v průběhu času se také různé produkty (DNS servery) staly náchylné k nějakým útokům tohoto druhu.

V minulosti se ale všechny útoky zakládaly na velkých objemech dat, které DNS server musel přijímat, aby nakonec došlo k podvržení (nakažení, poisioning) falešných IP adres k určitým internetovým adresám.

Chyba v samotném principu DNS protokolu ovšem znamená, že pro podvržení dat je potřeba velmi krátkého časového intervalu k tomu, aby DNS server přišel o správná data a od okamžiku podvržení poskytoval data falešná.

DNS servery fungují jednoduše (a pokusím se to vysvětlit zjednodušeně).

Uživatel se DNS serveru ptá na převod jména (například www.lupa.cz) na internetovou (IP) adresu. Pokud daný DNS server tuto doménu nezná (není zodpovědný za její činnost), zjistí si, kde se může na potřebné jméno zeptat – může to být nadřazený server, případně to může být právě server mající určitou doménu na starosti.

Po získání odpovědi si ji uloží do vyrovnávací paměti (cache), aby mohl při příštích dotazech odpovídat rovnou a nemusel se znovu ptát. Ve vyrovnávací paměti pochopitelně data zůstávají určitou dobu, danou tím, jakou „životnost“ (TTL) mají údaje u domény definovány.

Dan Kaminski přišel na to, že v rámci komunikace se sice používá náhodný prvek, který umožňuje „odlišit“ jednotlivé různé dotazy a odpovědi, ale tento náhodný prvek je velmi málo náhodný – a útočník tak může udělat velmi jednoduchou věc:

  1. Poslat dotaz na určité doménové jméno,
  2. začít na DNS server posílat falešné odpovědi, které DNS server v určitý moment přijme jako platné (jednu z nich).

Případný další popis je k dispozici v oznámení VU#800113 (případně Cyber Security Alert TA08–190B či microsoftí KB951748) – a na webu CZ.NIC přímo v češtině, odkud si vypůjčím následující odstavce, protože opravdu nemá smysl je znovu psát – vystihují totiž technickou podstatu útoku:

Nedostatečný transaction ID prostor

Specifikace DNS protokolu obsahuje i pole transaction ID o délce 16 bitů. Pokud je specifikace implementována správně a transaction ID je náhodně vybráno robustním generátorem náhodných čísel, bude útočník potřebovat v průměru 32 768 pokusů, aby ID mohl předpovědět. Některé nekvalitní implementace mohou pro toto pole používat menší počet bitů, takže útočníci potřebují méně pokusů. Existují také známé nedostatky generování náhodných čísel v poli transaction ID.

Mnohonásobné nevyřešené požadavky

Některé implementace DNS služeb obsahují slabá místa, díky nimž mnohonásobné a identické požadavky na stejný záznam resource record (RR) generují mnohonásobné nevyřešené požadavky na tento záznam. To pak umožňuje útok typu ‚birthday attack‘, který značně zvyšuje útočníkovu naději na úspěch. Tato problematika byla popsána v dokumentu VU#457875. Řada dodavatelů a implementátorů již své produkty upravila.

Pevný zdrojový port generace dotazů

Některé současné implementace alokují při startu nějaký port (někdy náhodně vybraný) a pak jej používají jako zdrojový port pro všechny odchozí dotazy. U některých implementací je zdrojový port pro odchozí dotazy dokonce pevný, na tradičním čísle portu DNS serveru 53/udp.

Nedávný další výzkum těchto problémů a metod, kombinovaných za účelem zlepšování útoků typu cache poisioning odhalil zvláště efektivní techniky. Caching DNS resolvery jsou ohroženy nejvíce, a to jak ty otevřené (DNS resolver je otevřený, pokud poskytuje rekurzivní informace o jménech pro klienty mimo svou administrativní doménu), tak ty uzavřené. Caching resolvery jsou pro útočníky nejčastějším cílem, nicméně ohroženy jsou i stub resolvery.

Věříte svému DNS? A hlavně svému ISP?

Dan Kaminsky hned v samém počátku zveřejnil na svém webu www.doxpara.com nástroj, který vám umožní prověřit DNS server, který používáte (a tím vlastně ve většině případů DNS server vašeho ISP).

DNS cache poisioning test
Jak to vypadalo před opravou (28. července 2008) Jak to vypadá po opravě (7. srpna 2008)
Your name server, at 194.228.41.65, appears vulnerable to DNS Cache Poisoning Your name server, at 194.228.41.113, appears to be safe, but make sure the ports listed below aren't following an obvious pattern (:1001, :1002, :1003, or :30000, :30020, :30100…).

Zajímavěji vypadající test najdete pro změnu na DNS-OARC v podobě Web-based DNS Randomness Test  – kde postačí, když kliknete na podivný černý obdélník a získáte výsledek v novém okně. Vedle „banální“ informace typu „prošel/neprošel“ uvidíte i užitečnou grafickou reprezentaci toho, jak se váš DNS server chová s ohledem na „náhodnost“.

Web-based DNS Randomness Test OK

Takhle se chová bezpečný DNS server

Z uvedeného příkladu by se mohlo zdát, že již tolikrát zmíněná Telefónica O2 své DNS servery skutečně napravila. Jenže, ono je těch DNS serveru celá řada. A jak vypadá ten ne zcela neopravený (194.228.41.65 (dns3.iol.cz) appears to have POOR source port randomness and GREAT transaction ID randomness), můžete vidět na následujícím obrázku:

Web-based DNS Randomness Test Bad

Takhle se chová nezabezpečený DNS server

Uvedený test můžete volat i jako http://149.20­.3.33/test/ – to pro případ, že právě ten váš DNS server už má nějaké ty falešné adresy a nevěříte mu.

Testů se pochopitelně objevilo více – podobně vypadající je dostupný na adrese http://member­.dnsstuff.com/to­ols/vu800113.php.

A pokud byste náhodou nevěřili DNS serverům svého ISP, můžete zkusit přejít na OpenDNS (IP adresa DNS serveru 208.67.222.222 a 208.67.220.220).

Není to náhodou mnoho povyku pro nic?

To opravdu není. Už 25. července WebSense varovalo, že DNS Cache poisoning útoky již probíhají.

Udržet v „tajnosti“ nějakou bezpečnostní chybu jednak dost dobře není možné, za druhé svět kyberkriminality je opravdu dobře vybaven. A v současnosti jsou už dostupné přímo programy, které chybu umožňují využít – Python, GCC, Metasploit. Ostatně, ani Kaminski to v tajnosti příliš neudržel: ačkoliv plánoval zveřejnění detalů až v září, vše je již dávno venku.

Zahraniční média se této bezpečnostní chybě věnovala velmi důkladně, česká média pravděpodobně příliš nepochopila o co jde, takže ani TV Nova (TN.cz) nepřišlo s nějakou fantastickou reportáží doplněnou o zdrcené uživatele Internetu přesměrované na porno stránku. Skutečnost, že dodnes najdete na českém Internetu nezáplatované DNS servery (včetně potenciálně nezáplatovaného dns3.iol.cz) je ale stále dost alarmující – možná by patřičná pozornost mainstreamových médií konečně přiměla zodpovědné osoby k aktivitě.

Jenže, jak již víte z úvodu článku, Telefónica O2 (na rozdíl od zbytku světa) nabyla dojmu, že pro její klienty tento bezpečnostní problém není dostatečně rizikový. Byť je více než jasné, že jeden útočník může během několika sekund ovlivnit DNS Server, který používají i miliony lidí.

Zde můžete například vidět příklady zastavených útoků snažících se změnit IP adresy pro natolik gigantické weby jako Gmail.com, Hotmail.com, Facebook.com, Microsoft.com, Myspace.com či Yahoo.com. A perlička, HD Moore, autor výše zmíněného Metasploit (hackovací toolkit), a jeho firma BreakingPoint se stala obětí tohoto útoku – AT&T DNS Server měl podvržené adresy Google.com.

Řešení problému

DNS Cache poisioning existuje již několik let. Pouze tento poslední bezpečnostní problém je ale natolik významný, že vyžaduje, aby všichni provozovatelé DNS serverů aplikovali opravy (případně přešli na bezpečný DNS server, pokud ten jejich opravy nemá).

Věděli jste například, že už roce 1997 došlo Eugenem Kashpureffem (detaily) k podvržení falešných IP adres do velkých jmenných serverů po celém světě (známé i pod názvem Operation DNS Storm)? Ti, co v té době chtěli jít na www.internic.net, se místo toho objevili na webu AlterNICu.

Existují samozřejmě i některá další řešení – například nastavení předřazeného DNS serveru, který bude pouze forwardovat požadavky (a bude bezpečný).

V souvislosti s možným řešením se také hovoří o potřebě přechodu na DNSSEC (Věrohodné DNS čili DNSSEC). Jenže o novém DNS, které by mělo  být bezpečnější, se hovoří už také několik let (odkazovaný článek na Lupě je ostatně z května 2005 a měl svého předchůdce již v roce 2003). DNSSEC na rozdíl od současného doménového systému zahrnuje digitální podpisy – každá sada záznamů je podepsána a středem všecho jsou kryptografické metody s veřejným klíčem. DNSSEC se věnuje i český CZ.NIC (zde na www.nic.cz), který v září 2008 plánuje spuštění plného provozu.

BRAND24

Ověřte si vaše DNS servery

Než se zase rozhodnete důvěřivě vstoupit na www.seznam.cz či www.google.com, ověřte nejprve, zda vámi používané DNS servery nejsou napadnutelné – velmi doporučím použít http://149.20­.3.33/test/  – protože není použito doménové jméno, budete mít jistotu, že se opravdu připojujete k pravému testu.

Pokud zjistíte jakékoliv nedostatky v náhodnosti (stačí prostý pohled), začněte tlačit na vašeho poskytovatele (ISP). Je nutné, aby okamžitě napravil fatální situaci. Nenapraví-li, dejte vědět světu. A přejděte na OpenDNS.

Má váš poskytovatel připojení opravený DNS server?

Byl pro vás článek přínosný?

Autor článku

Konzultant a publicista, provozuje www.pooh.cz. Podle některých si myslí, že rozumí všemu, sám je však přesvědčen o pravém opaku a ani v 30+ letech nedokázal přijít na to, jak mít peníze a nepracovat.
Upozorníme vás na články, které by vám neměly uniknout (maximálně 2x týdně).