Vulnérabilité sur certaines implémentations Unix d'IPSec

Date :06 Juillet 2005

Publication: Article

Une vulnérabilité a été découverte dans l'implémentation du protocole IPSec de produits dérivés de KAME (package sous Unix implémentant IPSec : http://www.kame.net/), permettant de contourner la politique de sécurité mise en place au travers d'IPSec.

En effet, NetBSD 1.5.2, FreeBSD 4.5 et les implémentations KAME de NetBSD et FreeBSD ne contrôlent pas correctement les paquets transférés ("forwardés"), ces implémentations ne respectant pas la RFC 2401 (http://www.ietf.org/rfc/rfc2401.txt), document spécifiant l'architecture du protocole de sécurité IPsec.

Pour rappel :

  • Une passerelle de sécurité ("Security Gateway") est un système implémentant le protocole IPSec,

  • Le protocole ESP ("Encapsulating Security Payload") fournit un ensemble de services de sécurité pour les protocoles IPv4 et IPv6, parmi lesquels confidentialité, authentification de l'origine des données, intégrité et non-rejeu des communications (http://www.ietf.org/internet-drafts/draft-ietf-ipsec-esp-v3-02.txt).

Le problème qui a été découvert se situe sur une passerelle de sécurité où les paquets provenant d'une passerelle correspondante ("Peer Gateway") requièrent le protocole ESP.

Si pour une raison quelconque (problèmes de configuration par exemple), la "Peer Gateway" n'arrive pas à utiliser ESP, elle va envoyer des paquets non-ESP. Si la "Security Gateway" locale suit la RFC 2401 et effectue le contrôle SPD ("Security Policy Database") entrant ("SPD inbound"), le paquet sera abandonné. Pour rappel, SPD permet de traiter tout le trafic, qu'il soit IPsec ou non, entrant ou sortant.

Le problème est qu'avec le code actuel des implémentations KAME, le contrôle SPD entrant n'est pas effectué correctement et des paquets (éventuellement forgés) sont transmis, vers des hôtes dépendant de la "Security Gateway" locale. Ainsi, des paquets non-ESP vont être transférés par la "Security Gateway", contournant de la sorte la politique de sécurité mise en place.

KAME, NetBSD et FreeBSD ont corrigé ce problème (fichier "sys/netinet/ip_input.c") dans les versions :

  • KAME 1.37 pour NetBSD,
  • KAME 1.33 pour FreeBSD,
  • NetBSD -current 1.145 et 1.5-stable (1.114.4.8),
  • FreeBSD -current (1.192) et -stable (1.130.2.35).

Le Cert-IST a estimé que les produits KAME (et ses dérivés), ainsi que le contexte de la vulnérabilité étaient relativement spécifiques, et n'a donc pas émis d'avis sur ce problème.