Vigil@nce : Noyau Linux, déni de service via NFSv4 Set ACL
mars 2011 par Vigil@nce
Ce bulletin a été rédigé par Vigil@nce : http://vigilance.fr/
SYNTHÈSE DE LA VULNÉRABILITÉ
Un attaquant local peut employer une opération NFSv4 Set ACL
contenant plus d’une page mémoire de données, afin de stopper le
système.
– Gravité : 1/4
– Date création : 07/03/2011
PRODUITS CONCERNÉS
– Linux noyau
DESCRIPTION DE LA VULNÉRABILITÉ
Le noyau Linux utilise différentes fonctions/macros de gestion de
la mémoire :
– alloc_page(), put_page() : allocation d’une page mémoire
– vmalloc(), vfree() : allocation d’une zone de mémoire virtuelle
(la mémoire physique n’est pas forcément contigüe, et la taille
peut dépasser 128ko)
– kmem_cache_alloc(), kmem_cache_free() : utilisation du slab
(cache d’objets de taille identique de 32octets à 128ko)
– kmalloc(), kfree() : allocation d’une zone physiquement
contigüe de mémoire (la taille est limitée à maximum 128ko, car
le slab est employé)
La fonction __nfs4_proc_set_acl() du fichier fs/nfs/nfs4proc.c
définit des ACL pour NFS. Les données des ACL sont stockées dans
une zone allouée avec alloc_page(). Cependant, lorsque la taille
des données de l’ACL dépasse la taille d’une page, ces données
sont copiées dans une zone allouée avec kmalloc(). Lorsque les
données ne sont plus nécessaires, la fonction put_page() tente
alors de libérer une zone allouée de manière incompatible par
kmalloc().
Un attaquant local peut donc employer une opération NFSv4 Set ACL
contenant plus d’une page mémoire de données, afin de stopper le
système.
ACCÈS AU BULLETIN VIGIL@NCE COMPLET
http://vigilance.fr/vulnerabilite/Noyau-Linux-deni-de-service-via-NFSv4-Set-ACL-10426