
CVE-2017-16995(Vulnerabilità di escalation dei privilegi locale su Ubuntu)
Ubuntu è un sistema operativo GNU/Linux open source principalmente per desktop, basato su Debian GNU/Linux. Recentemente, un white hat ha scoperto che l'ultima versione di Ubuntu (Ubuntu 16.04) presenta una vulnerabilità di escalation dei privilegi locali, con numero CVE-2017-16995. La vulnerabilità risiede nel kernel Linux che chiama eBPF bpf(2), dove un utente può fornire un programma BPF malevolo per far sì che il modulo di verifica eBPF generi un errore di calcolo, portando a problemi di lettura/scrittura arbitraria della memoria. Un utente con pochi privilegi può sfruttare questa vulnerabilità per ottenere privilegi amministrativi. Questa vulnerabilità è stata corretta nelle versioni precedenti, ma è ancora sfruttabile nell'ultima versione. Il fornitore non ha ancora rilasciato una patch ufficiale, quindi la vulnerabilità è in stato 0day.
Linux Kernel Version 4.14-4.4 Solo le distribuzioni Ubuntu/Debian sono interessate.
Alta
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#
Attualmente non esiste una soluzione di patch chiara, ma si consiglia agli utenti di limitare l'uso della chiamata di sistema bpf(2) da parte degli utenti normali modificando un parametro del kernel: impostare il parametro "kernel.unprivileged_bpf_disabled = 1" per prevenire l'escalation dei privilegi limitando l'accesso alla chiamata bpf(2).
root@Ubuntu# echo 1 > /proc/sys/kernel/unprivileged_bpf_disabled
Aggiornare la versione del kernel Linux: è necessario riavviare il server affinché la modifica abbia effetto. Questa operazione è già stata descritta nel processo di configurazione dell'ambiente; l'utente deve solo modificare la versione del kernel!
Patch del codice https://github.com/torvalds/linux/commit/95a762e2c8c942780948091f8f2a4f32fce1ac6f