
Exploit de prueba de concepto para CVE-2023-0179, un desbordamiento de búfer en la pila en el subsistema nftables del kernel de Linux que permite la escalada de privilegios locales desde espacios de nombres de usuario no privilegiados.
Este repositorio contiene el exploit para mi vulnerabilidad recientemente descubierta en el subsistema nftables a la que se asignó CVE-2023-0179, afectando a todas las versiones de Linux desde la 5.5 hasta la 6.2-rc3, aunque el exploit fue probado en la 6.1.6.
Los detalles de la vulnerabilidad y el informe se pueden encontrar en oss-security
Simplemente invoque el comando make needle para generar el ejecutable correspondiente.
libmnl y libnftnl son necesarios para que la compilación tenga éxito:
sudo apt-get install libmnl-dev libnftnl-dev
El exploit entrará en un espacio de nombres de usuario y red no privilegiado y agregará una expresión nft_payload a través de la función rule_add_payload que, al ser evaluada, desencadenará el desbordamiento del búfer de pila y sobrescribirá los registros.
El contenido se recupera entonces con el siguiente comando nft:
nft list map netdev mytable myset12
La salida filtrará varias direcciones mezcladas relativas a las estructuras de datos del kernel, entre las que encontramos una dirección de instrucción del kernel y el puntero de registros.
El exploit crea una nueva cuenta de usuario needle:needle con UID 0 abusando de la variable modprobe_path.
Disfrute de los privilegios de root.
libnftnl de David Bouman y su detallada entrada de blog