Skip to main content

libexpat CVE-2026-41080

| EUVDEUVD-2026-23276 LOW
Insufficient Entropy (CWE-331)
2026-04-16 mitre
2.9
CVSS 3.1 · Vendor: mitre
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify application parsing attacker-supplied XML via libexpat < 2.7.6
  2. Delivery
    Enumerate reduced 4-8 byte SipHash salt candidates
  3. Exploit
    Craft XML names producing deliberate hash collisions
  4. Execution
    Submit collision-laden XML document repeatedly
  5. Persist
    Degrade parser hash table to O(n) lookup
  6. Impact
    Cause application-layer denial of service

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V11 - Cryptography Entropy requirements
Exploitation Conditions

Exploitation requires that the attacker can supply crafted XML to an application that parses it with libexpat < 2.7.6, and that the attacker can predict or enumerate sufficient candidates from the reduced salt space (4-8 bytes of entropy depending on platform unsigned long width). Applications that call XML_SetHashSalt with a low-entropy or application-controlled value are more susceptible than those relying on Expat's internal salt auto-generation, because the former further reduces the attacker's search space. The high attack complexity (AC:H in the provided CVSS vector) captures this salt-prediction requirement. No authentication is required (PR:N), but meaningful impact requires sustaining a high volume of colliding inputs - making automated bulk exploitation impractical (SSVC: not automatable). Impact is strictly limited to availability; there is no confidentiality or integrity exposure. The 'Information Disclosure' tag in the source metadata is inconsistent with the CVSS vector (C:N) and CWE-331 and should not be used to infer data leakage risk.

Impact

Converging signals place this firmly in the low-priority tier. The CVSS 3.1 score of 2.9 (Low) with AV:L/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L indicates high attack complexity and local vector with only partial availability impact. EPSS at 0.01% (2nd percentile) and SSVC exploitation=none/not-automatable reinforce that no opportunistic exploitation is occurring. The KEV listing is absent, confirming no confirmed active exploitation. One signal tension worth noting: the NVD-assigned AV:L is conservative for a library that frequently parses network-sourced XML (web feeds, SOAP, REST payloads), where AV:N would be defensible - however, AC:H limits practical exploitation regardless of vector. The impact is bounded to partial availability (A:L); there is zero confidentiality or integrity impact. The Tags field lists 'Information Disclosure,' but nothing in the CVSS vector, CWE, or source code diff supports a confidentiality impact - this tag appears to be a mislabel and should not be used for risk decisions.

Exploit ScenarioDerived

An attacker with the ability to submit XML content to an application backed by libexpat < 2.7.6 constructs element or attribute names mathematically engineered to collide in Expat's internal hash table - feasible because the salt is derived from only 4-8 bytes of entropy rather than the full 16 bytes SipHash supports. Sustained submission of such crafted documents causes hash bucket chains to degrade from O(1) to O(n), slowing or hanging the XML parser and causing a service-level denial-of-service. No public exploit code has been identified at time of analysis, and the high attack complexity (salt prediction) limits opportunistic use.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
Patch available 0.0% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Jul 24, 2026

Hash flooding denial-of-service in libexpat before 2.7.6 stems from the existing SipHash-based collision protection consuming only 4-8 bytes of salt entropy (constrained by the width of unsigned long) when the SipHash implementation supports a full 16-byte key - reducing the effective salt space and enabling a knowledgeable attacker to craft XML documents with deliberately colliding element or attribute names. All libexpat versions from 0 through 2.7.5 are affected per CPE cpe:2.3:a:libexpat_project:libexpat. No active exploitation has been confirmed (no CISA KEV listing), EPSS sits at 0.01% (2nd percentile), and SSVC designates exploitation as none and the flaw as non-automatable, placing real-world urgency firmly in the low tier.

RemediationAI

Upgrade to libexpat 2.7.6 or later; this is the vendor-released patch confirmed by upstream PR #1183 (https://github.com/libexpat/libexpat/pull/1183) and the Expat release blog at https://blog.hartwork.org/posts/expat-2-8-0-released/. Any application code that explicitly calls XML_SetHashSalt should be migrated to XML_SetHashSalt16Bytes using a high-quality entropy source such as getentropy(3) - or should omit both calls entirely, allowing Expat 2.7.6's internal machinery to auto-generate a full 16-byte salt. Continuing to call XML_SetHashSalt after upgrading is itself considered a vulnerability per the upstream changelog. For environments where immediate patching is not feasible, restricting the size and structural complexity of XML inputs accepted from untrusted sources (e.g., enforcing document size limits at the application or WAF layer) reduces the attacker's ability to saturate hash buckets, though this has operational trade-offs for legitimate large-payload workflows. Siemens-specific remediation should follow SSA-082556.

Affected VersionsENISA

libexpat 0 <2.7.6

Affected Packages

euvd libexpat fix: 2.7.6

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

libexpat (CPE: cpe:2.3:a:libexpat_project:libexpat) is a widely embedded C library for streaming XML parsing, consumed by Python (via pyexpat), PHP, and numerous system packages. Its hash collision defense uses SipHash internally, which supports a 128-bit (16-byte) key. The root cause is CWE-331 (Insufficient Entropy): the legacy XML_SetHashSalt API accepted only an unsigned long argument - 4 bytes on 32-bit platforms, 8 bytes on 64-bit platforms - leaving 8-12 bytes of the SipHash key unpopulated and therefore contributing no entropy. An attacker who can narrow the effective salt space can engineer XML names that land in the same hash bucket, producing pathological O(n²) lookup chains. The upstream fix in PR #1183 introduces XML_SetHashSalt16Bytes (versioned symbol LIBEXPAT_2.7.6) consuming the full 16-byte key, and formally deprecates XML_SetHashSalt. Per the changelog, any application that explicitly calls XML_SetHashSalt should now be treated as introducing a vulnerability.

Know when Libexpat 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

Vendor (mitre) PRIMARY 2.9 LOW
AV:L/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L
vuln.today AI 3.7 LOW

AV:N reflects libexpat's common role parsing network-sourced XML; AC:H retained for salt-prediction complexity; C:N and I:N confirmed by CWE-331 scope.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L
4.0 AV:N/AC:H/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N

Primary rating from Vendor (mitre).

CVSS VectorVendor: mitre

Attack Vector
Local
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
Low

Lifecycle Timeline

3
Patch released
Apr 27, 2026 - 07:16 nvd
Patch available
Patch available
Apr 16, 2026 - 18:02 EUVD
CVE Published
Apr 16, 2026 - 16:52 nvd
LOW 2.9

DescriptionCVE.org

libexpat before 2.7.6 uses insufficient entropy, and thus hash flooding can occur via a crafted XML document.

Threat Intelligence Overview

EPSS Score
0.0%
Top 98% exploitable
Prevalence
High
core XML parsing library embedded in Python, PHP, and many OS packages
Exploit
POC
Public exploit code exists
Social Media
1
Sightings
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment CIRCL GitHub VulDB

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.

SignalValue
Severity LOW
CISA KEV No
Public POC Yes
EPSS 0.0%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Small
Automatable
No
Human Impact· derived
High
Technical Impact
Partial

Priority Score

34
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +14
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

CVE-2022-25315 CRITICAL POC
9.8 Feb 18

In Expat (aka libexpat) before 2.4.5, there is an integer overflow in storeRawNames. Rated critical severity (CVSS 9.8),

CVE-2025-59375 HIGH POC
7.5 Sep 15

libexpat in Expat before 2.7.2 allows attackers to trigger large dynamic memory allocations via a small document that is

CVE-2019-15903 HIGH POC
7.5 Sep 04

In libexpat before 2.2.8, crafted XML input could fool the parser into changing from DTD parsing to document parsing too

CVE-2026-115506 HIGH POC
8.7 Oct 22

CPU exhaustion in libexpat through 2.9.0 lets remote attackers stall XML parsing workloads by supplying a moderately siz

CVE-2026-93990 HIGH POC
8.7 Sep 19

Malformed UTF-16 decoding in libexpat through 2.8.4 lets remote attackers hide XML markup from the parser: a lone high s

CVE-2022-43680 HIGH POC
7.5 Oct 24

In libexpat through 2.4.9, there is a use-after free caused by overeager destruction of a shared DTD in XML_ExternalEnti

CVE-2024-28757 HIGH POC
7.5

Alpine Linux: expat fixed in 2.6.2-r0

CVE-2017-9233 HIGH POC
7.5 Jul 25

XML External Entity vulnerability in libexpat 2.2.0 and earlier (Expat XML Parser Library) allows attackers to put the p

CVE-2026-45186 HIGH POC
7.5 May 10

Denial of service in libexpat before 2.8.1 lets remote attackers exhaust CPU by submitting moderately sized crafted XML

CVE-2013-0340 MEDIUM POC
6.8 Jan 21

expat before version 2.4.0 does not properly handle entities expansion unless an application developer uses the XML_SetE

CVE-2016-0718 CRITICAL
9.8 May 26

Expat allows context-dependent attackers to cause a denial of service (crash) or possibly execute arbitrary code via a m

CVE-2024-45492 CRITICAL
9.8 Aug 30

An issue was discovered in libexpat before 2.6.3. Rated critical severity (CVSS 9.8), this vulnerability is remotely exp

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy