Vigil@nce : Noyau Linux, corruption de mémoire via FASYNC
janvier 2010 par Vigil@nce
Un attaquant local peut employer un descripteur de fichier
asynchrone, afin de corrompre la mémoire du noyau, ce qui provoque
un déni de service ou l’exécution de code.
– Gravité : 2/4
– Conséquences : accès/droits administrateur, déni de service de la
machine
– Provenance : shell utilisateur
– Moyen d’attaque : 1 démonstrateur
– Compétence de l’attaquant : spécialiste (3/4)
– Confiance : confirmé par l’éditeur (5/5)
– Diffusion de la configuration vulnérable : élevée (3/3)
– Date création : 15/01/2010
PRODUITS CONCERNÉS
– Linux noyau
– Red Hat Enterprise Linux
DESCRIPTION DE LA VULNÉRABILITÉ
L’ioctl FIOASYNC permet de placer un descripteur de fichier en
mode asynchrone. Le drapeau FASYNC est alors positionné dans la
structure "file" utilisée par le noyau. Le noyau enverra le signal
SIGIO au programme lorsque des données sont disponibles.
Les descripteurs de fichiers asynchrones sont placés par
fasync_helper() dans une liste chaînée contenant des structures
fasync_struct. Lorsque le descripteur de fichier est verrouillé,
il est aussi placé dans la liste chaînée file_lock.fl_fasync.
Lorsque le descripteur de fichier est fermé, il est enlevé de la
première liste chaînée, mais pas de la deuxième. Le noyau utilise
alors un pointeur invalide dans send_sigio().
Un attaquant local peut donc employer un descripteur de fichier
asynchrone, afin de corrompre la mémoire du noyau, ce qui provoque
un déni de service ou l’exécution de code.
CARACTÉRISTIQUES
– Références : BID-37806, CVE-2009-4141, RHSA-2010:0046-01,
VIGILANCE-VUL-9355
– Url : http://vigilance.fr/vulnerabilite/Noyau-Linux-corruption-de-memoire-via-FASYNC-9355