Vigil@nce : Noyau Linux, élévation de privilèges en 64 bits
janvier 2009 par Vigil@nce
SYNTHÈSE DE LA VULNÉRABILITÉ
Sur un processeur 64 bits, un attaquant local peut utiliser un
appel système 64 bits ayant un paramètre 32 bits afin de mener un
déni de service ou d’élever ses privilèges.
Gravité : 2/4
Conséquences : accès/droits administrateur, déni de service du
service
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 : 14/01/2009
PRODUITS CONCERNÉS
– Linux noyau
DESCRIPTION DE LA VULNÉRABILITÉ
L’ABI (Application Binary Interface) de processeurs 64 bits (s390,
powerpc, sparc64, mips) demande à ce que les paramètres des appels
système soient étendus sur 64 bits. Par exemple, -3 (0xFFFFFFFD)
doit être converti en 0xFFFFFFFFFFFFFFFD.
Le noyau Linux utilise la macro "asmlinkage" dans chaque
définition d’appel système. Par exemple :
asmlinkage long sys_example(int para) ;
Cela modifie le code généré par le compilateur :
– en mode utilisateur, cet appel système récupère son paramètre
depuis la pile
– en mode noyau, cet appel système récupère son paramètre depuis
un registre CPU
Le compilateur peut supposer que le paramètre est sur 64 bits pour
faire des optimisations lors de comparaisons avec un nombre sur 32
bits. Cependant, lorsque le paramètre vient de la pile (mode
utilisateur), l’attaquant peut passer 0xFFFFFFFF00000005 qui sera
alors comparé à 5 sur 32 bits uniquement.
Cette vulnérabilité concerne potentiellement tous les appels
systèmes 64 bits ayant un ou plusieurs paramètres sur 32 bits.
L’impact de la vulnérabilité dépend du code optimisé par le
compilateur.
Sur un processeur 64 bits, un attaquant local peut donc utiliser
un appel système 64 bits ayant un paramètre 32 bits afin de mener
un déni de service ou d’élever ses privilèges.
CARACTÉRISTIQUES
Références : 479969, BID-33275, CVE-2009-0029, VIGILANCE-VUL-8390
http://vigilance.fr/vulnerabilite/Noyau-Linux-elevation-de-privileges-en-64-bits-8390