Směrovací hlavička v IPv6 a její problémy

Žhavým tématem ve světě IPv6 jsou dnes problémy rozšiřující hlavičky směrování. Přestože se ví poměrně dlouho o jejích bezpečnostních rizicích, rozpoutala se o nich v současnosti živá debata, místy až hysterie. Kdo by odolal a nepřidal se...

Všechno rozpoutal příspěvek IPv6 Routing Header Security, který pánové Philippe Biondi a Arnaud Ebalard přednesli na konferenci CanSecWest 2007. Kromě starých známých potíží typu dosahování běžně nedosažitelných strojů v něm upozornili na zajímavý DoS útok, který Geoff Huston trefně pojmenoval IPv6 ping pong.

Směrovací hlavička

Začněme stručným představením, co je inkriminovaná hlavička zač a jak funguje. Jedná se o rozšiřující hlavičku Routing Header (RH), kterou k datagramu může přibalit jeho odesilatel. Umožňuje stanovit určité body (resp. jejich IPv6 adresy), jimiž má datagram během své cesty sítí projít. Existuje ve dvou typech. Současná debata se točí kolem staršího typu 0. Kromě něj existuje ještě typ 2, používaný v mobilním IPv6. Ten však může obsahovat jen jedinou adresu, což podstatně omezuje možnosti zneužití.

Směrovací hlavička typu 0 v sobě má seznam adres a počítadlo určující, kolik z nich je ještě třeba projít. Během cesty sítí se jednotlivé adresy postupně přesouvají mezi směrovací hlavičkou a položkou adresa příjemce ve standardní hlavičce datagramu. Nejlépe vše osvětlí následující obrázek, kdy odesilatel O posílá datagram cíli C a požaduje, aby postupně prošel body X, Y a Z.

Schéma směrová hlavička

Odesilatel vloží do datagramu jako adresáta první průchozí bod (X), adresy zbývajících dvou průchozích bodů a vlastního cíle pak uloží do hlavičky směrování. Zároveň v ní uvede, že zbývá projít 3 adresy. Když datagram dorazí do bodu s adresou X, dojde ke změně hlaviček. Jeho adresa si vymění místo s adresou následujícího průchozího bodu a sníží se počet adres, jimiž má ještě projít.

Analogická změna se provede kdykoli, kdy datagram dorazí aktuálnímu adresátovi a počítadlo ve směrovací hlavičce je nenulové. Teprve když nezbývá už žádná další průchozí adresa, bude datagram IP vrstvou přijat a odevzdán k dalšímu zpracování. Příjemce se zároveň ze směrovací hlavičky dozví, kterými body datagram prošel.

Jednou z motivací k jejímu vzniku byla snaha o lepší možnosti pro testy směrování. Standardní ping umožňuje testovat jen vzájemnou dosažitelnost mezi zdrojovým počítačem a zadaným cílem. Při použití směrovací hlavičky můžete ověřit konektivitu mezi libovolnými body, a to navíc obousměrně.

Její problémy

Některá rizika směrovací hlavičky jsou poměrně zjevná a na jejich existenci je upozorňováno řadu let (viz Pekka Savola a jeho text). Patří sem především schopnost procházet firewally, NATy a dalšími body, které jinak mohou bránit v přístupu ke koncovým počítačům. Lze poslat datagram neveřejně adresovanému počítači za NATem jednoduše tak, že uvedete adresu NATu jako průchozí bod. Také firewall datagram propustí, pokud bude jako na průchozí bod směřovat na některý z veřejně přístupných strojů v chráněné síti.

Možnost pro zneužití otevírají některé nároky RFC 2460 definujícího formát IPv6 datagramu. Mimo jiné se v něm požaduje, aby směrovací hlavičky podporovaly „IPv6 uzly“ (tedy nejen směrovače, ale i koncové stroje). DoS útokům pak hraje do noty, že IPv6 uzly musí akceptovat a snažit se zpracovat rozšiřující hlavičky v libovolném pořadí a množství. Útočník tedy může do datagramu vložit několik směrovacích hlaviček a doslova jej napěchovat spoustou průchozích adres.

Biondi s Ebalardem ve svém příspěvku předvedli, jak datagram se směrovacími hlavičkami střídajícími dvojici průchozích adres A, B, A, B, A, B… je po lince (či linkách) mezi nimi předáván sem a tam a setrvá na ní báječně dlouho, než se dopracuje na konec seznamu. Když se posílá setrvalý proud takových datagramů, dochází na této trase vlastně k jeho znásobení (předchozí datagramy ještě poletují za strany na stranu a přicházejí další a další), takže je útočník schopen vytvořit výrazně větší datový tok, než je kapacita jeho připojení.

A možné řešení

Dlužno poznamenat, že rozšiřující směrovací hlavička v IPv6 nepředstavuje zásadně nový mechanismus. IPv4 umožňuje do hlavičky přidat volbu Source Routing s podobným účinkem, i když omezenější a v detailech odlišnou. Jak to, že nezpůsobuje problémy i ve starším protokolu? Především proto, že je většinou zakázána.

Nabízí se použít stejný přístup i pro IPv6 a tuto vlastnost, označovanou za „vítězství zbytečných funkcí nad zdravým rozumem“, jednoduše zakázat. U směrovačů Cisco poslouží jednoduchý příkaz

KL_NOMINACE

no ipv6 source-route

Pro Linux lze použít ip6tables s volbou -m rt --rt-type 0 a vyhovující pakety zahazovat. Merike Kaeo uvádí ve své prezentaci Problems with Route Header Type 0 konkrétní příkazy i doporučení pro FreeBSD a OpenBSD.

Dění kolem směrovací hlavičky je bouří ve sklenici vody. Je ale dobře, že vypukla dřív, než by případné zneužití způsobilo vážnější problémy.

Anketa

Považujete "IPv6 ping pong" útok za nebezpečný?

19 názorů Vstoupit do diskuse
poslední názor přidán 10. 6. 2007 20:19

Školení SEO - jak na optimalizaci pro vyhledávače

  •  
    Analýza klíčových slov - jaká slova vybrat.
  • Metody linkbuildingu - jak získat zpětné odkazy.
  • Vyhodnocování SEO - nesledujte jen pozice.

Detailní informace o školení SEO »