
CVE-2017-16995 (vulnérabilité d'élévation de privilèges locale sous Ubuntu)
Ubuntu est un système d'exploitation open source GNU/Linux principalement destiné aux applications de bureau, basé sur Debian GNU/Linux. Récemment, un chercheur en sécurité a révélé que la version la plus récente d'Ubuntu (Ubuntu 16.04) présente une vulnérabilité d'élévation de privilèges locale, numérotée CVE-2017-16995. Cette vulnérabilité se trouve dans le noyau Linux lorsqu'il appelle eBPF bpf(2). Lorsqu'un utilisateur fournit un programme BPF malveillant provoquant une erreur de calcul dans le module de vérification eBPF, cela entraîne des problèmes de lecture/écriture mémoire arbitraire. Un utilisateur peu privilégié peut utiliser cette vulnérabilité pour obtenir des privilèges d'administration. Cette vulnérabilité a été corrigée dans les anciennes versions, mais elle reste exploitable dans la version la plus récente. Aucun correctif officiel n'a encore été publié, la vulnérabilité est en état 0-day.
Linux Kernel Version 4.14-4.4 N'affecte que les distributions Ubuntu/Debian
Critique
bearcat@ubuntu:/opt$ lsb_release -a
<br>No LSB modules are available.
<br>Distributor ID: Ubuntu
<br>Description: Ubuntu 16.04.4 LTS
<br>Release: 16.04
<br>Codename: xenial
<br>bearcat@ubuntu:/opt$ uname -a
<br>Linux ubuntu 4.4.0-116-generic #140-Ubuntu SMP Mon Feb 12 21:23:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
<br>bearcat@ubuntu:/opt$ id
<br>uid=1000(bearcat) gid=1000(bearcat) <br>groups=1000(bearcat),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),110(lxd),115(lpadmin),116(sambashare)
<br>bearcat@ubuntu:/opt$ ls
<br>exploit.c
<br>bearcat@ubuntu:/opt$ gcc exploit.c -o exploit
<br>bearcat@ubuntu:/opt$ ./exploit
<br>task_struct = ffff88003a0db800
<br>uidptr = ffff8800374b76c4
<br>spawning root shell
<br>root@ubuntu:/opt# id
<br>uid=0(root) gid=0(root) groups=0(root),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),110(lxd),115(lpadmin),116(sambashare),1000(bearcat)
<br>root@ubuntu:/opt#
Aucune solution de mise à jour claire n'a été proposée pour le moment, mais il est conseillé aux utilisateurs de limiter l'appel système bpf(2) pour les utilisateurs normaux en modifiant un paramètre du noyau afin d'atténuer le problème :
Définir le paramètre kernel.unprivileged_bpf_disabled = 1 pour empêcher cette élévation de privilèges en limitant l'accès à l'appel bpf(2).
root@Ubuntu# echo 1 > /proc/sys/kernel/unprivileged_bpf_disabled
Mettre à niveau le noyau Linux (nécessite un redémarrage du serveur) :
Cette étape a déjà été décrite lors de la configuration de l'environnement. L'utilisateur n'a qu'à modifier la version du noyau !
Patch de code : https://github.com/torvalds/linux/commit/95a762e2c8c942780948091f8f2a4f32fce1ac6f