Медиаплеер VLC копирует строку ответа RTSP в фиксированный буфер, не гарантируя завершения, а затем обрабатывает этот буфер как строку C. RtspReadLine в модулях/access/rtsp/access.c вызывает strncpy с полной длиной буфера, который не записывает терминатор, если длина исходной строки не меньше длины адресата, а rtsp_get в модулях/access/rtsp/rtsp.c выделяет этот буфер как байты BUF_SIZE и передает его в strdup. Когда сервер возвращает строку длиной 4096 байт или более, strdup измеряет ее длину после конца выделения и копирует соседние байты кучи до случайного нулевого байта. Поскольку затронутая строка является заголовком сеанса, раскрытые байты сохраняются в качестве идентификатора сеанса и отправляются обратно на сервер при каждом последующем запросе, поэтому оператор враждебного сервера считывает память кучи от клиента, а не делает вывод об этом.
Злоумышленник контролирует длину строки и, следовательно, дальность чтения. Достаточно одной записи списка воспроизведения с указанием URL-адреса realrtsp. Модуль представляет собой опцию, устанавливаемую во время сборки, отключенную в некоторых дистрибутивах и включенную в официальных сборках VideoLAN.
Показать оригинальное описание (EN)
Certain VLC media player builds in versions 3.0.0 through 3.0.23 contain a memory-safety vulnerability reachable when processing media from an attacker-controlled network source. Exploitation requires user interaction and may disclose a limited, layout-dependent amount of VLC process memory. Exposure depends on build configuration.
Характеристики атаки
Последствия
Строка CVSS v4.0