Как атаковать медиасервер с помощью DoS: уязвимость утечки памяти в ffmpeg (CVE-2025-25469)

  • Автор темы Автор темы LeSh1y777
  • Дата начала Дата начала

LeSh1y777

Пользователь
Регистрация
25/9/25
Сообщения
5,682
Репутация
49
Лайки
152
Депозит
-8.95$
Добро пожаловать обратно, новички-кибервоины!

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

В этой статье я хотел бы продемонстрировать, как уязвимость утечки памяти в FFmpeg может быть использована для проведения атаки типа «отказ в обслуживании» (DoS) на удаленный медиасервер или для исчерпания ресурсов локальных клиентских приложений.

Краткая история уязвимостей FFmpeg

За годы своего существования проект столкнулся с многочисленными уязвимостями, от переполнений буфера до повреждений памяти, которые могли привести к выполнению произвольного кода. Среди известных уязвимостей, выявленных ранее, были переполнения буфера в куче, такие как CVE-2020-22029, проблемы с переполнением буфера, такие как CVE-2024-32230 с высоким уровнем серьёзности, и CVE-2011-0480, также имевшие высокий уровень серьёзности.

ffmpeg_vulnerabilities_by_year-1024x831.webp
Источник: stack.watch
Характер уязвимостей в FFmpeg часто обусловлен сложностью анализа мультимедийных форматов и необходимостью корректной обработки некорректных или вредоносных входных данных. Угрозы безопасности часто возникают, когда специально созданные мультимедийные файлы используют логику анализа, что может привести к сбоям в работе приложения или выполнению произвольного кода. Проблемы управления памятью, включая переполнение буфера и утечки памяти, такие как CVE-2025-25469, представляют собой значительную категорию этих уязвимостей, часто возникающих из-за ошибок в путях обработки, которые не позволяют должным образом очистить выделенные ресурсы.

Понимание CVE-2025-25469​

Уязвимость CVE-2025-25469 проявляется как утечка памяти в файле libavutil/iamf.c, в частности, в функции анализа IAMF (Immersive Audio Model and Formats). Эта уязвимость возникает, когда компонент iamf.c библиотеки libavutil от FFmpeg выделяет буферы памяти, но не освобождает их при определённых ошибках или граничных условиях.

ffmpeg_code_analysys.webp
Источник: cve.news
Когда функция av_iamf_parse сталкивается с условием сбоя анализа, она возвращает код ошибки, не освобождая буфер памяти, выделенный ранее при выполнении функции. Это приводит к тому, что каждая неудачная попытка анализа потребляет системную память, которая никогда не освобождается, что приводит к постепенному исчерпанию памяти.

Эта уязвимость вызывает особую обеспокоенность, поскольку она затрагивает компонент libavutil, который служит базовой библиотекой утилит в экосистеме FFmpeg. Это означает, что любое приложение, использующее возможности обработки IAMF в FFmpeg, потенциально может быть затронуто.

Доказательство концепции: как вызвать утечку​

Чтобы вызвать утечку памяти, мы можем создать простой скрипт на Python:

ffmpeg_poc.webp

Вот простое объяснение того, что делает этот скрипт:

  1. Скрипт начинается с Python-шебанга, запускаемого с помощью Python 3.
  2. Он открывает (или создает) файл с именем bad.iamf в двоичном режиме записи.
  3. Он записывает в этот файл 100 нулевых байтов. Это создаёт искажённый или недействительный файл IAMF, поскольку корректный файл IAMF не будет состоять только из нулей.
  4. Затем в цикле, который выполняется 1000 раз, скрипт bad.iamf каждый раз вызывает командную строку для запуска FFmpeg и обработки файла.
  5. Используемая команда FFmpeg подавляет вывод баннера ( -hide_banner), пытается декодировать bad.iamf входной файл ( -i bad.iamf) и выводит в нулевой формат ( -f null -), фактически отбрасывая вывод.
В результате мы получаем высокую загрузку процессора (около 100%). Хотя уязвимость в первую очередь связана с утечкой памяти в libavutil/iamf.c, она также приводит к непропорционально высокой нагрузке на процессор из-за обработки искажённых или сконструированных данных. Это означает, что процессор сильно загружается при попытке обработки недопустимых входных данных, хотя потребление памяти может и не увеличиваться заметно.

ffmpeg_poc_impact.webp

Краткое содержание

Хотя сама уязвимость может показаться относительно незначительной по сравнению с недостатками выполнения кода, ее потенциальную возможность вызвать сбой в работе служб и нестабильность системы не следует недооценивать.

В этой статье мы рассмотрели, как всего несколько строк кода позволяют эксплуатировать эту уязвимость, что приводит к исчерпанию ресурсов. Широкое распространение FFmpeg как в критически важной инфраструктуре, так и в потребительских приложениях делает эту проблему заслуживающей немедленного внимания и устранения.
 
Назад
Сверху Снизу