
Versione del kernel Linux 4.14 - 4.4 (Ubuntu e Debian)
Questa vulnerabilità risiede nella chiamata di sistema eBPF bpf(2) del kernel Linux. Quando un utente fornisce un programma BPF malevolo, il modulo di verifica eBPF genera un errore di calcolo, causando un problema di lettura/scrittura arbitraria della memoria. Un utente non privilegiato può utilizzare questa vulnerabilità per ottenere un'elevazione dei privilegi. La vulnerabilità è stata scoperta da Google Project Zero.
CVE-2017-16995
Alto
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#
Al momento non esiste una soluzione di aggiornamento della patch definitiva. Si consiglia agli utenti, dopo aver valutato il rischio, di limitare l'uso della chiamata di sistema bpf(2) da parte degli utenti normali modificando i parametri del kernel:
Imposta il parametro "kernel.unprivileged_bpf_disabled = 1" per impedire questa escalation di privilegi limitando l'accesso alla chiamata 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