Hlavní navigace

Nebezpečné TCP?

Ondřej Filip

Být správcem sítě u velikého poskytovatele připojení na Internet (ISP) nemusí být zrovna klidná práce. Není to tak dávno, co technici většiny ISP panicky upgradovali firmware svých Cisco směrovačů, a už aby řešili další problém. Případný útočník může napadnout spojení mezi dvěma routery, což může způsobit zhroucení sítě v relativně velkém měřítku.

Asi málokoho překvapí fakt, že drtivá většina informací se po síti sítí přenáší pomocí protokolu TCP. Tento protokol je poměrně starý, jeho popis se objevil v RFC-793, které je z roku 1981. Možná o to víc překvapí sdělení, že tento protokol není zcela odolný vůči útoku a že se o tom již dlouho ví. Oficiální jméno útoku, s jehož pomocí lze přerušit libovolnou TCP relaci, je TCP reset attack, a byl popsán už v mnoha článcích zabývajících se bezpečností síťových protokolů.

V čem je vlastně nebezpečný? Z pohledu běžného uživatele Internetu se nezdá být tento útok příliš zajímavý, protože pokud mu někdo přeruší stahování obrázku z WWW stránek, prostě jen pokrčí rameny a natáhne stránku znovu. Pokud se přeruší přenášení emailu, servery se o to pokusí za chvíli opět. Úplně jinak se ale k tomu staví ISP.

Páteřní routery, které zajišťují propojení s místními ISP (peering) či zajišťují konektivitu do světa (upstream), si totiž vyměňují směrovací informace o topologii zbytku Internetu pomocí protokolu BGP. Tento protokol používá pro svůj transport již zmiňované TCP a jeho relace nemají trvání jen několika minut, ale spíše dnů či měsíců. Rozpad takového spojení má přibližně stejný důsledek jako chvilkové fyzické přetržení kabelu, který routery spojuje. Pokud tedy úspěšně zaútočíte na všechna BGP spojení daného ISP, můžete si být jisti, že na pár okamžiků z jeho sítě do zbytku Internetu neprojde ani packet. Budete-li útok nějakou dobu opakovat, je pravděpodobné, že ostatní routery, zjednodušeně řečeno, ohodnotí tuto síť jako nestabilní a na pár minut ji vyřadí ze svých tabulek. To už pocítí i běžní uživatelé.

Proč to ještě není opraveno? I když byl útok pojmenován už velmi dávno, dlouhou dobu se předpokládalo, že jde o útok spíše teoretický, který není možné v reálném čase provést. Kupříkladu Convery a Franz [PDF, 1,5 MB] ve své přednášce o bezpečnosti protokolu BGP z loňského roku vypočítali, že takovýto útok by trval nejméně 142 let. Opravdové zděšení mezi ISP a výrobci routerů tedy způsobil článek Paula Watsona Slipping in the Window: TCP Reset attacks. Jeho práce dokazuje, že útočník zdaleka nemusí žít tak dlouho. Z jeho výsledků vyplývá, že útočník s připojením do Internetu o rychlosti T1 (1,54 Mbit/s) by dokázal rozpojit TCP spojení nejvýše do jedenácti minut. To už jistě není nic nepředstavitelného. U lépe připojených útočníků se maximální čas přirozeně zkracuje.

Kde byla chyba? Zrušit běžící TCP spojení není pro útočníka bez možnosti odposlechu vůbec jednoduchá záležitost. K takové věci potřebuje znát pět údajů:

  1. IP adresu prvního routeru,
  2. IP adresu druhého routeru,
  3. cílový port,
  4. zdrojový port,
  5. sekvenční číslo TCP spojení.

Pokud by poslal packet s těmito údaji a zprávou RESET jednomu z routerů, došlo by k rozpadu spojení. První dva údaje jsou útočníkovi známé, protože ví, které počítače chce „rozpojit“. Cílový port také není žádné tajemství, BGP navazuje spojení na port 179. Zdrojovým portem by mělo být náhodné číslo v rozsahu 1–65535. V praxi se ale všechny porty použít nedají a některá čísla nejsou pro tento účel použitelná. I tak by ale zbývalo dost možností, které by útočník musel vyzkoušet.

Bohužel většina operačních systémů nevolí tento port náhodně, ale sekvenčně od predikovatelného začátku. Watson uvádí, že například firmware IOS 12.0(8) nejpoužívanějších routerů Cisco naváže první spojení z portu 11778 a každé další pak z portu čísla zvýšeného o 512. Protože routery obvykle navazují jen velmi málo TCP spojení, je šance na odhad tohoto čísla velmi vysoká, pravděpodobně by stačilo vyzkoušet tak 50 možností.

Co tedy pátý údaj, sekvenční číslo TCP spojení? Předpoklady vycházely z přesvědčení, že je nutné znát sekvenční číslo absolutně přesně. Jenže to není úplně pravda. Při TCP přenosu je povolen vždy určitý rozsah těchto čísel, která jsou považována za validní. Toto tzv. okno umožňuje, aby TCP fungovalo efektivně i na linkách se zpožděním. Určuje totiž, kolik TCP packetů může odesílatel vyslat najednou, aniž by čekal na potvrzení příjemce. Velikost okna se může v průběhu spojení v závislosti na rychlosti linky a příjemce měnit. Bohužel u BGP spojení, které je obvykle na dostatečně rychlých linkách mezi rychlými routery, je okno velké, Cisco IOS začíná na velikosti 16384. Sekvenční číslo je v rozmezí 0 až (232 – 1) a tímto faktem se počet packetů nutných k útoku sníží z 232 na 218=262144. Pokud tedy útočník zná první čtyři údaje, pošle jen 262144 packetů o velikosti 40 bytů, v případě, že hádá i čtvrtý údaj, bude to násobek tohoto množství.

Lze se bránit? Naštěstí je mnoho možností, jak BGP spojení chránit. Jednou z nich je snížit velikost okna u BGP spojení a upravit firmware tak, aby zdrojový port vybíral zcela náhodně. To útočníkovi značně prodlouží nutný čas na přerušení spojení. Další obrana spočívá v mechanismu popsaném v RFC-2385. BGP je přenášeno TCP protokolem, kde ke každému packetu router ještě přidává MD5 signaturu, aby bylo ověřitelné, že je autentický. Tato velmi elegantní možnost ale zatěžuje i tak dost vytížené centrální procesory routerů a je možné, že paradoxně otevře cestičku k jinému útoku. Poslední možností je filtrovat BGP packety tak, aby router útočníkovi zabránil nežádané packety vůbec posílat. V peeringových bodech (a všude, kde je více BGP routerů na společném segmentu) to ale znamená, že filtrování musí nasadit všichni připojení.

Jak je vidět, každá drobná technická nedokonalost či nedomyšlenost otevírá vrátka lidem, kteří nemají na síti zrovna čestné úmysly. Nezbývá než popřát technikům u sítí méně podobných epizod.

Anketa

Bojíte se, že nějaký útočník v dohledné době zaútočí na BGP?

Našli jste v článku chybu?

8. 6. 2004 13:34

Michal Krsek (neregistrovaný)
Prectete si prosim tu diskusi od zacatku a zjistite, ze nejsme v zadnem sporu :-) Proste kus vlakna diskuse, ktery jste zacal tvrzenim, ze Juniper je PC s BSDckem, nema s predchozim kusem vlakna, ktery jsem zacal tvrzenim, ze jsem slysel o utoku prave na md5 BGP sessions, moc spolecneho :-)

To, ze HW smerovace jsou odolne proti vyse uvedenemu utoku, jsem, troufam si tvrdit, nikdy netvrdil :-)

8. 6. 2004 12:47

Root (neregistrovaný)
A tak nezbyva nez filtrovat prichozi data na port 179 (povolit pouze ostatni hosty, s nimiz mame BGP relaci) a jeste pridat nejaka anti-spoofing filtrovaci pravidla. Coz muze degradovat router, nicmene konkretne u platformy PC/Linux jsme po merenich dosli k tomu, ze zahazovat packety zvlada prave tato platforma v daleko vetsim mnozstvi, nez je forwardovat (coz nemusi byt u vsech platforem pravidlem).

Ad PFE - u Cisca hledejte CEF, dCEF a PXF.

DigiZone.cz: V Plzni odstartovalo Radio 1

V Plzni odstartovalo Radio 1

DigiZone.cz: Sat novinky: slovenská TV8 HD i ruský NTV Mir

Sat novinky: slovenská TV8 HD i ruský NTV Mir

Vitalia.cz: Jedlé kaštany jsou trpké, je třeba je tepelně upravit

Jedlé kaštany jsou trpké, je třeba je tepelně upravit

DigiZone.cz: Skylink: zpožděný kanál Prima +1

Skylink: zpožděný kanál Prima +1

DigiZone.cz: SES zajistí HD pro M7 Group

SES zajistí HD pro M7 Group

120na80.cz: Rovnátka, která nejsou vidět

Rovnátka, která nejsou vidět

Vitalia.cz: Když přijdete o oko, přijdete na rok o řidičák

Když přijdete o oko, přijdete na rok o řidičák

120na80.cz: Stoná vaše dítě často? Upravte mu jídelníček

Stoná vaše dítě často? Upravte mu jídelníček

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Vitalia.cz: To nejhorší při horečce u dětí: Febrilní křeče

To nejhorší při horečce u dětí: Febrilní křeče

120na80.cz: 5 nejčastějších mýtů o kondomech

5 nejčastějších mýtů o kondomech

120na80.cz: Co všechno ovlivňuje ženskou plodnost?

Co všechno ovlivňuje ženskou plodnost?

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Měšec.cz: Stavební spoření: alternativa i pro seniory

Stavební spoření: alternativa i pro seniory

Root.cz: 250 Mbit/s po telefonní lince, když máte štěstí

250 Mbit/s po telefonní lince, když máte štěstí

DigiZone.cz: Je tu první sportovní přenos přes mobily

Je tu první sportovní přenos přes mobily

Root.cz: Mirai má nový cíl 5 milionů routerů

Mirai má nový cíl 5 milionů routerů

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Měšec.cz: Vklad na cizí účet je draze zpoplatněn (přehled)

Vklad na cizí účet je draze zpoplatněn (přehled)