Background
FreeRDP is the leading open-source Remote Desktop Protocol client, used across Linux desktops, cloud infrastructure, enterprise VDI deployments, and as the protocol engine inside tools like Remmina and xrdp. Its codec surface — RLE, NSCodec, RemoteFX, Planar — is parsed entirely from untrusted server data, making it a high-value target for client-side exploitation.
CVE-2026-23530 was a bounds-checking vulnerability in FreeRDP's planar bitmap decompression. The patch added length validation before reads in the main decompression dispatcher. The security community accepted the fix. Vorthix disagreed.
How XOR-1 Found It
Phase 1 — Reading the patch as a claim
XOR-1's core methodology treats every security patch as a falsifiable claim rather than a closed case. The claim made by the CVE-2026-23530 fix was: all paths through planar decompression now validate remaining buffer space before reading raw bytes. XOR-1 immediately asked: what does that assumption require to hold? And where could it silently break?
Phase 2 — Mapping every decompression call site
Rather than reading only the fixed function, XOR-1 traced the entire call graph from planar_decompress() outward, cataloguing every function that could ultimately invoke a raw byte read from server-controlled data. The primary path — planar_decompress_ex() calling the main dispatcher — had the new guard present. The secondary path, planar_decompress_plane_rle_only(), used for RLE-only segments, had no such check. The cRawBytes field, derived entirely from the server-supplied control byte, was passed directly to CopyMemory() without verifying that srcp + cRawBytes remained within the source buffer.
Phase 3 — Dynamic confirmation
A minimal proof of concept was built: a crafted RDP FastPath PDU containing a planar bitmap with an oversized RAW segment count in the RLE-only path. Compiled against the patched FreeRDP build with AddressSanitizer. The heap-buffer-overflow fired immediately on codec/planar.c:512 in planar_decompress_plane_rle_only. Zero false positives — the same guarantee XOR-1 carries on every finding.