Skip to main content

libexpat CVE-2026-77214

| EUVDEUVD-2026-94368 HIGH
Out-of-bounds Read (CWE-125)
8.3
CVSS 4.0 · Vendor
View

Attack ChainAIDerived

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

  1. Access
    Reach app path passing attacker-influenced length
  2. Delivery
    Prior XML_GetBuffer or XML_Parse allocates heap buffer
  3. Exploit
    Call XML_ParseBuffer with len exceeding capacity
  4. Execution
    Parser advances m_bufferEnd past allocation
  5. Persist
    Subsequent parse reads out-of-bounds heap
  6. Impact
    Disclose heap and libc pointers defeating ASLR

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Bounds checking, read limits
MITRE ATT&CK

1 technique across 1 tactic: Collection

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

Exploitation Conditions

Exploitation requires that (1) a parse buffer already exists - the application must have previously called XML_GetBuffer directly, or XML_Parse which allocates the buffer internally (otherwise XML_ParseBuffer returns XML_ERROR_NO_BUFFER and the path is unreachable), and (2) the application calls XML_ParseBuffer with a len argument larger than the allocated/remaining buffer capacity. The decisive limiting factor is that len is CALLER-supplied: the attacker must be able to influence the length value the embedding application passes, which does not occur in standard usage where the application sizes the buffer to match the data it copies in. Default XML document parsing where len matches the buffer is NOT affected; only applications that derive the ParseBuffer length from untrusted input independent of the actual buffer size are exposed.

Impact

Signals are mixed. The input CVSS 4.0 vector (CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:L, score 8.3) rates this High, driven by VC:H - the over-read discloses adjacent heap memory including heap, libc, and code pointers sufficient to defeat ASLR. However, the AT:P (attack requirements present) metric is the crucial qualifier: this is a library API-misuse flaw, not a self-contained remote bug. XML_ParseBuffer trusts a CALLER-supplied length (len) that it fails to validate against allocated buffer size, so exploitation requires the embedding application to pass an attacker-influenced len larger than the buffer obtained via XML_GetBuffer/XML_Parse. In the overwhelmingly common usage pattern the application sizes the buffer and len itself, so PR:N/AV:N overstates real-world reachability for most consumers - the network attacker rarely controls the len argument directly. No EPSS score, KEV listing, or public exploit was provided, so there is no evidence of active exploitation; this reads as a genuine but conditional information-disclosure primitive rather than a mass-exploitable RCE. Priority is moderate: patch promptly because libexpat is ubiquitous, but realistic impact hinges on specific calling-code patterns rather than default XML parsing.

Exploit ScenarioDerived

An application embeds libexpat and passes a length value derived from attacker-controlled input (e.g. a declared content-length) to XML_ParseBuffer after obtaining a smaller buffer via XML_GetBuffer or a prior XML_Parse. The oversized len drives m_bufferEnd past the heap allocation, and subsequent parsing reads out-of-bounds heap memory, leaking pointers back to the attacker to defeat ASLR. No public exploit was identified at time of analysis; a regression test accompanies the fix but is not a weaponized POC.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
No patch listed yet 0.5% exploitation probability (EPSS)

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

Alert me

AnalysisAIv2 – Oct 07, 2026

An out-of-bounds heap read in libexpat's XML_ParseBuffer (expat/lib/xmlparse.c) allows disclosure of adjacent heap memory to the calling application when the caller-supplied len exceeds the remaining capacity of the parse buffer. The vulnerable path is reachable only when a parse buffer already exists - created by a prior XML_GetBuffer call (or a prior XML_Parse call that allocates one internally), otherwise the function returns XML_ERROR_NO_BUFFER - and when the embedding application passes a length that does not match the buffer it actually filled; default parsing where len equals the buffer contents is not affected, and the CVSS 4.0 vector (AV:N/PR:N, no privileges required) confirms this is unauthenticated from the network perspective. Successful reads can disclose heap pointers, libc function pointers and code pointers, undermining ASLR, but exploitation is contingent on application-specific misuse of the API, so no public exploit identified at time of analysis and no confirmed actively exploited (CISA KEV) status is reported. Note that the official CVSS 4.0 score is 8.3 (AT:P reflects the buffer-must-exist precondition), while an independent assessment scored it CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:L, i.e. information disclosure with no integrity impact and only a low availability impact.

Earlier versions of this analysis (1)
v1 Oct 05, 2026 - 20:15

Out-of-bounds read in libexpat (Expat) versions prior to 2.9.0 is triggered when a host application calls XML_ParseBuffer with a len value larger than the capacity of the buffer previously returned by XML_GetBuffer; pre-2.9.0 releases did not validate len against available capacity, so the parser can read past the end of the buffer. The critical limiting factor is that len is supplied programmatically by the integrating application rather than derived from the parsed XML stream, so an external attacker cannot set it unless the application forwards an attacker-influenced length without its own bounds checking. The independently assessed severity is CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:L (local vector, high attack complexity, low confidentiality and low availability impact), and no public exploit code, KEV listing, EPSS score, or POC data was available at the time of analysis. Fixes ship in Expat 2.9.0, which also resolves CVE-2026-102633 (integer overflow in expat_realloc on 32-bit platforms).

RemediationAI

Apply the upstream fix: upgrade to a libexpat build that contains commit 13c5f63a7f1c52c2feee3b16a1134d4fb68e9ea0 (pull request https://github.com/libexpat/libexpat/pull/1393), which the project references in the context of the Expat 2.9.0 release; because many consumers vendor or statically link Expat, each downstream product must also ship a rebuilt binary, so track the vendor advisories at https://seclists.org/oss-sec/2026/q4/55 and https://www.vulncheck.com/advisories/libexpat-heap-buffer-over-read-in-xmlparse-c-via-xml-parsebuffer for the patched version specific to your platform. Upstream fix available (PR/commit); released patched version not independently confirmed. If an immediate upgrade is not possible, the effective compensating control is at the caller: never pass an attacker-controlled len to XML_ParseBuffer - always pass the exact number of bytes copied into the buffer returned by XML_GetBuffer, clamp len to the remaining capacity (bufferLim - bufferEnd equivalent), and prefer the XML_Parse API, which sizes the buffer internally and does not expose this path; the trade-off is that XML_Parse copies data and may be slower for streaming callers, and any wrapper that derives len from untrusted framing data must be fixed separately because the library cannot validate intent. Disabling or refusing XML_GetBuffer-based streaming in untrusted contexts removes the primitive entirely at the cost of losing incremental feed mode, and hardening consumers with memory-safe parsers or sandboxing the parsing process limits pointer-leak consequences (defeating ASLR is only useful if a follow-on memory-corruption bug exists), but none of these substitute for the patch since the affected process may already be leaking heap contents.

Affected VersionsENISA

libexpat 0 ≤2.8.5

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

Expat is the widely embedded C XML parser (used directly, and via wrappers such as Python's pyexpat, Apache httpd, PHP and countless appliances). The bug is a classic CWE-125 out-of-bounds read rooted in unchecked arithmetic in XML_ParseBuffer: the function advances the buffer cursor with parser->m_bufferEnd += len, treating the caller's len as authoritative without validating it against parser->m_bufferLim or the underlying heap allocation size. Because XML_ParseBuffer operates on an externally supplied buffer obtained from XML_GetBuffer (the common usage pattern), a len larger than the remaining capacity moves m_bufferEnd beyond the allocation; the parser's subsequent scan of the buffer then reads past the heap block and returns the surplus bytes to the application as part of parsed/observed data. The upstream fix (commit 13c5f63a7f1c52c2feee3b16a1134d4fb68e9ea0, PR #1393) inserts an explicit bounds check - if (len > EXPAT_SAFE_PTR_DIFF(parser->m_bufferLim, parser->m_bufferEnd)) { m_errorCode = XML_ERROR_INVALID_ARGUMENT; return XML_STATUS_ERROR; } - and adds the regression test test_parse_buffer_exceeds_buffer, which confirms both the pre-existing XML_ERROR_NO_BUFFER behavior when no buffer was acquired and the new XML_ERROR_INVALID_ARGUMENT rejection when len exceeds capacity on first and subsequent chunks. This is purely an information-disclosure primitive (VC:H, VI:N, VA:L), valuable primarily as an ASLR-bypass / heap-layout oracle rather than for direct code execution.

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

AC:H because exploitation needs an attacker-influenced oversized len against a pre-existing buffer (a non-default calling pattern); C:H for heap/pointer disclosure, A:L for possible crash, I:N as nothing is written.

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

Primary rating from Vendor (CNA).

CVSS VectorVendor

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

Lifecycle Timeline

2
CVSS changed
Oct 07, 2026 - 15:22 NVD
8.3 (HIGH)
CVE Published
Oct 05, 2026 - 18:22 oss-security
MEDIUM

Description PRE-NVD

Disclosed via oss-security. NVD scoring and full description are pending.

Executive ViewAI

Why It Matters

libexpat, a widely embedded XML parsing library, contains a high-severity out-of-bounds heap read (CVE-2026-77214, CVSS 8.3) that can leak sensitive memory contents when applications misuse the XML_ParseBuffer API. This unauthenticated flaw requires no privileges and could undermine address space layout randomization, though exploitation is contingent on application-specific coding errors and no public exploit identified at time of analysis. With no vendor-released patch identified at time of analysis, leadership should direct immediate inventory and code-level mitigations to reduce exposure across affected products.

Business Impact: High
Compensating Controls

Audit and correct application code so that the len argument to XML_ParseBuffer never exceeds the remaining capacity of the parse buffer; avoid passing untrusted length values; implement strict input validation and bounds checking for all XML parsing; enable address space layout randomization (ASLR) and other memory protections; consider using alternative XML parsing libraries or methods that do not expose this API; monitor vendor advisories and apply the patch immediately when it becomes available.

Threat Intelligence Overview

EPSS Score
0.5%
Top 56% exploitable
Prevalence
Ubiquitous
libexpat is embedded in countless applications, languages, and OS distributions
Data Quality
6 sources
Confidence: High

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.5%
Patch available No
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

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

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.

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-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-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-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-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

CVE-2024-45491 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

Vendor StatusVendor

SUSE

Severity: Important
Product Status
SLES15-SP5-CHOST-BYOS-SAP-CCloud Not-Affected
SLES15-SP5-CHOST-BYOS-SAP-CCloud Not-Affected
SLES15-SP6-CHOST-BYOS Not-Affected
SLES15-SP6-CHOST-BYOS Not-Affected
SLES15-SP6-CHOST-BYOS-Aliyun Not-Affected

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