Vulnerability DatabaseCVE-2026-121386

CVE-2026-121386: 
NixOS vulnerability analysis and mitigation

Overview

CVE-2026-121386 is a denial-of-service vulnerability in FreeRDP's WinPR image processing functions winpr_read_png_from_buffer() and winpr_convert_from_jpeg(), which lack proper libpng/libjpeg error handling. A malicious RDP server or man-in-the-middle (MITM) attacker can deliver a malformed PNG or truncated JPEG clipboard payload to cause the FreeRDP client to abort (SIGABRT) or exit. All FreeRDP versions before 3.32.2 are affected; the vulnerability was disclosed on November 3, 2026. It carries a CVSS v3.1 score of 7.5 (High) and a CVSS v4.0 score of 8.7 (High) (GitHub Advisory, FreeRDP Advisory).

Technical details

The root cause is classified as CWE-248 (Uncaught Exception): two image reader functions in winpr/libwinpr/utils/image.c fail to install the error-handling contexts required by their underlying libraries for untrusted input. In winpr_read_png_from_buffer(), libpng structs are created and png_read_png() is called without a setjmp(png_jmpbuf(png_ptr)) handler; when libpng encounters a malformed PNG, its default error handler calls png_longjmp() with no jump target, triggering abort() (SIGABRT). In winpr_convert_from_jpeg(), jpeg_std_error() is used without overriding error_exit, so libjpeg's default handler calls exit(EXIT_FAILURE) directly on any library error, bypassing all goto fail cleanup paths. Both functions are reachable via winpr_image_read_buffer() in the clipboard synthesis path (winpr/libwinpr/clipboard/synthetic.c), meaning any RDP server or MITM controlling clipboard content can trigger the crash with as few as 12 bytes (PNG) or 62 bytes (JPEG) of crafted data (FreeRDP Advisory).

Impact

Successful exploitation causes the FreeRDP client process to terminate abruptly — either via SIGABRT (PNG case) or exit(EXIT_FAILURE) (JPEG case) — resulting in a complete loss of the RDP session and any unsaved state in co-operating local applications. The impact is limited to availability; there is no confidentiality or integrity compromise, and no memory corruption or code execution is possible. An attacker who can repeatedly offer malformed clipboard payloads can keep the client persistently unusable (FreeRDP Advisory, GitHub Advisory).

Exploitability

No public proof-of-concept exploit code has been observed, and there is no evidence of in-the-wild exploitation at this time (GitHub Advisory). The vulnerability was discovered and reported with AI assistance using a libFuzzer harness (FuzzImage.c); libFuzzer found the PNG abort within 55 executions using a 12-byte input. The EPSS score is 0.0, and the vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. No threat actor attribution is available. The attack requires no authentication, no user interaction, and no special privileges — only the ability to act as or intercept an RDP server connection (FreeRDP Advisory).

Exploitation steps

  1. Establish attacker-controlled RDP server or MITM position: Set up a rogue RDP server (e.g., using a custom RDP implementation) or position the attacker between the FreeRDP client and a legitimate server to intercept and modify RDP traffic.
  2. Wait for or trigger clipboard format negotiation: When the FreeRDP client connects, the RDP protocol allows the server to advertise clipboard formats. The attacker advertises an image clipboard format (e.g., image/png or image/jpeg) to the client.
  3. Deliver malformed image payload: When the client requests the clipboard data, respond with a crafted malformed payload — for example, a 12-byte truncated PNG (iVBORw0KGgoAAAAA decoded from base64) or a 62-byte truncated JPEG (/9j/4AAQSkZJRgAB... decoded from base64).
  4. Trigger client crash: The FreeRDP client passes the attacker-supplied bytes to winpr_image_read_buffer(), which routes them to winpr_read_png_from_buffer() or winpr_convert_from_jpeg(). Due to missing error handlers, libpng calls abort() (SIGABRT) or libjpeg calls exit(EXIT_FAILURE), terminating the client process.
  5. Repeat for persistent DoS: Re-offer the malformed clipboard format each time the client reconnects to keep the session persistently unavailable (FreeRDP Advisory).

Indicators of compromise

  • Process: FreeRDP client process (xfreerdp, wlfreerdp, or similar) terminating unexpectedly with signal 6 (SIGABRT) or exit code from exit(EXIT_FAILURE) shortly after clipboard interaction with an RDP server.
  • Logs: System logs (e.g., /var/log/syslog, journalctl) showing Aborted (core dumped) or abnormal termination of the FreeRDP process; libpng error messages such as libpng error: bad adaptive filter value preceding the crash.
  • Network: RDP clipboard channel traffic (CLIPRDR virtual channel) containing unusually small or malformed image payloads (e.g., PNG magic bytes 89 50 4E 47 followed by fewer than expected bytes, or JPEG magic FF D8 FF with truncated data) from the server to the client.
  • File System: Core dump files generated in the FreeRDP working directory or system core dump location following unexpected process termination (FreeRDP Advisory).

Mitigation and workarounds

Upgrade FreeRDP to version 3.32.2 or later, which includes the fix adding proper setjmp/longjmp error handling to both winpr_read_png_from_buffer() and winpr_convert_from_jpeg(), as well as winpr_convert_to_jpeg() (FreeRDP Advisory, GitHub Advisory). As a workaround where upgrading is not immediately possible, restrict FreeRDP client connections to trusted, verified RDP servers only, and use secure network channels (VPN or TLS) to prevent MITM attacks that could deliver malicious clipboard payloads. Note that builds using WITH_LODEPNG (instead of libpng) are not affected by the PNG case, as lodepng returns error codes rather than calling abort().

Community reactions

Red Hat has filed a high-severity bug report (Bugzilla #2565870) tracking the vulnerability for affected Red Hat and Fedora packages (Red Hat Bugzilla). The original advisory was submitted to the FreeRDP project with AI assistance and included a detailed fuzzing harness and patch, reflecting growing use of automated vulnerability discovery tools in open-source security research (FreeRDP Advisory). No significant broader media coverage or notable social media commentary has been observed at this time.

Additional resources

Linux Distribution fix status

Fix availability across major Linux distributions and their releases.

Debian

Affected

bookworm

freerdp2

Affected

sid

freerdp3: 3.32.2+dfsg-1

Fixed

trixie

freerdp3

Affected

Ubuntu

Unknown

bionic (esm-apps)

freerdp

Unknown

bionic (esm-infra)

freerdp2

Unknown

devel

freerdp3

Unknown

focal (esm-infra)

freerdp2

Unknown

jammy

freerdp2

Unknown

noble

freerdp2

Unknown

noble (esm-apps)

freerdp2

Unknown

resolute

freerdp3

Unknown

RHEL / CentOS

Fixed

RHEL 8

freerdp.src

Affected

RHEL 9

freerdp.src

Affected

RHEL 10

freerdp-2:3.32.2-1.el10_2.src

Fixed

Source: This report was generated using AI

Related NixOS vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-121964HIGH8.7
  • NixOS logoNixOS
  • freerdp3
NoYesNov 04, 2026
CVE-2026-121960HIGH8.7
  • NixOS logoNixOS
  • freerdp2
NoYesNov 04, 2026
CVE-2026-121963HIGH8.2
  • NixOS logoNixOS
  • freerdp
NoYesNov 04, 2026
CVE-2026-121961HIGH8.2
  • NixOS logoNixOS
  • freerdp
NoYesNov 04, 2026
CVE-2026-121962HIGH7.2
  • NixOS logoNixOS
  • freerdp2
NoYesNov 04, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Additional Wiz resources

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management