Vigil@nce : Noyau Linux : lecture de 2 octets via tc_fill_node
octobre 2009 par Vigil@nce
Un attaquant local peut créer une socket PF_NETLINK/NETLINK_ROUTE,
afin de lire deux octets provenant de la mémoire du noyau.
Gravité : 1/4
Conséquences : lecture de données
Provenance : shell utilisateur
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 : 15/10/2009
PRODUITS CONCERNÉS
– Linux noyau
DESCRIPTION DE LA VULNÉRABILITÉ
La structure tcmsg est définie comme suit :
– 1 octet pour tcm_family
– 3 octets de padding (alignement), composés d’un char "pad1" (1
octet) et d’un short "pad2" (2 octets)
– 4 octets pour tcm_handle
Cette structure est utilisée par les sockets de routage rtnetlink
(message RTM_GETQDISC, RTM_GETTCLASS, RTM_GETTFILTER, etc.).
La fonction tc_fill_node() du fichier net/sched/sch_api.c
n’initialise pas les 2 octets de bourrage "pad2" dans la structure
tcmsg.
Un attaquant local peut donc par exemple employer RTM_GETTCLASS
sur une socket PF_NETLINK/NETLINK_ROUTE, afin d’obtenir ces 2
octets, provenant de la mémoire du noyau.
CARACTÉRISTIQUES
Références : CVE-2009-3612, VIGILANCE-VUL-9096
http://vigilance.fr/vulnerabilite/Noyau-Linux-lecture-de-2-octets-via-tc-fill-node-9096