Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain physical access with malicious smartcard
-
DeliveryPresent >64 PKCS#11 key objects across slots
-
ExploitOverflow fixed 64-entry array in collect_keys()
-
ExecutionCorrupt heap with attacker CKA_ID/CKA_LABEL
-
ImpactExecute code during smartcard logon
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Array index validation
|
| Exploitation Conditions | Exploitation requires the FreeRDP client (3.0.0 through 3.31.x) to be configured for smartcard logon using the PKCS#11 backend, and the attacker must control the smartcard token presented during authentication - specifically a token that exposes more than 64 public key objects across its slots, with attacker-chosen CKA_ID and CKA_LABEL attribute values. Limiting factors are significant: the attack vector is PHYSICAL (the malicious token must be physically presented to the machine), active user interaction is required (the victim must initiate smartcard logon), and deployments not using PKCS#11 smartcard authentication are unaffected. These constraints confine realistic risk to shared, kiosk, or physically accessible systems where untrusted tokens can be introduced. |
| Impact | This is a genuine but constrained vulnerability, not a mass-exploitation priority. The CVSS 4.0 vector (AV:P/AC:L/AT:N/PR:N/UI:A) describes a PHYSICAL attack vector requiring active user interaction - the victim must initiate a smartcard logon with an attacker-controlled PKCS#11 token presenting more than 64 public key objects. High impact across confidentiality, integrity and availability (VC:H/VI:H/VA:H) reflects heap corruption that can plausibly lead to code execution in the FreeRDP client process, justifying the 7.0 base score. However, real-world risk is dampened by the physical/local prerequisite: an attacker must supply or substitute the smartcard hardware the user authenticates with, so this is a targeted, hands-on-device scenario rather than remotely scalable. No EPSS score, KEV listing, or POC was provided in the input, and no public exploit identified at time of analysis - all consistent with low expected weaponization. There is no conflicting signal here; the physical vector and lack of exploitation intelligence align. Prioritize patching for environments where untrusted smartcards or hardware tokens may be used (kiosks, shared workstations), and treat it as lower urgency where token provenance is controlled. |
| Exploit ScenarioDerived | An attacker supplies or substitutes a malicious PKCS#11 smartcard token (e.g., at a shared or kiosk workstation) that enumerates more than 64 public key objects across multiple slots. When the victim initiates FreeRDP smartcard logon, collect_keys() writes past its fixed 64-entry array, corrupting the heap with attacker-chosen CKA_ID and CKA_LABEL data, potentially leading to code execution in the client. No public exploit code is known at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 12, 2026
Heap buffer overflow in FreeRDP 3.0.0 through 3.31.x allows an attacker who controls a physical smartcard token to corrupt heap memory during PKCS#11 smartcard logon, potentially achieving code execution with the privileges of the FreeRDP client. The flaw is in collect_keys(), which enumerates public key objects across PKCS#11 slots into a fixed 64-entry array without bounds checking; a token exposing more than 64 keys with attacker-controlled CKA_ID and CKA_LABEL values overflows the array. Exploitation requires PKCS#11 smartcard authentication to be configured, physical presentation of the malicious token, and user-initiated logon, and no public exploit code or active exploitation is known at time of analysis; this is a constrained, physically proximate issue rather than a mass-exploitation priority.
RemediationAI
Upgrade FreeRDP to version 3.32.0 or later, which contains the vendor-released patch for CVE-2026-109250; see the FreeRDP security advisory GHSA-jhv5-m83m-hxhq for details. If immediate upgrading is not possible, disable PKCS#11 smartcard authentication in the FreeRDP client (for example, by removing or not loading the PKCS#11 module and using password or other authentication methods instead) - this eliminates the vulnerable code path but removes smartcard logon functionality. Alternatively, strictly control the physical environment to prevent untrusted smartcard tokens from being presented to affected systems, such as limiting physical access to kiosks or shared workstations; this is a compensating control rather than a fix. No public exploit code or active exploitation is known, but because the issue is a memory corruption bug, applying the patch is strongly recommended.
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
FreeRDP is an open-source implementation of the Remote Desktop Protocol (RDP) client. The vulnerability affects the PKCS#11 smartcard backend, which allows the client to use hardware tokens for certificate-based logon. During authentication, collect_keys() iterates over PKCS#11 slots and enumerates public key objects, storing their CKA_ID and CKA_LABEL attributes into a fixed-size array of 64 entries. Because the function does not validate the number of keys returned by the token, a malicious or crafted token that exposes more than 64 public key objects across its slots causes a heap-based out-of-bounds write (CWE-129, improper validation of array index). The overflow is triggered with attacker-chosen attribute data, which may allow heap corruption and potentially arbitrary code execution in the context of the FreeRDP client. Per the CPE cpe:2.3:a:freerdp:freerdp:*:*:*:*:*:*:*:*, all FreeRDP versions in the range 3.0.0 through 3.31.x are affected. The CVSS 4.0 vector (AV:P/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N) and the independent CVSS 3.1 assessment (AV:P/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H) both emphasize the physical attack vector (AV:P) and the lack of required privileges (PR:N), while user interaction (UI:A/UI:R) is needed to initiate smartcard logon.
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:P/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Attacker needs physical presentation of a malicious smartcard (AV:P) and victim-initiated logon (UI:R); no prior auth needed (PR:N); heap corruption yields potential code execution hence C/I/A:H.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
FreeRDP 3.0.0 before 3.32.0 contains a heap buffer overflow vulnerability in collect_keys() that allows local attackers to write past the fixed 64-entry keys array during PKCS#11 key enumeration. Attackers controlling smartcard tokens can present more than 64 public key objects across multiple slots to corrupt heap memory with attacker-chosen CKA_ID and CKA_LABEL data during smartcard logon.
Executive ViewAI
FreeRDP, a widely used remote desktop client, contains a heap buffer overflow (CVE-2026-109250) in its PKCS#11 smartcard logon handling that could allow code execution with client privileges when a user presents a malicious physical smartcard token. The attack requires physical token access, configured smartcard authentication, and user-initiated logon, limiting it to targeted, physically proximate scenarios rather than mass exploitation. Organizations relying on FreeRDP with PKCS#11 smartcards should prioritize mitigating this unpatchable flaw to protect endpoint integrity.
No vendor-released patch identified at time of analysis. Interim mitigations: disable PKCS#11 smartcard authentication in FreeRDP where not required; enforce strict physical control over smartcard tokens; only allow organization-issued tokens; monitor for FreeRDP crashes or anomalous behavior; consider network isolation or alternative clients for sensitive environments.
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
A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.
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-97694
GHSA-q5vf-vw79-qr24
NVD
CVE.org
EPSS
Exploit-DB