Vigil@nce : Noyau Linux, élévation de privilèges via splice
October 2008 by Vigil@nce
SYNTHÈSE
Un attaquant local peut créer un fichier sgid afin d’obtenir les
privilèges d’un groupe.
Gravité : 2/4
Conséquences : accès/droits privilégié
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 : 03/10/2008
PRODUITS CONCERNÉS
– Linux noyau
DESCRIPTION
Chaque fichier/répertoire a un propriétaire et un groupe. Le bit
sgid (octal 02000) a la signification suivante :
– sur un fichier : lorsque ce fichier est exécuté, le processus
possède les privilèges du groupe du fichier (et non du groupe
de l’utilisateur exécutant le fichier)
– sur un répertoire : lorsqu’un fichier est créé dans ce
répertoire, son groupe est celui du répertoire (et non le
groupe de l’utilisateur créant le fichier) (sémantique
compatible BSD)
Les fonctions open() et creat() permettent d’indiquer le mode
voulu lors de la création d’un fichier. Un attaquant local peut
donc créer un fichier avec le bit sgid dans un répertoire
possédant aussi ce bit. Le fichier a alors le groupe du
répertoire, et le bit sgid. L’attaquant peut ensuite employer
splice() pour convertir ce fichier en programme binaire (il ne
peut pas employer write() car cette fonction enlève le bit sgid).
Un attaquant local peut ainsi créer un programme sgid afin
d’obtenir les privilèges du groupe. Pour mettre en oeuvre cette
attaque, un répertoire sgid doit exister sur le système.
CARACTÉRISTIQUES
Références : 464450, BID-31567, CVE-2008-3833, VIGILANCE-VUL-8143