Vigil@nce : Noyau Linux, élévation de privilèges via sock_sendpage, SOCKOPS_WRAP, proto_ops
août 2009 par Vigil@nce
Un attaquant local peut employer une opération sur certains types
de socket, afin d’obtenir les privilèges root.
Gravité : 2/4
Conséquences : accès/droits administrateur, déni de service de la
machine
Provenance : shell utilisateur
Moyen d’attaque : 2 attaques
Compétence de l’attaquant : débutant (1/4)
Confiance : confirmé par l’éditeur (5/5)
Diffusion de la configuration vulnérable : élevée (3/3)
Date création : 14/08/2009
PRODUITS CONCERNÉS
– Debian Linux
– Fedora
– Linux noyau
– Mandriva Enterprise Server
– Mandriva Linux
– Novell Linux Desktop
– Novell Open Enterprise Server
– OpenSUSE
– Slackware Linux
– SUSE Linux Enterprise Server
DESCRIPTION DE LA VULNÉRABILITÉ
Chaque type de socket est associé à une structure proto_ops, qui
indique les fonctions implémentant accept(), bind(), etc.
Lorsqu’un type socket ne supporte pas une fonction, il doit
pointer sur sock_no_accept(). La macro SOCKOPS_WRAP est en charge
d’initialiser ces pointeurs de fonctions. Cependant, la macro
SOCKOPS_WRAP n’initialise pas l’élément sendpage de la structure
proto_ops. Les protocoles impactés sont PF_APPLETALK, PF_IPX,
PF_IRDA, PF_X25, PF_AX25, PF_BLUETOOTH, PF_IUCV, PF_INET6
(IPPROTO_SCTP), PF_PPPOX et PF_ISDN.
De plus, la fonction sock_sendpage() ne vérifie pas si le pointeur
est valide. Elle appelle donc la fonction à l’adresse indiquée,
c’est-à-dire à l’adresse nulle, ce qui stoppe le système.
Cependant, si la vulnérabilité VIGILANCE-VUL-8861
(https://vigilance.fr/arbre/1/8861) n’a pas été corrigée, un
attaquant peut mmapper l’adresse mémoire zéro et y placer une
fonction illicite. Cette fonction s’exécute alors avec les
privilèges du noyau.
Un attaquant local peut donc employer une opération (comme
sendfile()) qui appelle sock_sendpage() sur certains types de
socket, afin d’obtenir les privilèges root.
CARACTÉRISTIQUES
Références : 516949, BID-36038, CVE-2009-2692, DSA 1862-1, DSA
1864-1, DSA 1865-1, FEDORA-2009-8647, FEDORA-2009-8649,
MDVSA-2009:205, SSA:2009-230-01, SSA:2009-231-01,
SUSE-SA:2009:045, VIGILANCE-VUL-8950
Pointé dans : VIGILANCE-VUL-8861, VIGILANCE-VUL-8950,
VIGILANCE-VUL-8953