
Переполнение стека в LibXMP
Переполнение стека в LibXMP
В функции depack_pha() библиотеки libxmp, предназначенной для воспроизведения модульной музыки, существует уязвимость переполнения буфера на основе стека. Уязвимость активируется при разборе некорректных файлов модулей Pha Packer (PHA).
Некорректная проверка границ локального стекового буфера позволяет злоумышленнику записывать данные за пределами массива, что может привести к отказу в обслуживании (DoS) и, при определённых условиях, к удалённому выполнению кода (RCE).
Сборка:
gcc -g -O0 -I./libxmp/include poc.c poc_data.h ./libxmp/lib/libxmp.a -lm -lz -o poc_crasher
Переполнение стекового буфера
проект libxmp GitHub: https://github.com/libxmp/libxmp Issue: https://github.com/libxmp/libxmp/issues/847
src/loaders/prowizard/pha.c Функция: depack_pha()
Отказ в обслуживании (DoS) Потенциальное удалённое выполнение кода (RCE) при определённых условиях сборки или выполнения
Злоумышленник может создать вредоносный файл .mod или .pha в формате Pha Packer и передать его любому приложению, связанному с libxmp. Некорректный файл вызывает переполнение стекового буфера во время разбора паттернов в depack_pha().
Этот вопрос находится в процессе отчёта перед мэйнтейнерами libxmp через GitHub Issues.
Gareth C - https://www.anchorsec.co.uk