Vigil@nce : Noyau Linux, page exécutable sous Sparc
mars 2010 par Vigil@nce
Sur un processeur Sparc, les pages mémoire marquées comme non
exécutables sont en fait exécutables.
– Gravité : 2/4
– Conséquences : accès/droits administrateur, accès/droits
– privilégié, accès/droits utilisateur
– 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 : 24/02/2010
PRODUITS CONCERNÉS
– Linux noyau
DESCRIPTION DE LA VULNÉRABILITÉ
L’assembleur Sparc SUN4U travaille sur des constantes signées sur
13 bits :
or %reg1, constante, %resultat (resultat = reg1 OU constante)
and %reg1, constante, %resultat (resultat = reg1 ET constante)
etc.
L’instruction spéciale "sethi" permet d’affecter les 22 bits de
poids fort d’un registre (MSB), avant une instruction :
sethi %hi(constante), %resultat
or %reg1, %lo(constante), %resultat
Le noyau Linux utilise la constante _PAGE_EXEC_4U (0x1000), qui
correspond au drapeau des pages exécutables. Cependant, il
n’emploie pas sethi lors du test, donc le masque est étendu
(signé) à 0xFFFFF000, ce qui rend le test positif, à cause
d’autres bits présents.
Sur un processeur Sparc, les pages mémoire marquées comme non
exécutables sont donc en fait exécutables. Les protections, comme
la pile non exécutable, ne sont alors plus effectives.
CARACTÉRISTIQUES
– Références : BID-38393, VIGILANCE-VUL-9472
– Url : http://vigilance.fr/vulnerabilite/Noyau-Linux-page-executable-sous-Sparc-9472