Vous êtes sur le site public du Cert-IST
Les tunnels GRE et le système Cisco IOS

Date :29 Septembre 2006

Publication: Article

Le groupe allemand "Pheneolit" a découvert ce mois-ci une vulnérabilité dans la gestion des tunnels GRE par les systèmes Cisco IOS permettant, dans des conditions bien particulières, de contourner les contrôles d'accès (ACL) de l'équipement.

Introduction : GRE c'est quoi ?

Les tunnels GRE ("Generic Routing Encapsulation" - RFC 1701 et 2784) permettent d'encapsuler des protocoles réseau (niveau 3) dans n'importe quel autre protocole réseau.

Ce type de tunnel est généralement utilisé pour encapsuler de l'IP sur un autre réseau IP. Cette méthode peut être retenue afin de faire communiquer par exemple deux sites distants au travers d'Internet lorsque ces deux sites possèdent chacun une classe d'adresses privée (RFC1918) et ne sont pas capables d'utiliser la translation d'adresses sur l'ensemble de leurs machines internes.

Il est important de noter que ce type de tunnel ne propose pas de mécanisme de chiffrement des données, ni d'authentification forte des deux extrémités du tunnel.

Problème de la gestion des tunnels GRE sous Cisco IOS

La vulnérabilité est présente dans la gestion des tunnels GRE par les systèmes Cisco IOS 12.0, 12.1 et 12.22. Les versions 12.3, 12.4 et la version 12.0(23)S ayant activé la fonctionnalité CEF ("Cisco Express Forwarding") ne sont pas impactés par ce problème.

Cette vulnérabilité est due à une mauvaise gestion des options de routage par la source ("Source Routing" - mécanisme différent de celui implémenté dans IPv4) contenues dans un en-tête GRE. Notamment, le champ "offset", qui est normalement utilisé pour indiquer le début de l'adresse courante de routage par la source à analyser (parmi une liste d'adresses), n'est pas examiné correctement par le système d'exploitation de Cisco. Cette erreur déclenche un comportement erratique lors de l'analyse du paquet GRE par le système IOS. Ceci a pour conséquence d'interpréter les données des paquets précédemment reçus, situées alors en mémoire (dans des "buffers"), comme étant la charge utile du paquet GRE. Cet état peut permettre la mise en œuvre de divers scénarios d'attaques.

Cependant, cette vulnérabilité est exploitable uniquement par une personne capable d'injecter des paquets arbitraires dans un tunnel GRE existant. Ainsi, une telle personne peut par exemple, en envoyant au préalable plusieurs paquets ICMP contenant des morceaux d'un paquet IP malicieux dans leur champ de données (paquets ICMP qui seront mis en mémoire par le système IOS), faire reconstituer ce paquet IP malicieux (présent ainsi en mémoire) lors du traitement d'un paquet GRE spécifiquement formaté. Le paquet IP malveillant sera alors routé de manière classique par l'équipement.

Ce type d'exploitation permet de faire contourner au paquet IP ainsi reconstitué les contrôles d'accès (ACL) positionnés sur l'équipement réseau.

Il est à noter cependant que l’exploitation de cette vulnérabilité reste très difficile à mettre en œuvre et nécessite des accès préalables au réseau cible (capacité d'utiliser le tunnel GRE). Ces raisons ont amené le Cert-IST à ne pas faire d'avis de sécurité sur ce problème.

Préconisations de Cisco :

Cisco recommande principalement d'utiliser un autre type de tunnel (IPSec) pour faire transiter les données entre deux réseaux distants.

Cependant, si l'utilisation de tunnels GRE est incontournable, Cisco recommande :

 Cisco fournit également un document détaillé pour la mise en œuvre des solutions de type ACL afin de protéger les tunnels GRE légitimes : http://www.cisco.com/en/US/products/sw/iosswrel/ps1835/tsd_products_security_response09186a008073251d.html


Pour plus d'information :