Sunday, 13 May 2007

IPv6 Type 0 Routing Header considered harmfull, source routing redux

« UNIX er simpelt | Main | Apple Airport ikke for nørder! »

Hej igen

Tiden flyver og bloggen må ikke dø hen! Desværre har jeg været ramt af hoste og sådan generelt lidt sløj :-(

I mellemtiden har IPv6 været i medierne - på en uheldig måde. Jeg synes godt om IPv6 og mener ikke de meget hypede artikler om IPv6 sikkerhed sådan skulle stå helt ubesvarede hen.

IPv6 er den nye internetprotokol - som har været ny siden midten af 1990'erne. Denne protokol indeholder primært nye adresser, idet længden af adresser er 128-bit fremfor de nuværende 32-bit i IPv4. Samtidig er IPv6 på visse punkter en oprydning og tilpasning af internetprotokollerne. Alt i alt synes jeg personligt at der er mange ting ved IPv6 som er good thing (tm) - men resten af verden er pt. ligeglade.

Nå emnet for dette indlæg er ikke at tale generelt om IPv6, men mere specifikt om Type 0 routing header. Denne header er en extension header som indsættes efter IPv6 pakken header, i stil med følgende diagram fra RFC-2460:

   +---------------+----------------+------------------------
   |  IPv6 header  | Routing header | TCP header + data
   |               |                |
   | Next Header = |  Next Header = |
   |    Routing    |      TCP       |
   +---------------+----------------+------------------------

Hvad er en extension header så? Det er ekstra information til routere på vejen eller til modtageren af data. Der findes et antal extension header, i alt 6 stks som er defineret:

  • Hop-by-Hop Options
  • Routing (Type 0)
  • Fragment
  • Destination Options
  • Authentication Header (AH)
  • Encapsulating Security Payload (ESP)

Er extension headers så farlige? Nej, ikke generelt - men netop routing header type 0 kan misbruges. Sagen som er i medierne pt. startede på CanSecWest konferencen hvor Philippe BIONDI og Arnaud EBALARD holdt en præsentation med titlen IPv6 Routing Header Security. Den kan hentes på adressen: http://www.secdev.org/conf/IPv6_RH_security-csw07.pdf

Præsentationen indeholder nogle sjove tricks og giver nogle råd man kan gøre brug af i forbindelse med IPv6. Blandt andet beskrives hvordan man kan lave denial-of-service på noget IOS udstyr og mere vigtigt at man ved at fidle med IPv6 pakkerne - og lyve kan lave spøjse ting. Det som er resultatet er blandt andet at man kan generere traffik som så vil fortsætte i IPv6 netværk i længere tid. Det kan resultere i enten link saturation eller amplification, fordi trafikken fortsætter indtil den timer ud fordi TTL tælles ned.

En af grundene til at det går specielt galt er desuden at mange IPv6 forbindelser idag er IPv6 tunneler over IPv4 infrastrukturen på internet. Derved sendes IPv6 pakker til en IPv4/IPv6 dual-stack router, som sender IPv6 pakken videre som IPv4. På den måde kan en IPv6 pakke sendes meget langt uden at TTL værdien i IPv6 headeren tælles ned!

Godt så, ovenstående forklarer det ikke i detaljer - men det er vist forstået at den der Type 0 header skal dø - og det er helt fint med mig :-). OpenBSD har allerede fået patches samtidig med at både undeadly og securityfocus rapporterer at IETF gør noget ved det.

Men hvad kan vi så gøre?

Vi kan lade være med at gå i panik - lige nu er hypen at IPv6 er dårligt, usikkert og uafprøvet. Men en enkelt bug i standarden gør ikke at alle dele er noget skidt! IPv6 indeholder meget mere end Type 0 routing header.

Hvis vi drager paralleller til IPv4 har man i mange år vidst at source routing er noget skidt men aligevel er det kun i de allernyeste versioner af UNIX systemer at source routing er slået fra således at kernen ikke behandler dem. En hurtig google-søgning gav eksempelvis link til artiklen trends in computer attacks kort beskriver kendte angreb i IP-netværk - og bemærk at den er fra 1998! Allerede for 10 år siden kendte vi til problemer i Internetprotokollerne, som spoofing og source routing.

Burde IPv6 folkene så ikke have udeladt denne Type 0 routing header? Måske - men hvem kan se hvad fremtiden bringer? Ihvertfald havde de en ide om at den skulle bruges, men i realiteten er den ikke nødvendig og bruges ikke - men ville det ikke have været ærgeligt om man lavede en ny protokol til erstatning for IPv4 og så manglede den funktionalitet? Jeg stemmer for at vi lader tvivlen komme dem til gode, fjerner Type 0 (som til dels er erstattet af Type 2 til Mobile IPv6, så vidt jeg forstår).

Samtidig skal vi huske at hvis IPv6 fænger an og bliver udbredt kan vi risikere at stå i samme problem når man via IPv4 tunnelling over IPv6 infrastrukturer kan sende IPv4 traffik! I disse tilfælde vil IPv4 TTL værdien heller ikke blive talt ned ved hver IPv6 router som den indkapslede pakke sendes over!

Det vi vi skal gøre er at være på forkant med teknologierne og tænke os om. Hele tiden lave mange lag af sikkerhed og være fremme i skoene. I den forbindelse skal både IPv4 og IPv6 netværk passes og konfigureres rigtigt og med omtanke.

Sikkerhedsråd til IP(v6) netværk:

  • Sørg for at styre ingress og egress filtering - ligesom på IPv4
  • Lav en god DNS infrastruktur - bør være på plads
  • Design netværket så I kan ændre på det! Lad VÆRE MED at hardcode IPv6 adresser i /etc/hosts og applikationer. DON'T!
  • Brug gode protokoller, som giver kryptering over usikre netværk. SSH og HTTPS er to eksempler på udbredte
  • protokoller som er ligeglade med aflytning
  • Tænk på sikkerheden i netværket, er det nødvendigt med alle porte åbne til alt på kryds og tværs?

Bemærk at med IPv6 har man igen muligheden for at subnette fornuftigt og fordi man får allokeret en god klump adresser kan man lave gode adresseplaner - uden alt det mismask man ser idag på små IPv4 netværk. NAT dør samtidigt og man kan i sin firewall nemmere følge forbindelser og sige hvor trafikken kommer fra.

Når du således læser om IPv6 og problemer med sikkerheden skal du således ikke straks sige, pyha godt jeg ikke bruger det skrammel - men nærmere begynde selvransagelse - hvordan ser dit nuværende netværk ud!

PS undskyld de lange sætninger ovenfor uden punktummer, jeg er træt og hoster stadig.

Posted by hlk at CEST 20:05 13/05/2007 in IPv6

 

[Trackback URL for this entry]

Your comment:

(not displayed)
 
 
 

Live Comment Preview:

 
« september »
mationtofr
  12345
6789101112
13141516171819
20212223242526
27282930