Vulnerability Details 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.
Exploit prediction scoring system (EPSS) score
EPSS Score 0.001
EPSS Ranking 16.4%
CVSS Severity
CVSS v3 Score 5.3
Products affected by CVE-2026-29774
-
cpe:2.3:a:freerdp:freerdp:-
-
cpe:2.3:a:freerdp:freerdp:1.0.0
-
cpe:2.3:a:freerdp:freerdp:1.0.1
-
cpe:2.3:a:freerdp:freerdp:1.0.2
-
cpe:2.3:a:freerdp:freerdp:1.1.0
-
cpe:2.3:a:freerdp:freerdp:1.2.0
-
cpe:2.3:a:freerdp:freerdp:2.0.0
-
cpe:2.3:a:freerdp:freerdp:2.1.0
-
cpe:2.3:a:freerdp:freerdp:2.1.1
-
cpe:2.3:a:freerdp:freerdp:2.1.2
-
cpe:2.3:a:freerdp:freerdp:2.10.0
-
cpe:2.3:a:freerdp:freerdp:2.11.0
-
cpe:2.3:a:freerdp:freerdp:2.11.1
-
cpe:2.3:a:freerdp:freerdp:2.11.2
-
cpe:2.3:a:freerdp:freerdp:2.11.3
-
cpe:2.3:a:freerdp:freerdp:2.11.4
-
cpe:2.3:a:freerdp:freerdp:2.11.5
-
cpe:2.3:a:freerdp:freerdp:2.11.6
-
cpe:2.3:a:freerdp:freerdp:2.11.7
-
cpe:2.3:a:freerdp:freerdp:2.11.8
-
cpe:2.3:a:freerdp:freerdp:2.2.0
-
cpe:2.3:a:freerdp:freerdp:2.3.0
-
cpe:2.3:a:freerdp:freerdp:2.3.1
-
cpe:2.3:a:freerdp:freerdp:2.3.2
-
cpe:2.3:a:freerdp:freerdp:2.4.0
-
cpe:2.3:a:freerdp:freerdp:2.4.1
-
cpe:2.3:a:freerdp:freerdp:2.5.0
-
cpe:2.3:a:freerdp:freerdp:2.6.0
-
cpe:2.3:a:freerdp:freerdp:2.6.1
-
cpe:2.3:a:freerdp:freerdp:2.7.0
-
cpe:2.3:a:freerdp:freerdp:2.8.0
-
cpe:2.3:a:freerdp:freerdp:2.8.1
-
cpe:2.3:a:freerdp:freerdp:2.9.0
-
cpe:2.3:a:freerdp:freerdp:3.0.0
-
cpe:2.3:a:freerdp:freerdp:3.1.0
-
cpe:2.3:a:freerdp:freerdp:3.10.0
-
cpe:2.3:a:freerdp:freerdp:3.10.1
-
cpe:2.3:a:freerdp:freerdp:3.10.2
-
cpe:2.3:a:freerdp:freerdp:3.10.3
-
cpe:2.3:a:freerdp:freerdp:3.11.0
-
cpe:2.3:a:freerdp:freerdp:3.11.1
-
cpe:2.3:a:freerdp:freerdp:3.12.0
-
cpe:2.3:a:freerdp:freerdp:3.13.0
-
cpe:2.3:a:freerdp:freerdp:3.14.0
-
cpe:2.3:a:freerdp:freerdp:3.14.1
-
cpe:2.3:a:freerdp:freerdp:3.15.0
-
cpe:2.3:a:freerdp:freerdp:3.16.0
-
cpe:2.3:a:freerdp:freerdp:3.17.0
-
cpe:2.3:a:freerdp:freerdp:3.17.1
-
cpe:2.3:a:freerdp:freerdp:3.17.2
-
cpe:2.3:a:freerdp:freerdp:3.18.0
-
cpe:2.3:a:freerdp:freerdp:3.19.0
-
cpe:2.3:a:freerdp:freerdp:3.19.1
-
cpe:2.3:a:freerdp:freerdp:3.2.0
-
cpe:2.3:a:freerdp:freerdp:3.20.0
-
cpe:2.3:a:freerdp:freerdp:3.20.1
-
cpe:2.3:a:freerdp:freerdp:3.20.2
-
cpe:2.3:a:freerdp:freerdp:3.21.0
-
cpe:2.3:a:freerdp:freerdp:3.22.0
-
cpe:2.3:a:freerdp:freerdp:3.23.0
-
cpe:2.3:a:freerdp:freerdp:3.3.0
-
cpe:2.3:a:freerdp:freerdp:3.4.0
-
cpe:2.3:a:freerdp:freerdp:3.5.0
-
cpe:2.3:a:freerdp:freerdp:3.5.1
-
cpe:2.3:a:freerdp:freerdp:3.6.0
-
cpe:2.3:a:freerdp:freerdp:3.6.1
-
cpe:2.3:a:freerdp:freerdp:3.6.2
-
cpe:2.3:a:freerdp:freerdp:3.6.3
-
cpe:2.3:a:freerdp:freerdp:3.7.0
-
cpe:2.3:a:freerdp:freerdp:3.8.0
-
cpe:2.3:a:freerdp:freerdp:3.9.0