# Usurpation d'adresse IP

L'usurpation d'adresse IP (en anglais : IP spoofing ou IP address spoofing) est une technique de piratage informatique utilisée en informatique qui consiste à envoyer des paquets IP en utilisant une adresse IP source qui n'a pas été attribuée à l'ordinateur qui les émet. Le but peut être de masquer sa propre identité lors d'une attaque d'un serveur, ou d'usurper en quelque sorte l'identité d'un autre équipement du réseau pour bénéficier des services auxquels il a accès.

## Explications

Le protocole IP et le routage sur Internet ne vérifient pas l'adresse source. Cette caractéristique du protocole IP n'est pas un défaut mais une fonctionnalité voulue. Le protocole IP a été conçu pour permettre au routage des paquets IP de s'adapter en fonction des coupures réseau, la fiabilité des liens de point à point étant faible dans les années 1970. Ainsi les routeurs ne sont pas censés avoir de préjugé sur l'origine des paquets.
Sauf en cas de restriction du point d'accès à Internet, n'importe quel ordinateur peut fabriquer un paquet IP avec n'importe quelle adresse source. Cette technique peut ainsi servir à masquer son adresse source réelle ou à attaquer des réseaux en usurpant l'adresse d'un autre ordinateur.
Pour établir un lien bidirectionnel entre deux hôtes, comme avec le protocole TCP, il est cependant nécessaire que le routage entre les deux systèmes soit possible. L'usurpation d'adresse d'un autre sous-réseau peut impliquer l'altération de tables de routage des routeurs intermédiaires.
L'usurpation d'adresses IP peut être combinée avec des attaques de dénis de service de la machine dont l'IP est usurpée afin d'empêcher toute réponse de celle-ci, car la machine enverrait un paquet qui invaliderait toute connexion car elle n'en a pas de trace dans son système.
Elle peut aussi être combiné avec la prédiction de pseudo-aléas : les connexions TCP utilisent des numéros de séquence dont la valeur initiale est choisie de manière pseudo-aléatoire. Si l'algorithme de pseudo-aléas est trop prédictible, l'attaquant peut être capable de prédire la prochaine valeur à partir d'une demande de connexion dont l'attaquant est capable de récupérer la réponse. Ainsi il peut forger une suite de paquets qui demandent une connexion TCP et qui semblent répondre aux paquets qui établissent cette connexion TCP.

## Historique

En 1995, le CERT américain publie le premier avertissement concernant l'usurpation d'adresse IP.
En effet, certains services peu sécurisés comme rsh se basent sur l'adresse IP pour identifier l'émetteur. L'exemple typique est d'utiliser l’adresse IP d'une relation de confiance. Un pirate utilise donc l'adresse IP d'une machine de confiance (autorisée) pour obtenir une connexion à un serveur.

## Recommandation

Pour éviter ce genre d'attaques, il est recommandé de ne pas utiliser de service se basant sur l'adresse IP pour identifier les clients. Des algorithmes cryptographiques peuvent être utilisés pour authentifier le correspondant, comme c'est le cas par exemple dans IPsec, TLS, SSH.
Il est recommandé que le système d'exploitation utilisé génère des numéros de séquences difficilement prévisibles au niveau de TCP. Sur un ordinateur, les algorithmes générateurs de nombres aléatoires sont toujours pseudo-aléatoires. L'aspect déterministe du comportement d'un ordinateur qui est ce pourquoi les ordinateurs sont utilisés, devient un problème quand les questions de sécurité et de chiffrement sont abordées.
Pour les protocoles utilisant plusieurs connexions TCP (comme FTP), il est recommandé d'utiliser des numéros de port non prévisibles. Quand l'application s'en remet au système pour attribuer le numéro de port c'est alors au système d'implémenter cette recommandation.
Une solution peut être de refuser les paquets TCP SYN successifs depuis une même adresse pour éviter que le pirate puisse prédire le comportement du générateur de numéros de séquences. Mais une telle restriction peut limiter la disponibilité du service (attaque par déni de service ou DoS).
L'usurpation d'adresse IP peut également être utilisée pour masquer l'identité du hacker lors d'attaques de type déni de service ou d'attaque par rebond. Dans ce cas-là, une adresse IP différente peut être utilisée pour chacun des paquets de l'attaque, ce qui rend inefficace toute tentative de filtrage intelligent.
Les administrateurs de réseaux locaux peuvent utiliser le filtrage des adresses IP sources entrantes des clients finaux. Ceci peut aussi être accompli de façon automatique grâce au reverse path forwarding (uRPF), qui indique au routeur de vérifier le routage de l'adresse IP source de tout paquet entrant par une interface, et si l'interface de réception diffère de l'interface de routage, de détruire le paquet, ce qui rend toute tentative d'usurpation inopérante. Ceci n'est pas possible en cas de routage asymétrique. Ce filtrage sera plus efficace s'il est effectué proche de la source. Un utilisateur final qui voudrait donc partager le trafic sortant entre deux liens vers des fournisseurs d'accès différents s'en verrait empêché, chacun des fournisseurs n'autorisant que des adresses source attendues.