
Linux Kernel Version 4.14 - 4.4 (Ubuntu y Debian)
Esta vulnerabilidad existe en la llamada al sistema eBPF bpf(2) del kernel de Linux. Cuando un usuario proporciona un programa BPF malicioso, provoca errores de cálculo en el módulo validador de eBPF, lo que resulta en problemas de lectura/escritura arbitraria de memoria. Los usuarios no privilegiados pueden usar esta vulnerabilidad para escalar privilegios. La vulnerabilidad fue descubierta por 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#
Actualmente no hay un plan claro de actualización de parches. Se recomienda a los usuarios, después de evaluar el riesgo, limitar el uso de la llamada al sistema bpf(2) por parte de usuarios comunes modificando los parámetros del kernel:
Establezca el parámetro “kernel.unprivileged_bpf_disabled = 1” para evitar esta escalada de privilegios al restringir el acceso a la llamada 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