L’auto configuration : Des nouveaux mécanismes IPv6 qui apportent de nouvelles vulnérabilités

Nourelhouda Boutahar Etude - Recherche

L’auto-configuration vise à réduire les efforts d’intégration des machines dans le réseau local pour les connecter à internet. IPv6 offre deux méthodes d’auto-configuration. La première est la configuration avec état (stateful address autoconfiguration). Ce mode impose la conservation des informations sur les adresses attribuées par un serveur DHCPv6 qui ne diffère pas du DHCP. DHCPv6 attribut, depuis un pool, des adresses par le biais d’un serveur dédié. A contrario, le deuxième mode, dit sans état, ne nécessite aucun serveur pour conserver l’état interne du réseau. Il permet aux hôtes de créer, de divulguer leurs adresses et de s’informer sur l’adresse d’une autre machine sans passer par un serveur. La configuration des adresses sans état (SLAAC : Statless Address Autoconfiguration) se base sur le mécanisme de la découverte des voisins (NDP: Neighbor Discovery Protocol) et ne nécessite aucune gestion administrative des adresses attribuées. Les machines se connectent au réseau, créent leur propre adresses et vérifient leur unicité avant de les utiliser. Dans cet article nous allons découvrir le principe de l’auto-configuration (avec NDP et DHCPv6) une vue plus axée sur la sécurité de ce mécanisme. Le DHCPv6 fonctionne de la même manière que le DHCP classique, sauf qu’il apporte des nouveautés. D’une part, DHCPv6 n’utilise plus les messages de broadcast, car en IPv6 les adresses de multicast ff02::1:2 permettent la sollicitation du serveur DHCP sans diffusion de la demande sur l’intégralité du réseau. Cette adresse désigne tous les serveurs DHCP et les agents relais sur le segment de réseau local. D’autre part, les demandes ne sont plus envoyées avec l’adresse 0.0.0.0 comme source du paquet. Tous les hôtes disposent d’une adresse lien local qu’ils peuvent utiliser pour solliciter le serveur.

Figure 1 : Fonctionnement du DHCPv6

Cependant, les vulnérabilités de l’ancien protocole sont toujours présentes. Nous allons voir comment il est toujours possible de faire un DHCP spoofing.

 

En DHCPv6, les ports UDP utilisés sont le 546 (coté client) et le 547 (coté serveur). Pour acquérir l’adresse du serveur DHCPv6, le client va envoyer un paquet de type sollicitation (SOLICIT) à l’adresse multicast ff02::1:2  (1), puis il va recevoir un  paquet de type annonce (ADVERTISE) du serveur  (2) :

Figure 2 : Sollicitation du serveur DHCPv6

Un attaquant connecté au réseau peut répondre à la sollicitation du client à la place du serveur légitime (3) :

Figure 3 : Fake DHCPv6 advertisement

Par la suite la victime va répondre par un message REQUEST vers l’adresse multicast ff02::1:2 . Ce message aura comme première réponse le REPLY  forgé par l’attaquant pour terminer la communication et passer pour le serveur DHCPv6. En IPv6, la menace est plus sévère car l’attaquant n’est pas nécessairement dans le même groupe de multicast. L’attaquant, peut répondre et recevoir une copie des messages de SOLICIT en provenance d’un groupe autre que le sien et envoyés vers l’adresses ff05::1:3. Cette adresse regroupe tous les serveurs DHCP du réseau local, contrairement à l’adresse ff02::1:2 dont la portée est limitée au lien local.

En plus du DHCPv6, IPv6 offre  la possibilité de l’auto-configuration en mode stateless (sans état en français). Ce mécanisme repose sur le protocole de découverte de voisin NDP qui, à son tour utilise des messages ICMPv6 en multicast ou en unicast. NDP permet aux équipements de se connecter au même réseau local et de dialoguer entre eux sans connaitre la liste exacte  de tous les  équipements présents dans le réseau; Chaque équipement gère ceux avec qui il communique et à  fur et à mesure des communications il construit sa table de voisin.

Les fonctionnalités du NDP sont nombreuses. En principe, l’auto-configuration via NDP permet la découverte de routeur, du préfixe du réseau, des  adresses dupliquées (DAD : Duplicated Address Detection ) et des paramètres du lien notamment la taille du MTU (Maximum Transmition Unit), et le nombre de sauts maximal autorisé. NDP remplace le protocole ARP car il permet la résolution d’adresses. Il permet également la détection d’inaccessibilité des voisins (NUD : Neighbor Unreachability Detection), en plus le protocole permet la redirection et information les hôtes s’il existe un autre routeur sur le lien qui fournit un meilleur chemin grâce aux messages ICMPv6 redirect.

Les messages ICMPv6 utilisés par NDP sont:

  • Router Solicitation: message émis par un équipement, pour recevoir des informations du routeur plus rapidement, au démarrage, au reboot ou quand il se connecte au réseau ou cherche à faire des mises à jour.
  • Router Advertisement: message émis périodiquement par les routeurs ou en réponse à un message de sollicitation d’un routeur par un équipement. Ce message informe les hôtes des paramètres de configuration, notamment le préfixe utilisé pour la création des adresses IP, la valeur du MTU , le hop limite (équivalent du TTL en IPv4), etc.
  • Neighbor Solicitation: message qui permet d’obtenir des informations d’un équipement dans le même sous réseau. La destination est, soit l’adresse de multicast sollicitée correspondant à l’adresse recherchée, soit l’adresse de l’équipement dans le cas d’une détection d’inaccessibilité des voisins (NUD : Neighbor Unreachability Detection).Il est également possible d’envoyer ce message avec l’adresse destination qu’un hôte vient de créer dans le but de vérifier qu’elle n’est pas déjà utilisée (DAD : Duplicated Address Detection). Dans le cas de la détermination de l’adresse physique, le message est équivalent à la requête ARP du protocole IPv4.
  • Neighbor Advertisement: message émis en réponse à une sollicitation, ou émis spontanément pour propager une information de changement d’adresse physique
  • Redirect: message utilisé quand le routeur connaît une route meilleure (en nombre de sauts) pour aller à une destination

NDP fonctionne différemment, sauf que son fonctionnement permet toujours de faire du spoofing. Par la suite, nous allons montrer comment il est possible d’attaquer le protocole NDP pour faire du router  avertissement spoofing et du neighbor discovery spoofing (équivalent de l’ARP spoofing).

Supposons  que nous avons une machines qui veuille se connecter  sur un réseau local. Le fonctionnement  normal  consiste en la réception  des annonces de routeur (Router advertisement) envoyées périodiquement par les routeurs  vers l’adresse de multicast ff02::01, qui regroupe tous les hôtes connectés sur le lien, pour indiquer leur présence et communiquer les différents paramètres du lien physique:

Figure 4 : Router advertisement

Figure 5 : Router solicitation

Il est possible  également d’envoyer des messages router solicitation (1) vers l’adresses de multicast ff02::02, qui regroupe tous les  routeurs sur le lien, pour demander un router advertisement  immediat (2) dans le cas  d’un reboot par exemple.

Ce mécanisme peut être attaqué en envoyant, à la place du routeur, un fake router advertisement , avec un flag ‘preference’ mis à la valeur High :

Figure 6 : Fake router advertisement

A cette étape, la victime considère l’attaquant comme routeur par défaut. Si ce dernier n’active pas le forwarding pour rediriger le trafic vers le routeur légitime, l’attaque ne sera pas du type  man in the middle mais plutôt une attaque DOS.

De la même manière il est possible de générer des fake neighbor advertisement  et de répondre à une sollicitation de  voisin pour faire  du man in the middle entre deux hôtes :

Figure 7 : Fake neighbor advertisement

Quoi que le voisin légitime réponde à la sollicitation, l’attaquant peut toujours envoyer un fake neighbor advertisement qui va demander à la victime de changer l’adresse MAC déjà reçue  avec celle de l’attaquant contenue dans le nouveau advertisement. Ce grâce au flag ‘override’ qui est utilisé pour informer ses  voisins d’un changement d’adresse MAC.

En conclusion, l’autoconfiguration en IPv6 est vulnérable. le nouveau mécanisme du protocole ajoute son lot de vulnérabilités. Il est toujours possible de mener les mêmes attaques : Spoofing, Dos, Man in the Midle et même les attaques DOS, mais de manière differemente. NDP a été étendu avec l’extension de sécurité nommée Secure Neighbor Discovery (SEND). Cette extension qui fait appel aux adresses générées de manière cryptographique (Cryptographically Generated Addresses, CGA) dite également adresses auto-signées. SEND et CGA donnent la possibilité à un nœud (machine non-routeuse) de protéger son adresse, et ce en apposant sa signature électronique à chaque message ND qu’il émet sur le réseau. Ils permettent également la signatures cryptographiques avec certificat pour authentifier les annonces des routeurs. Ce protocole demeure cependant délicat à implémenter dans le noyau, et difficile à déployer sur un réseau.