Обработка PNG в VLC переполняет кучу, а RealRTSP-сервер раскрывает содержимое памяти

VLC Media Player

Две уязвимости в VLC media player затрагивают сборки с 3.0.0 по 3.0.23 включительно. Первая приводит к записи за границами памяти при разборе изображения PNG. Вторая отдаёт враждебному серверу потокового вещания фрагменты оперативной памяти проигрывателя. Обе срабатывают без изменения настроек. Поэтому для запуска уязвимого кода достаточно открыть файл или подключиться к серверу, который контролирует злоумышленник.

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

Первую проблему отслеживают как CVE-2026-56711. Её оценили в 8,6 балла по CVSS v4. Причина связана с расчётом размера буфера под картинку. Ширину кадра программа умножает на число строк. Оба значения хранятся как 32-битные целые числа. Поэтому произведение считается в 32-битной арифметике. При больших числах оно переполняется, и результат становится маленьким. В итоге проигрыватель выделяет под изображение буфер по заниженному размеру. Следовательно, декодер PNG пишет строки исходя из настоящих размеров, заявленных в файле. Значит, запись уходит за пределы выделенной области. Длину и содержимое этого выхода задаёт автор файла.

Проверки, которые могли бы остановить обработку, не срабатывают. Одна из них делит в 64-битной арифметике. Поэтому произведение она не ограничивает. Вторая сравнивает предел с уже переполненным значением. Кроме того, модуль разбора изображений сверяет размер входного файла, а не заявленные размеры картинки. Уязвимость относится к целочисленному переполнению и записи за границами буфера. Кучей называют область оперативной памяти, которую программа выделяет динамически, по мере надобности. Расположенные рядом данные она не защищает. Поэтому запись за границу даёт злоумышленнику влиять на соседние области памяти. Это открывает путь к повреждению памяти и к исполнению чужого кода.

На практике атака выглядит как обычная картинка. В служебном блоке заголовка PNG прописаны огромные ширина и высота. Открыть такой файл напрямую или добавить его в список воспроизведения достаточно для запуска уязвимого кода. Особые параметры не нужны. Права администратора тоже не требуются. Ошибку нашёл Фабиан Вале из Hap Security.

Вторая уязвимость, CVE-2026-73324, получила 6,9 балла по CVSS v4. Она связана с протоколом RealRTSP. Код копирует строку ответа сервера в буфер фиксированного размера. При этом завершающий нулевой байт он не добавляет. Если сервер присылает строку длиннее 4096 байт, буфер остаётся незакрытым. Позже проигрыватель передаёт эти данные в функцию дублирования строки. Та читает память дальше границы буфера, пока не наткнётся на случайный нулевой байт. Поэтому в строку попадает то, что лежало рядом в куче.

Доставить такую строку можно через служебный заголовок Session в ответе RTSP. Проигрыватель сохраняет её как идентификатор сессии. Затем он отправляет её обратно на сервер в следующих запросах. Так враждебный сервер получает содержимое памяти клиента. Объём утечки зависит от раскладки кучи и от того, что в ней оказалось в момент запроса. Здесь речь о чтении за границами, а не о записи. Поэтому целостность проигрывателя не страдает. Однако конфиденциальные данные, попавшие в ту же область памяти, уходят на чужую сторону.

Модуль RealRTSP подключают при сборке по желанию. В части дистрибутивов его отключают. В официальных сборках VideoLAN он присутствует. Следовательно, охват второй уязвимости зависит от того, где именно взята копия проигрывателя. Первая проблема от сборки не зависит, поскольку содержится в общей логике работы с изображениями. Для организаций, которые ставят VLC на рабочие станции, это означает дополнительный риск. Опасен не только сам проигрыватель, но и любой PNG, попавший к сотруднику из чата, с форума или из вложения в письме. В домашней сети последствия ограничатся одной машиной, тогда как в корпоративной общие папки и рассылки расширяют число потенциальных жертв.

Исправленных сборок, которые закрывают обе уязвимости, на момент публикации сведений нет. Тем не менее риски можно снизить уже сейчас. Пока обновлений нет, незнакомые изображения и записи RealRTSP в списках воспроизведения стоит считать потенциально опасными. Разумно ограничить открытие картинок из внешних источников на машинах с установленным VLC; проверить, включён ли модуль RealRTSP в используемой сборке; не подключаться к серверам вещания, в надёжности которых нет уверенности. Кроме того, часть организаций может временно отказаться от проигрывателя на узлах, где обрабатывают недоверенное содержимое.

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

Ссылки

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