
Exploit de preuve de concept pour CVE-2023-0179, un débordement de tampon de pile dans le sous-système nftables du noyau Linux permettant une escalade de privilèges locale depuis des espaces de noms utilisateur non privilégiés.
Ce dépôt contient l'exploit pour la vulnérabilité que j'ai récemment découverte dans le sous-système nftables, à laquelle a été attribué le CVE-2023-0179, affectant toutes les versions de Linux de 5.5 à 6.2-rc3, bien que l'exploit ait été testé sur la version 6.1.6.
Les détails de la vulnérabilité et le compte rendu se trouvent sur oss-security
Invoquez simplement la commande make needle pour générer l'exécutable correspondant.
Les bibliothèques libmnl et libnftnl sont nécessaires pour réussir la compilation :
sudo apt-get install libmnl-dev libnftnl-dev
L'exploit entrera dans un espace de noms utilisateur et réseau non privilégié et ajoutera une expression nft_payload via la fonction rule_add_payload qui, lorsqu'elle sera évaluée, déclenchera le débordement de tampon de la pile et écrasera les registres.
Le contenu est ensuite récupéré avec la commande nft suivante :
nft list map netdev mytable myset12
La sortie divulguera plusieurs adresses mélangées relatives aux structures de données du noyau, parmi lesquelles nous trouvons une adresse d'instruction du noyau et le pointeur regs.
L'exploit crée un nouveau compte utilisateur needle:needle avec l'UID 0 en abusant de la variable modprobe_path.
Profitez des privilèges root.
libnftnl de David Bouman implementation et son article de blog détaillé.