
Un write-up et un PoC d'élévation de privilèges locale (LPE) d'une vulnérabilité de lecture et d'écriture hors limites (OOB) dans le noyau Linux.
Un write-up et une Preuve de Concept d'élévation de privilèges locale d'une vulnérabilité de lecture et d'écriture hors limites dans le noyau Linux.
Vous pouvez trouver le write-up de cette vulnérabilité sur mon blog et vous pouvez également trouver mon introduction à nf_tables ici.
L'exploit fourni dans ce dépôt ne devrait pas être censé fonctionner directement sur les versions vulnérables du noyau sans adaptation. Il existe de nombreux offsets qui diffèrent selon les compilations du noyau, ainsi que bien sûr des gadgets ROP différents.
Parfois, même la manière dont la vulnérabilité est exploitée doit être modifiée en raison des différences entre les compilations du noyau. Un exemple est un autre write-up de cette vulnérabilité par David Bouman (@pqlqpql) que vous pouvez trouver ici où il exploite la vulnérabilité en utilisant des paquets UDP — ciblant la pile lors du traitement d'un paquet UDP — ce qui n'aurait pas pu être fait sur ma compilation du noyau en raison de différences significatives dans la disposition de la pile. J'ai plutôt utilisé une méthode ciblant la pile lors du traitement d'un paquet TCP ACK.
Si vous souhaitez tester cela de votre côté, je vous recommande de lire mon write-up et de suivre le chemin pour découvrir les offsets, les hooks à utiliser, etc.
La version exacte du noyau à partir de laquelle j'ai compilé le noyau que je ciblais dans le write-up était 5.12.0, commit 9f4ad9e425a1d3b6a34617b8ea226d56a119a717.
Pour compiler l'exploit, vous avez besoin des bibliothèques libmnl et libnftnl ainsi que de la bibliothèque de threads POSIX (pthread).
La compilation se fait alors simplement avec
gcc -lmnl -lnftnl -lpthread exploit.c -o exploit
La vulnérabilité provient de nft_validate_register_store introduit dans le commit 345023b0db315648ccc3c1a36aee88304a8b4d91 dans la version 5.12 et est corrigée dans le commit 6e1acfa387b9ff82cfc7db8cc3b6959221a95851 dans la version 5.17.
Cette Preuve de Concept et le write-up de la vulnérabilité sont à des fins éducatives uniquement. Je ne suis pas légalement responsable de la manière dont ce code pourrait être utilisé.