
Exploit para la vulnerabilidad (CVE-2023-0179). Esta vulnerabilidad fue asignada como CVE-2023-0179 y afecta a todas las versiones de Linux desde 5.5 hasta 6.2-rc3. La vulnerabilidad fue probada en 6.1.6. Los detalles y el artículo sobre la vulnerabilidad se pueden encontrar en os-security.
Este repositorio contiene el exploit de la vulnerabilidad que descubrí recientemente en el subsistema nftables y a la que se asignó CVE-2023-0179, que afecta a todas las versiones de Linux desde 5.5 hasta 6.2-rc3, aunque el exploit se probó en 6.1.6.
Los detalles de la vulnerabilidad y el análisis se pueden encontrar en oss-security
Basta con invocar el comando make needle para generar el ejecutable correspondiente.
Se requieren libmnl y libnftnl para que la compilación se realice correctamente:
sudo apt-get install libmnl-dev libnftnl-dev
El exploit entrará en un espacio de nombres de usuario y de red sin privilegios y añadirá una expresión nft_payload mediante la función rule_add_payload que, al evaluarse, provocará el desbordamiento del búfer de pila y sobrescribirá los registros.
A continuación, el contenido se recupera con el siguiente comando nft:
nft list map netdev mytable myset12
La salida filtrará varias direcciones barajadas relativas a estructuras de datos del núcleo, entre las que se incluyen una dirección de instrucción del núcleo y el puntero regs.
El exploit crea una nueva cuenta de usuario needle:needle con UID 0 abusando de la variable modprobe_path.
Disfruta de los privilegios de root.
libnftnl de David Bouman y su detallada entrada de blog