
Минимальный proof-of-concept репроducer для CVE-2025-69419, переполнение буфера в куче в OpenSSL's PKCS12_get_friendlyname(), вызванное специально сформированным BMPString. Предназначен для регрессионного тестирования и исследований в области безопасности.
Этот репозиторий содержит минимальный proof-of-concept репродуктор для CVE-2025-69419, затрагивающий уязвимые версии OpenSSL.
PoC демонстрирует запись за пределами буфера в куче, о которой сообщалось для PKCS12_get_friendlyname() при обработке специально созданного BMPString friendlyName.
Цель этого проекта — предоставить простой регрессионный тест для разработчиков и исследователей безопасности.
Этот PoC не реализует техники эксплуатации и предназначен исключительно для воспроизведения повреждения памяти, обнаруживаемого AddressSanitizer.
Согласно публичному уведомлению, уязвимость возникает при преобразовании UTF-16 (BMPString) в UTF-8 внутри:
PKCS12_get_friendlyname()OPENSSL_uni2utf8()Некорректный BMPString, содержащий символ, требующий трёхбайтовой последовательности UTF-8, приводит к записи одного байта в кучу перед выделенным буфером.
Отредактируйте build.sh и укажите путь к вашей сборке OpenSSL.
Затем выполните:
./build.sh
./run.sh
Ожидаемый результат на уязвимой сборке с ASan:
ERROR: AddressSanitizer: heap-buffer-overflow
WRITE of size 1
Трассировка стека должна включать:
OPENSSL_uni2utf8PKCS12_get_friendlynameБез AddressSanitizer приложение может продолжить выполнение, поскольку повреждение представляет собой запись одного байта непосредственно перед выделением памяти в куче. ASan надёжно обнаруживает выход за границы и завершает процесс в точке повреждения.