CVE-2026-29774

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.
Configurations

Configuration 1 (hide)

cpe:2.3:a:freerdp:freerdp:*:*:*:*:*:*:*:*

History

17 Jun 2026, 10:29

Type Values Removed Values Added
Summary
  • (es) FreeRDP es una implementación gratuita del Protocolo de Escritorio Remoto. Antes de la 3.24.0, ocurre un desbordamiento de búfer de montón del lado del cliente en la ruta de conversión YUV a RGB AVC420/AVC444 del cliente FreeRDP debido a la falta de validación de límites horizontales de las coordenadas regionRects del metabloque H.264. En yuv.c, la función clamp() (línea 347) solo valida la parte superior/inferior contra la altura de la superficie/YUV, pero nunca verifica la izquierda/derecha contra el ancho de la superficie. Cuando avc420_yuv_to_rgb (línea 67) calcula los punteros de destino y origen usando rect->left, realiza aritmética de punteros sin verificar que puede ir mucho más allá del búfer de superficie asignado. Un servidor malicioso envía un WIRE_TO_SURFACE_PDU_1 con códec AVC420 que contiene una entrada regionRects donde left excede en gran medida el ancho de la superficie (por ejemplo, left=60000 en una superficie de 128px). El flujo de bits H.264 se decodifica correctamente, luego yuv420_process_work_callback llama a avc420_yuv_to_rgb que calcula pDstPoint = pDstData + rect->top * nDstStep + rect->left * 4, escribiendo vectores SSE de 16 bytes 1888+ bytes más allá de la región de montón asignada. Esta vulnerabilidad se corrige en la versión 3.24.0.

17 Mar 2026, 14:51

Type Values Removed Values Added
References () https://github.com/FreeRDP/FreeRDP/commit/6482b7a92fff3959582cef052d1967ad6bde3738 - () https://github.com/FreeRDP/FreeRDP/commit/6482b7a92fff3959582cef052d1967ad6bde3738 - Patch
References () https://github.com/FreeRDP/FreeRDP/security/advisories/GHSA-5q35-hv9x-7794 - () https://github.com/FreeRDP/FreeRDP/security/advisories/GHSA-5q35-hv9x-7794 - Exploit, Patch, Vendor Advisory
CPE cpe:2.3:a:freerdp:freerdp:*:*:*:*:*:*:*:*
First Time Freerdp
Freerdp freerdp

16 Mar 2026, 18:16

Type Values Removed Values Added
References () https://github.com/FreeRDP/FreeRDP/security/advisories/GHSA-5q35-hv9x-7794 - () https://github.com/FreeRDP/FreeRDP/security/advisories/GHSA-5q35-hv9x-7794 -

13 Mar 2026, 19:54

Type Values Removed Values Added
New CVE

Information

Published : 2026-03-13 19:54

Updated : 2026-06-17 10:29


NVD link : CVE-2026-29774

Mitre link : CVE-2026-29774

CVE.ORG link : CVE-2026-29774


JSON object : View

Products Affected

freerdp

  • freerdp
CWE
CWE-787

Out-of-bounds Write