OESA-2026-3854

Source
https://www.openeuler.org/en/security/security-bulletins/detail/?id=openEuler-SA-2026-3854
Import Source
https://repo.openeuler.org/security/data/osv/OESA-2026-3854.json
JSON Data
https://api.test.osv.dev/v1/vulns/OESA-2026-3854
Upstream
Published
2026-09-14T16:35:02Z
Modified
2026-09-13T16:45:54Z
Severity
  • 9.3 (Critical) CVSS_V4 - CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X CVSS Calculator
Summary
freerdp security update
Details

FreeRDP is a client implementation of the Remote Desktop Protocol (RDP) that follows Microsoft's open specifications. This package provides the client applications xfreerdp.

Security Fix(es):

FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to version 3.20.1, a global-buffer-overflow vulnerability was observed in FreeRDP's Base64 decoding path. The root cause is the implementation-defined signedness of the char type: on Arm/AArch64 builds, plain char is treated as unsigned, causing the guard condition c <= 0 to potentially be optimized by the compiler into a simple c != 0 check. Consequently, non-ASCII bytes (e.g., 0x80-0xFF) may bypass the intended range restriction and be used as an index into a global lookup table, resulting in out-of-bounds access. A malicious server can exploit this to trigger a client-side crash, leading to a denial of service.(CVE-2026-22858)

FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to 3.26.0, FreeRDP's planar bitmap decoder has an out-of-bounds heap write when decoding RLE planar data. In libfreerdp/codec/planar.c, freerdp_bitmap_decompress_planar() validates the X destination coordinate nXDst against the caller-provided destination stride (nDstStep) even when it is writing into the internal temp buffer pTempData. An attacker can bypass the check with a large nDstStep and a large nXDst, causing planar_decompress_plane_rle() to write past the end of pTempData. This vulnerability is fixed in 3.26.0.(CVE-2026-45700)

A malicious TS Gateway can trigger a heap-buffer-overflow write of ~1.8 KiB (or more with larger frag_length) of attacker-controlled stub data during RPC RESPONSE reassembly. Default builds may abort immediately (denial of service). Release builds without assert enforcement allow the overflow, which can corrupt heap metadata and potentially enable remote code execution depending on allocator layout and mitigations.(CVE-2026-55194)

FreeRDP before 3.28.0 treats lines beginning with forward slash in RDP files as raw command-line options, exposing the entire CLI parser surface to untrusted files. Attackers can craft malicious RDP files with /rdp2tcp, /cert:ignore, or /drive options to execute arbitrary commands, bypass certificate validation, or expose local filesystems without user interaction.(CVE-2026-64624)

FreeRDP before 3.29.0 contains a null pointer dereference vulnerability in smartcard cache request decoders that accept NULL NDR pointers for LookupName in SCARD_IOCTL_READCACHEA and SCARD_IOCTL_WRITECACHEA operations. When smartcard emulation is enabled, attackers can send crafted smartcard cache requests with NULL lookup-name pointers to trigger strlen() on a null pointer, causing client process termination.(CVE-2026-67288)

FreeRDP before 3.29.0 (affected versions <= 3.28.0) does not validate CRLF and control characters in the server-controlled RDP redirection TargetNetAddress field. This value is copied into the client's ServerHostname and, when the client connects through an HTTP proxy, is written directly into the proxy CONNECT request line and Host header by http_proxy_connect() without filtering. A malicious or compromised RDP server can send a crafted redirection PDU containing embedded control characters to inject arbitrary headers/requests into the HTTP proxy CONNECT request.(CVE-2026-67289)

FreeRDP before 3.29.0 (affected versions <= 3.28.0) contains a heap out-of-bounds read in update_process_glyph_fragments()/glyph_cache_fragment_put() in libfreerdp/cache/glyph.c. When handling a GLYPH_FRAGMENT_ADD update, the code reads a one-byte server-controlled declared fragment size but does not verify it fits within the remaining received buffer before allocating and copying that many bytes. A malicious RDP server can send a short fragment with an oversized declared size, causing the client to read beyond the allocated buffer, resulting in an out-of-bounds read and client crash.(CVE-2026-67291)

FreeRDP before 3.29.0 contains a client-side heap use-after-free in the async update message proxy for WINDOW_ICON_ORDER when AsyncUpdate is enabled (e.g. xfreerdp /async-update). In update_message_WindowIcon() a shallow CopyMemory() overwrites a freshly allocated lParam->iconInfo with the parser-owned windowIcon->iconInfo pointer. After the parser callback returns, update_recv_window_info_order() frees window_icon.iconInfo, but the queued async message still retains and later dispatches that stale pointer. A malicious or compromised RDP server sending a crafted RAIL Window Alternate Secondary Order with WINDOW_ORDER_ICON can trigger use-after-free, leading to memory corruption and client crash.(CVE-2026-67299)

FreeRDP before 3.29.0 contains out-of-bounds read vulnerabilities in the async update message proxy for the PolygonSC and PolygonCB primary drawing orders. When AsyncUpdate is enabled (e.g., xfreerdp /async-update), update_message_PolygonSC() and update_message_PolygonCB() allocate a fresh points array but copy point data from the address of the order structure instead of from polygonSC->points / polygonCB->points, resulting in a client-side out-of-bounds read. A malicious or compromised RDP server sending crafted PolygonSC/PolygonCB update orders can trigger memory disclosure or a client crash.(CVE-2026-67301)

FreeRDP before 3.29.0 contains integer overflow vulnerabilities in the audio input redirection channel (audin) across ALSA, sndio, WinMM, and OpenSL ES backends that fail to validate the FramesPerPacket parameter from RDP servers. Attackers can supply a malicious FramesPerPacket value causing allocation size wraparound, resulting in heap-based buffer overflow on ALSA or denial of service on all platforms.(CVE-2026-68580)

Database specific
{
    "severity": "Critical"
}
References

Affected packages

openEuler:20.03-LTS-SP4 / freerdp

Package

Name
freerdp
Purl
pkg:rpm/openEuler/freerdp&distro=openEuler-20.03-LTS-SP4

Affected ranges

Type
ECOSYSTEM
Events
Introduced
0 Unknown introduced version / All previous versions are affected
Fixed
2.11.8-9.oe2003sp4

Ecosystem specific

{
    "aarch64": [
        "freerdp-2.11.8-9.oe2003sp4.aarch64.rpm",
        "freerdp-debuginfo-2.11.8-9.oe2003sp4.aarch64.rpm",
        "freerdp-debugsource-2.11.8-9.oe2003sp4.aarch64.rpm",
        "freerdp-devel-2.11.8-9.oe2003sp4.aarch64.rpm",
        "freerdp-help-2.11.8-9.oe2003sp4.aarch64.rpm",
        "libwinpr-2.11.8-9.oe2003sp4.aarch64.rpm",
        "libwinpr-devel-2.11.8-9.oe2003sp4.aarch64.rpm"
    ],
    "src": [
        "freerdp-2.11.8-9.oe2003sp4.src.rpm"
    ],
    "x86_64": [
        "freerdp-2.11.8-9.oe2003sp4.x86_64.rpm",
        "freerdp-debuginfo-2.11.8-9.oe2003sp4.x86_64.rpm",
        "freerdp-debugsource-2.11.8-9.oe2003sp4.x86_64.rpm",
        "freerdp-devel-2.11.8-9.oe2003sp4.x86_64.rpm",
        "freerdp-help-2.11.8-9.oe2003sp4.x86_64.rpm",
        "libwinpr-2.11.8-9.oe2003sp4.x86_64.rpm",
        "libwinpr-devel-2.11.8-9.oe2003sp4.x86_64.rpm"
    ]
}

Database specific

source
"https://repo.openeuler.org/security/data/osv/OESA-2026-3854.json"