
Exploit de preuve de concept pour une élévation de privilèges locale via CVE-2017-7184, un débordement de pile XFRM netlink du noyau Linux. Démontre l'abus d'espaces de noms et une ROP noyau pour obtenir les droits root sans sudo.
Ce dépôt contient un exploit de preuve de concept d'élévation de privilèges locale pour CVE-2017-7184, une vulnérabilité du noyau Linux dans le sous-système netlink XFRM (IPsec).
L'exploit démontre comment un utilisateur non privilégié peut obtenir un root réel (UID 0) en :
Créant un espace de noms utilisateur + réseau non privilégié
Obtenant CAP_NET_ADMIN à l'intérieur de l'espace de noms
Déclenchant un débordement de pile du noyau dans le traitement netlink XFRM
Exécutant une chaîne ROP du noyau pour appeler :
prepare_kernel_cred(NULL)commit_creds()Revenant en toute sécurité dans l'espace utilisateur avec tous les privilèges root
Aucun sudo n'est requis.
Espace de noms utilisateur non privilégié
unshare(CLONE_NEWUSER | CLONE_NEWNET)CAP_NET_ADMIN sans sudoAbus de XFRM Netlink
NETLINK_XFRMXFRM_MSG_NEWSA malforméExécution de ROP dans le noyau
Retour à l'espace utilisateur
swapgs; iretqunprivileged_userns_clone = 1gcc avec le support de pthreadVérifiez le support des espaces de noms :
cat /proc/sys/kernel/unprivileged_userns_clone
Sortie attendue :
1
gcc exploit.c -o exploit -pthread
./exploit
N'utilisez pas sudo.
En cas de succès, vous obtiendrez un véritable shell root :
uid=0(root) gid=0(root) groups=0(root)
L'exploit tente de :
Divulguer les symboles à partir de /proc/kallsyms
En cas de restriction, se rabattre sur des décalages codés en dur pour :
commit_credsprepare_kernel_cred⚠️ Les gadgets ROP et les décalages sont spécifiques à la version du noyau. Vous devez les ajuster pour d'autres compilations.
Cela confirme tout de même que le système est vulnérable.
sysctl -w kernel.unprivileged_userns_clone=0
Ce code est fourni uniquement à des fins éducatives et de recherche en sécurité.
commit_creds| Champ | Valeur |
|---|
| CVE | CVE-2017-7184 |
| Composant | Noyau Linux – Netlink XFRM |
| Type de bug | Débordement de pile du noyau |
| Impact | Élévation de privilèges locale |
| Vecteur d'attaque | Local (utilisateur non privilégié) |
| Classe d'exploit | Abus d'espace de noms + ROP |
| Première version affectée | Noyaux Linux ≤ 4.8 |
| Corrigé dans | Correctifs du noyau publiés en 2017 |