Skip to main content

libexpat CVE-2026-117610

| EUVDEUVD-2026-111545 HIGH
NULL Pointer Dereference (CWE-476)
2026-10-28 VulnCheck GHSA-v4h5-6r69-76p3
8.2
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Deliver XML referencing an external entity
  2. Delivery
    Application creates external-entity subparser
  3. Exploit
    Force empty non-final first parse (control chunking)
  4. Execution
    Later parse hits XML_TOK_NONE mishandling
  5. Impact
    NULL dereference crashes application (DoS)

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Null pointer safety, defensive checks
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires the target application to parse attacker-influenced XML that triggers an external entity reference and to create an external-entity subparser via XML_ExternalEntityParserCreate (i.e., an external-entity-ref handler is in use). The attacker must also control stream chunking so that the subparser's first parse is an empty, non-final buffer (XML_TOK_NONE, isFinal=XML_FALSE), which is the precise precondition the CVSS 4.0 AT:P flag reflects. Limiting factors: the application must use external-entity subparsing (not universal), the attacker must be able to influence how input is split across XML_Parse calls, and the maximum impact is a crash (availability only) - no code execution or data disclosure. Affected: libexpat through 2.9.0; the fix is available via vendor PR #1444 / commit 7b0d50e4.

Impact

This is a denial-of-service NULL pointer dereference (CWE-476) in libexpat, confirmed and detailed by the vendor's own patch (PR #1444, commit 7b0d50e4) and a VulnCheck advisory, so the mechanism is well-established rather than speculative. The only supplied score is CVSS 4.0 (8.2, computed with VA:H but VC:N/VI:N) - impact is strictly availability, meaning a crash of the parsing application, with no confidentiality or integrity loss. The 8.2 is elevated because availability is High and privileges/UI are none, but the AT:P flag (attack requirement present) reflects that exploitation is not unconditional: the attacker must control how the input stream is chunked. No EPSS probability, no CISA KEV listing, and no confirmed public exploit were provided; the only exploitation-relevant code is the regression test shipped with the fix, not a weaponized PoC. The vuln.today decision label is 'this_week', consistent with a widely-deployed library DoS that warrants prompt patching but is not flagged for emergency action. Net: a genuine priority because libexpat is ubiquitous and the flaw is remotely reachable, but the real-world risk is moderated by the DoS-only impact and the non-trivial precondition that the attacker control stream chunking into a specific external-entity subparser code path.

Exploit ScenarioDerived

An application uses libexpat to parse attacker-supplied XML and registers an external-entity handler that creates a subparser (XML_ExternalEntityParserCreate). The attacker supplies input crafted so the subparser receives an empty, non-final first buffer, which mishandles the XML_TOK_NONE token; a subsequent parse call then dereferences a NULL pointer in externalEntityInitProcessor2() and crashes the process. No public weaponized exploit was provided - only the vendor's regression test demonstrates the crash condition.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.4% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 28, 2026

A denial-of-service NULL pointer dereference (CWE-476) in libexpat through 2.9.0 lets remote, unauthenticated attackers crash applications that parse XML with external-entity subparsing enabled, by controlling how input is split across XML_Parse calls so an external-entity subparser's first parse is an empty, non-final buffer. Only availability is affected (VC:N/VI:N/VA:H) and there is no memory corruption, code execution, or data exposure described; the vendor's own patch (PR #1444, commit 7b0d50e4) plus a VulnCheck advisory make the mechanism well-established rather than speculative. No public exploit code and no CISA KEV entry were identified at time of analysis, though exploitation has real preconditions: the application must use XML_ExternalEntityParserCreate via an external-entity-ref handler and the attacker must influence stream chunking.

RemediationAI

The fix is upstream in libexpat: pull PR https://github.com/libexpat/libexpat/pull/1444 or the commit https://github.com/libexpat/libexpat/commit/7b0d50e4b1d16fafd55876260701e04279a7489d, which adds the missing XML_TOK_NONE handling plus a regression test (test_misc_empty_nonfinal_subparser_parse) in expat/tests/misc_tests.c; this is an upstream fix available as a PR/commit, and a released patched version number is not independently confirmed in the supplied data, so verify the version that ships the change before advertising one internally. Consumers of bundled expat should track their platform or vendor rebuild rather than only updating a system package, and patch rollout is scheduled this week per the vuln.today priority label. Where patching must wait, the effective compensating control is to stop exercising the vulnerable path: do not create external-entity subparsers (avoid XML_ExternalEntityParserCreate in external-entity-ref handlers, or refuse external entity references outright), with the trade-off that legitimate DTD/external entity resolution stops working for those documents; alternatively guarantee that a subparser's first XML_Parse call is never an empty non-final buffer (for example buffer input so the subparser's first call carries content or is marked final), which depends entirely on application code you control and is fragile against future chunking changes. No authentication or network filtering measure removes the exposure, since the precondition lives in the parsing library rather than the endpoint.

Affected VersionsENISA

libexpat 0 ≤2.9.0

Affected Packages

euvd libexpat no fix

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 is the widely embedded C XML parser (CPE cpe:2.3:a:libexpat:libexpat, all versions through 2.9.0). The flaw sits in externalEntityInitProcessor2() in lib/xmlparse.c, one of the parsing stages used after a parser has been switched into external-entity processing. When the parser is handed an empty buffer that is not the final buffer, the tokenizer returns XML_TOK_NONE; the vulnerable code did not handle that token in this processor and proceeded with a NULL/invalid pointer, so the subsequent parse crashes the process. The fix adds an explicit XML_TOK_NONE case that, when the buffer is not final, sets the end pointer to the start of input and returns XML_ERROR_NONE so parsing resumes cleanly on the next chunk. Because the defect is only reachable through a subparser created with XML_ExternalEntityParserCreate and depends on the attacker's control over chunk boundaries, the vendor and the independent assessment both treat this as a high-complexity availability issue (CVSS 3.1 AV:N/AC:H/PR:N/UI:N/A:H) rather than a generic parser crash; the trigger otherwise requires an external entity reference in attacker-influenced XML, which is not universal across expat deployments.

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 (VulnCheck) PRIMARY 8.2 HIGH
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
vuln.today AI 5.9 MEDIUM

Remotely reachable XML with no auth or UI, but requires attacker control over stream chunking to force the empty non-final first parse, so AC:H; crash-only, hence C:N/I:N/A:H.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

libexpat through 2.9.0 contains a NULL pointer dereference vulnerability in externalEntityInitProcessor2() in lib/xmlparse.c that mishandles the XML_TOK_NONE token from empty input. Attackers who control stream chunking can force an empty non-final first parse on an external entity subparser, causing a later parse to crash the application.

Executive ViewAI

Why It Matters

CVE-2026-117610 is a high-severity denial-of-service vulnerability in libexpat (through 2.9.0) that allows remote, unauthenticated attackers to crash applications parsing XML with external-entity subparsing. This affects any product embedding libexpat that processes XML from untrusted sources, potentially disrupting service availability and business operations. Leadership should prioritize patching because the vulnerability is easy to trigger once preconditions are met, though no active exploitation has been observed.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 63% exploitable
Prevalence
Ubiquitous
core XML parsing library embedded in Python and countless applications
Social Media
1
Sightings
Data Quality
5 sources
Confidence: Medium

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 HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

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

Attack Technique

A null pointer dereference occurs when a program attempts to access memory through a pointer that has been set to NULL (address 0x0).

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

Related Vulnerabilities in libexpat NULL Deref and Integer Overflow Flaws

View all 2
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