CVE-2026-29774

HIGH CVSS 3.1: 8,2 EPSS 0.08%
Обновлено 17 марта 2026
Freerdp
Параметр Значение
CVSS 8,2 (HIGH)
Уязвимые версии до 3.24.0
Устранено в версии 3.24.0
Тип уязвимости CWE-787 (Запись за пределами буфера)
Поставщик Freerdp
Публичный эксплойт Нет

FreeRDP — это бесплатная реализация протокола удаленного рабочего стола. До версии 3.24.0 переполнение буфера кучи на стороне клиента происходило в пути преобразования AVC420/AVC444 YUV-в-RGB клиента FreeRDP из-за отсутствия проверки горизонтальных границ координат регионаRects метаблока H.264. В yuv.c функция зажима() (строка 347) проверяет только верх/низ относительно поверхности/высоты YUV, но никогда не проверяет лево/право по ширине поверхности.

Когда avc420_yuv_to_rgb (строка 67) вычисляет указатели назначения и источника, используя rect->left, он выполняет непроверяемую арифметику указателей, которая может выходить далеко за пределы выделенного поверхностного буфера. Вредоносный сервер отправляет WIRE_TO_SURFACE_PDU_1 с кодеком AVC420, содержащим запись регионаRects, где left значительно превышает ширину поверхности (например, left=60000 на поверхности 128 пикселей). Битовый поток H.264 успешно декодируется, затем yuv420_process_work_callback вызывает avc420_yuv_to_rgb, который вычисляет pDstPoint = pDstData + rect->top * nDstStep + rect->left * 4, записывая 16-байтовые векторы SSE на 1888+ байт дальше выделенной области кучи.

Эта уязвимость исправлена ​​в версии 3.24.0.

Показать оригинальное описание (EN)

FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to 3.24.0, a client-side heap buffer overflow occurs in the FreeRDP client's AVC420/AVC444 YUV-to-RGB conversion path due to missing horizontal bounds validation of H.264 metablock regionRects coordinates. In yuv.c, the clamp() function (line 347) only validates top/bottom against the surface/YUV height, but never checks left/right against the surface width. When avc420_yuv_to_rgb (line 67) computes destination and source pointers using rect->left, it performs unchecked pointer arithmetic that can reach far beyond the allocated surface buffer. A malicious server sends a WIRE_TO_SURFACE_PDU_1 with AVC420 codec containing a regionRects entry where left greatly exceeds the surface width (e.g., left=60000 on a 128px surface). The H.264 bitstream decodes successfully, then yuv420_process_work_callback calls avc420_yuv_to_rgb which computes pDstPoint = pDstData + rect->top * nDstStep + rect->left * 4, writing 16-byte SSE vectors 1888+ bytes past the allocated heap region. This vulnerability is fixed in 3.24.0.

Характеристики атаки

Способ атаки
По сети
Атака возможна удалённо
Сложность
Низкая
Легко эксплуатировать
Нужны права
Не требуются
Права не нужны
Участие пользователя
Не требуется
Не нужно действие пользователя

Последствия

Конфиденциальность
Нет
Нет утечки данных
Целостность
Низкое
Частичная модификация данных
Доступность
Высокое
Полный отказ в обслуживании

Строка CVSS v3.1

Уязвимые продукты 1

Конфигурация От (включительно) До (исключительно)
Freerdp Freerdp
cpe:2.3:a:freerdp:freerdp:*:*:*:*:*:*:*:*
3.24.0