Vigil@nce : Noyau Linux, déni de service sur x86_64
février 2010 par Vigil@nce
SYNTHÈSE DE LA VULNÉRABILITÉ
Sur un processeur x86_64, un attaquant local peut employer un
programme ELF illicite, afin de stopper le système.
Gravité : 1/4
Conséquences : déni de service de la machine
Provenance : shell utilisateur
Moyen d’attaque : 1 attaque
Compétence de l’attaquant : technicien (2/4)
Confiance : confirmé par l’éditeur (5/5)
Diffusion de la configuration vulnérable : élevée (3/3)
Date création : 01/02/2010
PRODUITS CONCERNÉS
– Linux noyau
DESCRIPTION DE LA VULNÉRABILITÉ
Les appels système (select(), poll(), etc.) et l’espace mémoire
sont différents d’un système à l’autre. Par exemple, un programme
conçu pour utiliser select() de Solaris peut ne pas fonctionner
avec le select() de Linux à cause de différences mineures de
comportement.
Les personnalités (ou domaines d’exécution) indiquent comment le
noyau doit se comporter :
– PER_LINUX : mode normal pour Linux
– PER_SOLARIS : émuler le fonctionnement du noyau Solaris
– PER_IRIX32 : émuler le fonctionnement du noyau IRIX
– etc.
La macro SET_PERSONALITY() initialise ces personnalités.
Sur un processeur x86_64, un attaquant peut démarrer une
application 32 bits, qui appelle via execve() un programme 64
bits, ce qui échoue. Cependant, la macro SET_PERSONALITY() était
tout de même appelée durant le execve(). Le programme a alors
obtenu une personnalité 64 bits, alors qu’il est 32 bits, ce qui
corrompt son état, et stoppe le noyau.
Sur un processeur x86_64, un attaquant local peut donc employer un
programme ELF illicite, afin de stopper le système.
CARACTÉRISTIQUES
Références : BID-38027, CVE-2010-0307, VIGILANCE-VUL-9395
http://vigilance.fr/vulnerabilite/Noyau-Linux-deni-de-service-sur-x86-64-9395