
CVE-2017-16995 (Vulnerabilidad de escalada de privilegios local en Ubuntu)
Ubuntu es un sistema operativo GNU/Linux de código abierto centrado en aplicaciones de escritorio, basado en Debian GNU/Linux. Recientemente, un hacker de sombrero blanco reveló que la última versión de Ubuntu (Ubuntu 16.04) tiene una vulnerabilidad de escalada de privilegios local, con el identificador CVE-2017-16995. Esta vulnerabilidad existe en el kernel de Linux que llama a eBPF bpf(2). Cuando un usuario proporciona un programa BPF malicioso, el módulo de verificación eBPF genera errores de cálculo, lo que provoca problemas de lectura/escritura arbitraria de memoria. Los usuarios con privilegios bajos pueden aprovechar esta vulnerabilidad para obtener privilegios administrativos. Esta vulnerabilidad ya fue corregida en versiones anteriores, pero aún se puede explotar en la última versión. El fabricante aún no ha publicado un parche relacionado, y la vulnerabilidad se encuentra en estado de 0day.
Versión del kernel de Linux 4.14-4.4 Solo afecta las distribuciones de Ubuntu/Debian
Alto
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#
Actualmente no hay una solución de parche clara propuesta, pero se recomienda a los usuarios mitigar la vulnerabilidad modificando los parámetros del kernel para restringir que los usuarios comunes utilicen la llamada al sistema bpf(2):
Establezca el parámetro "kernel.unprivileged_bpf_disabled = 1" para evitar esta escalada de privilegios restringiendo el acceso a la llamada bpf(2)
root@Ubuntu# echo 1 > /proc/sys/kernel/unprivileged_bpf_disabled
Actualice la versión del kernel de Linux, que requiere reiniciar el servidor para que surta efecto:
Este paso ya se ha descrito durante la configuración del entorno; ¡los usuarios solo necesitan modificar la versión del kernel!
Parche de código https://github.com/torvalds/linux/commit/95a762e2c8c942780948091f8f2a4f32fce1ac6f