Im Jahr 1995 wählte die Internet Engineering Task Force (IETF) IPv6 als Nachfolger für IPv4 aus. Anfangs war das noch kein vielbeachtetes Thema. Das änderte sich erst, als Microsoft Windows Vista und die Windows-Server-Plattformen im Jahr 2007 mit IPv6-Unterstützung ausstattete. Linux in all seinen Varianten und Apples MacOS X zogen nach, und so verbreitete sich das neue Protokoll mit jeder neuen Installation. Bei allen diesen Rechner ist IPv6 heute per Default aktiv. Diese Rechner kommunizieren im Dual-Stack-Betrieb unaufgefordert auch über IPv6. Darüber hinaus verwenden Mirosofts Betriebssysteme sogenannte Transition Technologies, die quasi IPv4 als Link-Layer-Protokoll für IPv6 nutzen. Das passiert im Selbstlauf und zum Teil lange, bevor Admins den regulären IPv6-Betrieb organisieren. Und genau darin steckt eine latente Bedrohung.
Im LAN werden Microsoft Betriebssysteme, Linux und Apples OS X am häufigsten verwendet. Sie alle setzen IPv6 parallel zum IPv4-Protokoll ein. Dabei ist IPv6 standardmäßig aktiviert und aktiv – die Systeme kommunizieren im Netzwerk per Dual-Stack-Betrieb (Abbildung 1). Die folgende Übersicht zeigt die Standard-einstellungen aktueller Betriebssystemvarianten:
Windows Vista / 7 / 2008
Linux
Mac OS X
Die iOS-Versionen für iPhone und iPad haben im Auslieferungszustand ebenfalls das IPv6-Protokoll aktiviert. Gleiches gilt für Smartphones und Tablet-PCs auf Android-Basis. In beiden Welten steht dem Benutzer allerdings keine administrative Schnittstelle zur Anpassung der IPv6-Konfiguration zur Verfügung.
RFC 2462 "IPv6 Stateless Address Autoconfiguration" [1] beschreibt innerhalb des IPv6-Standards die Stateless Address Autoconfiguration (SLAAC). Die Implementierung dieser Technik ist für jeden Host verpflichtend. Weitere Methoden sind optional und können das jeweilige Host-Interface mit weiteren IPv6-Adressen konfigurieren. Bei der Initialisierung eines LAN-Interfaces werden folgende vom RFC 2462 vorgesehenen Stufen durchlaufen:
1. Link-Local Address (EUI-64 IID oder Pseudozufallszahl) generieren
2. Neighbor Solicitation (NS) für Duplicate Address Detection (DAD) senden
3. Autoconfiguration abbrechen, falls ein Neighbor Advertisement (NA) einen Adresskonflikt anzeigt
4. Router Solicitation (RS) senden
5. Falls kein Router Advertisement (RA) empfangen wird, starte DHCPv6
6. Falls ein Router Advertisement (RA) empfangen wird:
6.1. generiere Adressen für die enthaltenen Prefixe; danach DAD
6.2. falls M-Flag == 1 im Router Advertisement (RA):
6.3. starte DHCPv6, um weitere Adressen und Parameter zu erhalten
6.4. falls M-Flag == 0 und O-Flag == 1 im Router Advertisement (RA):
6.5. starte DHCPv6, um weitere Konfigurationsparameter zu erhalten (etwa DNS-Server)
Dieser Autoconfiguration-Prozess im lokalen Netz hat verschiedene Schwachstellen, die sich, wenn der Admin sie nicht zusätzlich absichert, sowohl böswillig als auch unbeabsichtigt ausnutzen lassen. Dadurch sind lokale Netzteilnehmer gefährdet, lange bevor ein regulärer IPv6-Betrieb aufgenommen wird.
Das größte Gefährdungspotenzial geht dabei von sogenannten Rogue Routern aus. Rogue Router manipulieren in böswilliger oder unbeabsichtigter Weise die Kommunikation des lokalen Link. Durch Senden einer initialen Router Solicitation (Abbildung 2) an die Link Local Multicast Address FF02::2 versuchen Hosts, im Rahmen der Stateless Address Autoconfiguration unternehmensweit oder weltweit gültige IPv6-Prefixe zu erhalten, die mit einem Interface Identifier zu einer vollständigen 128 Bit-IPv6-Adresse verknüpft werden. Damit ist die Kommunikation über Subnetzgrenzen hinweg möglich. Auf die gesendete Anfrage antwortet im Normalfall der reguläre IPv6-Router, indem er an die Link Local Multicast Adresse FF02::1 (All Nodes) ein Router Advertisement (Abbildung 3) sendet. Im Payload trägt diese Nachricht alle am lokalen Subnetz gültigen IPv6-Prefixe und weitere Flags, die eine granulare Konfiguration ermöglichen. Die Router-Advertisement-Nachricht wird außerdem periodisch wiederholt.