Cyber Resilience

CVE-2025-61911

Memory Safety in Python-Ldap ≤ 3.4.5

Public PoCMemory Safety
Published
10 October 2025
Modified
04 December 2025
Patch / advisory
CVSS Score v4 5.5
Click a component to see what it means
Raw vectorCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N/E:P/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
EPSS Score 0.0030 22th percentile
Risk Priority 38 floored blend · peak EPSS

CVSS and EPSS are reproduced from their sources (NVD, FIRST EPSS). Risk Priority is our own derived reading, not an NVD score.

Summary

CVE-2025-61911 is a medium-severity Special Element Injection (CWE-75) vulnerability in Python-Ldap Python-Ldap. Its CVSS base score is 5.5 (Medium).

Operationally, exploitation aligns with the MITRE ATT&CK technique Content Injection (T1659); ranked at the 22th percentile by exploit likelihood (below the median); it is not currently listed in the CISA KEV catalog; a public proof-of-concept is referenced.

The strongest mitigations our analysis identified map to SA-11 (Developer Testing and Evaluation) and SI-10 (Information Input Validation) — see the control section below for these in your framework.

EU & UK References

Vulnerability Data

python-ldap is a lightweight directory access protocol (LDAP) client API for Python. In versions prior to 3.4.5, the sanitization method `ldap.filter.escape_filter_chars` can be tricked to skip escaping of special characters when a crafted `list` or `dict` is supplied as the…

more

`assertion_value` parameter, and the non-default `escape_mode=1` is configured. The method `ldap.filter.escape_filter_chars` supports 3 different escaping modes. `escape_mode=0` (default) and `escape_mode=2` happen to raise exceptions when a `list` or `dict` object is supplied as the `assertion_value` parameter. However, `escape_mode=1` computes without performing adequate logic to ensure a fully escaped return value. If an application relies on the vulnerable method in the `python-ldap` library to escape untrusted user input, an attacker might be able to abuse the vulnerability to launch ldap injection attacks which could potentially disclose or manipulate ldap data meant to be inaccessible to them. Version 3.4.5 fixes the issue by adding a type check at the start of the `ldap.filter.escape_filter_chars` method to raise an exception when the supplied `assertion_value` parameter is not of type `str`.

CWE(s)

Related Threats

MITRE ATT&CK Enterprise Techniques

T1659 Content Injection Initial Access
Adversaries may gain access and continuously communicate with victims by injecting malicious content into systems through online network traffic.
T1068 Exploitation for Privilege Escalation Privilege Escalation
Adversaries may exploit software vulnerabilities in an attempt to elevate privileges.
T1190 Exploit Public-Facing Application Initial Access
Adversaries may attempt to exploit a weakness in an Internet-facing host or system to initially access a network.
T1059 Command and Scripting Interpreter Execution
Adversaries may abuse command and script interpreters to execute commands, scripts, or binaries.
T1203 Exploitation for Client Execution Execution
Adversaries may exploit software vulnerabilities in client applications to execute code.
T1210 Exploitation of Remote Services Lateral Movement
Adversaries may exploit remote services to gain unauthorized access to internal systems once inside of a network.
Derived from this CVE’s CWE(s) via the direct CWE→ATT&CK cross-walk.

CVEs Like This One

CVE-2025-61912Same product: Python-Ldap Python-Ldap
CVE-2026-40356Same product class: directory / identity
CVE-2024-37371Same product class: directory / identity
CVE-2023-39975Same product class: directory / identity
CVE-2026-48919Same product class: directory / identity
CVE-2026-69836Same product class: directory / identity
CVE-2026-50652Same product class: directory / identity
CVE-2026-48917Same product class: directory / identity
CVE-2023-23749Same product class: directory / identity
CVE-2024-23333Same product class: directory / identity

Affected Assets

python-ldap
python-ldap
≤ 3.4.5

Mitigating Controls

Control response

Prevent
Stop it (NIST 800-53)

—

Detect
Catch it (NIST detect / respond)

—

Harden
Shrink the surface (DISA STIG)

—

Validate
Prove the fix (OWASP ASVS)
  • V1.5.2
  • V3.2.3
  • V15.3.5

Mitigating Controls (NIST 800-53 r5) AI

Developer testing and evaluation (including fuzzing and type-aware analysis) directly finds type-confusion flaws before deployment.

Input validation directly stops special-element injection by rejecting or sanitizing untrusted data before it reaches a different control plane.

Engineering principles can require use of type-safe languages, static typing, and runtime type checks that structurally avoid allocating one type and accessing another.

Memory-protection controls limit the blast radius when a type-confusion access occurs but do not stop the flaw itself.

Mitigating Controls (NIST CSF 2.0) AI

Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→CSF cross-walk (authority under review) — links open the control.

PR.PS-06 mostly match
prevents

Secure SDLC practices directly require input sanitization to block special-element injection.

Mitigating Controls (ISO/IEC 27001:2022 Annex A) AI

Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→ISO cross-walk (authority under review) — links open the control.

finds

Security testing catches injection vulnerabilities but does not itself implement the sanitization fix.

A.8.15 Logging partial match
finds

Logging can record injection attempts for detection but does not prevent the weakness.

prevents

Secure development life cycle mandates input validation and sanitization practices that directly prevent special-element injection.

prevents

Application security requirements explicitly call for controls against injection flaws including special-element handling.

prevents

Secure architecture principles reduce injection surfaces but do not prescribe the actual sanitization logic.

prevents

Secure coding standards require rigorous input sanitization, directly eliminating CWE-75.

References