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
Tweeter