Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessUser selects malicious ARM gateway
-
ExploitGateway returns JSON omitting redirectedServerCert
-
ExecutionNull buffer reaches WINPR_ASSERT in stream initializer
-
ImpactFreeRDP client process aborts (SIGABRT)
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V16 - Security Logging and Error Handling Reachable assertion handling
|
| Exploitation Conditions | Exploitation requires that the FreeRDP client be built with the optional WITH_AAD=ON flag (the PoC also uses WITH_WINPR_JSON=ON); the advisory states the default AAD-off client does not compile the ARM gateway route and is therefore unaffected. The user must select/configure and connect to a malicious or malformed ARM gateway (e.g. /gateway:type:arm,...), which then returns an HTTP 200 JSON ARM connection response that either omits the redirectedServerCert key entirely or supplies it as a non-string value. Limiting factors that reduce realistic risk: the non-default build requirement, the passive user interaction of pointing the client at the attacker gateway (UI:P), and an impact confined to client-side availability (crash) with no confidentiality or integrity effect. |
| Impact | All signals converge on a genuinely moderate, availability-only issue rather than a top-priority emergency. The supplied CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N, base 5.3) shows network reach and low complexity with no privileges, but passive user interaction (UI:P) and impact limited to low availability of the vulnerable system (VA:L) with zero confidentiality or integrity effect. The FreeRDP/VulnCheck advisory explicitly confirms the demonstrated impact is client-side availability loss only - no authentication bypass, data disclosure, or data modification. The vuln.today decision label is 'this_month' (not act_now/emergency), which is consistent with a non-emergency DoS. A full working loopback reproducer is embedded in the advisory, which raises the practical exploitation floor, but it crashes only the client process the user themselves pointed at a malicious gateway. No CISA KEV listing is present, so this is not confirmed actively exploited; no EPSS score was provided in the input, so probabilistic exploitation likelihood cannot be compared here - STATE EXPLICITLY: EPSS is missing from the data. A critical scoping constraint that lowers real-world risk: the flaw only exists when the client is compiled WITH_AAD=ON, and the advisory states the audited default AAD-off client does not even compile the ARM gateway route. Net: this is a real, source-confirmed bug worth patching on a normal cadence, not a high-CVSS-but-illusory finding, but it is also not a widespread-exploitation priority. |
| Exploit ScenarioDerived | A user of an AAD-enabled FreeRDP client (WITH_AAD=ON) is induced to connect through an attacker-controlled or malformed ARM gateway. The gateway returns an HTTP 200 JSON response that omits (or sets to a non-string) the redirectedServerCert field, causing the parser to pass a null buffer into the certificate parser and trip an assertion that aborts the client (SIGABRT). A complete loopback-only reproducer harness is embedded in the advisory, so the crash path is publicly demonstrated, though only against a local fake gateway. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Nov 03, 2026
FreeRDP clients built with the optional WITH_AAD=ON flag can be aborted by a crafted ARM gateway response: an HTTP 200 JSON reply that omits the redirectedServerCert field (or supplies it as a non-string) drives a NULL buffer into the target-certificate parser, tripping a WINPR_ASSERT in the stream initializer and terminating the client with SIGABRT. Only non-default AAD-enabled builds (>= 3.0.0 through 3.32.1) that also link WinPR JSON are affected; the advisory states the default AAD-off build does not compile the ARM gateway route and is unaffected. Impact is client-side availability loss only with no confidentiality or integrity effect, and exploitation requires the user to point the client at a malicious or malformed gateway. A public proof-of-concept fake-gateway reproducer is included in the vendor advisory, but it is a loopback-only test harness rather than general-purpose exploit code, and no confirmed active exploitation or KEV listing exists; the vendor addressed the flaw in 3.32.2.
RemediationAI
Upgrade FreeRDP to 3.32.2 or later, the vendor-listed fix for the affected 3.0.0-3.32.1 range, using the release and advisory at https://github.com/FreeRDP/FreeRDP/security/advisories/GHSA-hqf8-95c7-6r92 and https://www.vulncheck.com/advisories/freerdp-before-3.32.2-null-pointer-crash-via-arm-gateway-response. If an immediate upgrade is not possible, rebuilding without WITH_AAD=ON removes the ARM gateway parsing route entirely and eliminates the exposure, at the cost of losing AAD/ARM gateway connectivity for that client build; sites that genuinely need AAD gateway support should treat 3.32.2 as the only complete fix described in the available sources. Because the trigger is a gateway response the user chooses to connect to, restricting client configurations to trusted ARM gateway endpoints (fixed /gateway:type:arm targets rather than user-supplied addresses) limits exposure but does not repair the parser, and users should be aware that connecting to a malformed or attacker-controlled gateway can terminate the client session.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The defect lives in FreeRDP's Azure Active Directory / ARM gateway client path, which is compiled only when WITH_AAD=ON (the reproducer also requires WITH_WINPR_JSON=ON). After AAD discovery over HTTPS on port 443 and a request to the ARM /api/arm/v2/connections endpoint, arm_pick_base64Utf16Field() in libfreerdp/core/gateway/arm.c treats a missing or non-string redirectedServerCert as a successful optional-field lookup while leaving its output pointer NULL; arm_fill_gateway_parameters() then hands that NULL buffer to rdp_redirection_read_target_cert(), whose stream initializer contains WINPR_ASSERT(buffer) in winpr/libwinpr/utils/stream.c, so the assertion fires and aborts the process. This is CWE-617 (Reachable Assertion): the root cause is an unchecked optional-field contract between a JSON parser and its caller rather than memory corruption, so the demonstrated consequence is a deterministic client crash, not code execution. The advisory's reproducer is a Python TLS fake gateway binding loopback ports 443 and 3561 with missing-key, non-string (integer 42) and valid-string ("AAAA") control payloads, confirming that the missing/non-string cases abort the client while the valid string does not. CPE cpe:2.3:a:freerdp:freerdp identifies the affected package range 3.0.0 through 3.32.1.
Know when Freerdp gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
Attacker-controlled gateway reached over the network with no client credentials (PR:N), but the user must choose that gateway (UI:R), and the only effect is a recoverable client crash (A:L; C:N/I:N).
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
1DescriptionCVE.org
FreeRDP 3.0.0 before 3.32.2 built with WITH_AAD=ON contains a reachable assertion because its ARM gateway response parser accepts a missing or non-string redirectedServerCert field and passes a null buffer to the certificate parser. A malicious or malformed user-selected gateway can return such a response to abort the client process.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Use-after-free in FreeRDP xf_clipboard_format_equal before 3.23.0. Clipboard format comparison uses freed memory. Fifth
Use-after-free in FreeRDP xf_AppUpdateWindowFromSurface before 3.23.0. Surface-to-window update triggers memory corrupti
Use-after-free in FreeRDP xf_SetWindowMinMaxInfo before version 3.23.0. X11 client window management triggers memory cor
Use-after-free in FreeRDP xf_cliprdr_provide_data clipboard handling before 3.23.0. Clipboard data exchange triggers mem
FreeRDP IRP thread handler has a use-after-free where the IRP is freed by Complete() then accessed on the error path. Fi
FreeRDP drive read heap overflow when server-controlled read length exceeds IRP output buffer. Fixed in 3.20.1. PoC avai
FreeRDP client before 3.20.1 has a heap buffer overflow in AUDIN format processing. A malicious RDP server can corrupt m
Use-after-free in FreeRDP xf_AppUpdateWindowFromSurface before 3.23.0. Different code path from CVE-2026-25953. PoC and
FreeRDP is a free implementation of the Remote Desktop Protocol. Rated critical severity (CVSS 9.8), this vulnerability
FreeRDP is a free implementation of the Remote Desktop Protocol (RDP), released under the Apache license. Rated critical
FreeRDP is a free implementation of the Remote Desktop Protocol (RDP), released under the Apache license. Rated critical
FreeRDP is a free implementation of the Remote Desktop Protocol (RDP), released under the Apache license. Rated critical
EUVD-2026-115922
GHSA-rvhh-wcgr-9gqg
NVD
CVE.org
Exploit-DB