Шесть уязвимостей в FFmpeg грозят выполнением кода при обработке вредоносных медиафайлов

FFmpeg

Обработка специально созданных видео, аудио и графических файлов в FFmpeg может приводить к повреждению кучи, раскрытию данных процесса и исчерпанию системных ресурсов. Разработчики выпустили патчи для шести уязвимостей высокой степени опасности, затрагивающих версии мультимедийного фреймворка до 8.1.2 включительно.

Детали уязвимостей

Проблемы обнаружены исследователем Адрианом Юнге (vurlo) и опубликованы 24 июля 2026 года. Эксплуатация возможна при обработке злоумышленником вредоносных медиафайлов - как в ручном режиме, так и в автоматизированных сервисах транскодирования, загрузки и стриминга контента. Часть уязвимостей может быть задействована уже на этапе определения формата входного файла.

Наиболее опасные (CVSS 8.7) связаны с переполнением буфера в куче при декодировании аудиоформата MACE6 и при кодировании PNG/APNG. Первая (CVE-2026-66039) вызывается манипуляцией полей "bytes_per_packet" и "frames_per_packet" в файлах CAF. Целочисленное переполнение со знаком при вычислении размера выходного сэмпла приводит к созданию буфера меньшего размера, а последующая запись выходит за его границы. Вторая (CVE-2026-66040) активируется через специально сформированный PNG-файл с вредоносным блоком eXIf, содержащим множественные записи IFD (структуры каталога изображения), указывающие на одни и те же большие данные. Каноническая сериализация в этом случае превышает заранее рассчитанный размер выходного буфера, что ведёт к записи за его пределы. Обе уязвимости потенциально позволяют выполнить произвольный код.

Три уязвимости получили оценку CVSS 7.7. Одна из них (CVE-2026-66036) находится в фильтре шумоподавления "vf_hqdn3d". Если при обработке видео разрешение кадров увеличивается, а опция "-reinit_filter 0" отключает переинициализацию фильтра, функция "denoise_spatial()" записывает данные за пределы буферов строк, выделенных под исходное разрешение. Другая (CVE-2026-66041) затрагивает фильтр распознавания QR-кодов "vf_quirc" при обработке субтитров PGS/SUP с несовпадающими размерами кадров. Третья (CVE-2026-66037) представляет собой неконтролируемое выделение памяти в демультиплексоре IAMF: поле "count_label" длиной 171 байт позволяет вызвать выделение порядка 126 миллионов байт на каждый входной байт, что может исчерпать память процесса или привести к его аварийному завершению.

Ещё одна уязвимость (CVE-2026-66038, CVSS 7.1) связана с раскрытием неинициализированной памяти в декодере LCL/ZLIB. При декомпрессии zlib-потока, который распаковывается в меньшее количество байт, чем ожидаемый размер кадра, функция "zlib_decomp()" не обрабатывает эту ситуацию как фатальную. В результате при преобразовании в RGB24 в декодированный кадр попадают остаточные данные кучи, включая указатели из аллокатора, что может позволить обойти ASLR (рандомизацию адресного пространства) в долгоживущих сервисах.

Все уязвимости закрыты коммитами в репозитории FFmpeg и войдут в ближайшие стабильные сборки. Администраторам медиа-сервисов рекомендуется обновить пакеты сразу после выхода исправлений. В качестве временных мер защиты можно изолировать рабочие нагрузки FFmpeg, установить лимиты на размер и типы входных файлов, а также выполнять обработку с минимально необходимыми привилегиями. Особое внимание следует уделить средам, где автоматически проверяется, декодируется или транскодируется пользовательский контент, - именно такие системы наиболее подвержены атакам через вредоносные медиафайлы.

Обнаруженные проблемы в очередной раз привлекают внимание к безопасности сложных мультимедийных библиотек, где ошибки в обработчиках редко используемых кодеков и фильтров могут иметь серьёзные последствия для инфраструктуры. Своевременное обновление инструментов обработки медиа остаётся критически важной мерой защиты.

Ссылки

Комментарии: 0