← All Advisories

FreeRDP Server-Side RAIL Handler Integer Underflow in orderLength Bypasses Capacity Check and Writes Out of Bounds on the Heap; Fixed in 3.29.0

Last refreshed2026-09-29

Status: NEW  |  Advisory ID: CVE-2026-67298

Key Details

CVECVE-2026-67298
CVSS Score / Version7.5 (High) / CVSS v3.1
Updated2026-08-31
CVSS VectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
CVSS Proseattack vector is network; attack complexity is low; privileges required is none; user interaction is none; scope is unchanged; confidentiality impact is none; integrity impact is none; availability impact is high.
Classified asCWE-191 (Integer Underflow (Wrap or Wraparound))

What to Know

FreeRDP versions 3.28.0 and earlier contain a heap buffer overflow in the server-side RAIL channel handler (rail_server_handle_messages() in channels/rail/server/rail_main.c). When processing a RAIL PDU header, the code subtracts RAIL_PDU_HEADER_LENGTH from the peer-controlled orderLength field without first verifying orderLength is at least the header length. For orderLength values 0..3 this causes an unsigned integer underflow to a very large size, which bypasses the Stream_EnsureRemainingCapacity() capacity check (due to pointer arithmetic wraparound) and is then passed to WTSVirtualChannelRead(), resulting in an out-of-bounds heap write. A malicious or compromised RDP client can exploit this to corrupt the heap and crash the server. Fixed in FreeRDP 3.29.0. (NVD)

References

SourceReference
NVDhttps://nvd.nist.gov/vuln/detail/CVE-2026-67298
CVEhttps://www.cve.org/CVERecord?id=CVE-2026-67298