Vigil@nce : Noyau Linux, déni de service via e1000
juin 2009 par Vigil@nce
Un attaquant peut envoyer un paquet trop grand afin de stopper les systèmes équipés d’un driver e1000.
Gravité : 2/4
Conséquences : déni de service du service
Provenance : LAN
Moyen d’attaque : aucun démonstrateur, aucune attaque
Compétence de l’attaquant : expert (4/4)
Confiance : confirmé par l’éditeur (5/5)
Diffusion de la configuration vulnérable : élevée (3/3)
Date création : 03/06/2009
PRODUITS CONCERNÉS
– Linux noyau
DESCRIPTION DE LA VULNÉRABILITÉ
Le driver e1000 implémente le support des cartes réseau Intel
PRO/100, 1000 et 10GbE.
Une trame Ethernet se termine par 4 octets de vérification CRC. La
fonction e1000_clean_rx_irq() du driver enlève donc 4 octets afin
d’obtenir la taille réelle des données.
Lorsqu’une trame réseau est trop grande (jumbo frames), la carte
la stocke dans plusieurs buffers. Normalement, le driver e1000 ne
supporte pas ce cas, cependant son code de détection est invalide,
et il traite tout de même le dernier buffer.
La taille du dernier buffer peut être inférieure à 4. Après avoir
enlevé 4, la fonction e1000_clean_rx_irq() travaille alors sur une
taille négative, ce qui provoque une erreur.
Un attaquant peut donc envoyer une trame Ethernet de taille
légèrement supérieure au buffer de la carte, afin de mener un déni
de service.
CARACTÉRISTIQUES
Références : BID-35185, CVE-2009-1385, VIGILANCE-VUL-8757
http://vigilance.fr/vulnerabilite/Noyau-Linux-deni-de-service-via-e1000-8757