CVE-2026-32778
Low · 2.9CVSS
2.9
EPSS
0.2%
Published
Mar 16, 2026
CISA due date
—
Cloudanix analysis
A flaw in a common XML parsing component can cause some programs to crash when handling XML after running low on memory.
- Exploitation
- Local Privilege
- Attacker needs
- None
- Complexity
- High
- Impact
- Denial Of Service
- Component
- Library
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
libexpat versions before 2.7.5 can dereference a NULL pointer in the XML parsing context handling path, specifically in setContext, when parsing is retried after a prior out-of-memory condition. The result is a process crash rather than code execution or data exposure. Exploitation requires an attacker to influence XML parsing behavior and trigger a constrained memory-failure/retry sequence, which makes practical exploitation higher complexity and primarily limited to denial of service against software that embeds libexpat.
Why it matters to the business
Applications, services, command-line tools, or middleware that parse XML using vulnerable libexpat versions may crash when processing attacker-controlled or malformed XML under memory pressure. The expected impact is localized service interruption, failed jobs, degraded availability, or instability in dependent software rather than compromise of confidential data. Current public exploitation likelihood appears low: EPSS is 0.00171, the 30-day trend is flat, it is not listed in CISA KEV, and no exploit maturity is reported.
How an attack unfolds
An attacker first identifies software that accepts XML input and uses a vulnerable libexpat build before 2.7.5. They then provide XML content or workload conditions intended to force or coincide with an out-of-memory state during parsing. If the application retries parsing after the earlier memory allocation failure, the vulnerable setContext code path can dereference a NULL pointer. This causes the hosting process to terminate or crash, producing a denial-of-service condition for that application or processing pipeline. There is no indication from the vulnerability description that the flaw enables arbitrary code execution, privilege escalation, or data theft.
How to fix it
Upgrade libexpat to version 2.7.5 or later wherever it is directly installed, statically linked, vendored, or bundled inside applications, containers, language runtimes, appliances, or operating-system packages. Because libexpat is commonly consumed as a transitive dependency, inventory both system packages and embedded copies. If immediate patching is not possible, reduce exposure by limiting who can submit XML, enforcing strict request size and resource limits, disabling unnecessary XML ingestion features, applying process supervision/restart controls, and isolating XML parsing workloads so a crash does not take down higher-value services.
How to confirm the fix worked
Confirm that all deployed libexpat instances report version 2.7.5 or later, including package-manager installations, container images, statically linked binaries, and vendored source copies. Use software composition analysis, package inventory, container scanning, and binary inspection where appropriate. Validate that applications depending on libexpat still function after upgrade and that XML parsing workloads no longer crash under controlled memory-pressure and retry testing. For exposure review, identify services, APIs, import functions, file processors, or local workflows that accept XML from untrusted or semi-trusted users.
Typical attack path
- Identify an application, service, batch processor, or library consumer that parses XML using libexpat before 2.7.5.
- Submit attacker-controlled XML or otherwise trigger XML parsing through an exposed feature, import path, API, or local processing workflow.
- Induce or wait for an out-of-memory condition during XML parsing.
- Cause the application to retry parsing after the earlier allocation failure.
- Trigger the vulnerable setContext retry path, resulting in a NULL pointer dereference.
- Cause the affected process to crash, interrupting the service or XML-processing operation.
How to detect it
Look for evidence of application crashes or abnormal restarts in services that parse XML and link to libexpat. Useful sources include Linux system logs, Windows Application Event Logs, container runtime logs, Kubernetes pod restart events, application error logs, core dump metadata, crash reporters, EDR telemetry, and service supervisor logs. Focus on crashes preceded by XML processing, import jobs, API requests carrying XML, unusually large XML payloads, or out-of-memory messages. Because the vulnerability produces a crash rather than a distinctive network exploit signature, detection should correlate SIGSEGV/access-violation events with libexpat stack frames such as setContext or XML_Parse and with recent XML input activity. Absence of these artifacts does not prove non-exploitation, especially if crash dumps are disabled or logs rotate quickly.
- setContext
- XML_Parse
- libexpat.so
- libexpat.dll
- expat.dll
- SIGSEGV
- segmentation fault
- NULL pointer dereference
- Out of memory
- oom-killer
- core dumped
What your security team should do
- Prioritize upgrade of internet-facing, multi-tenant, or high-availability applications that parse XML with libexpat before 2.7.5.
- Inventory direct, transitive, vendored, and statically linked copies of libexpat across hosts, containers, build artifacts, and third-party software.
- Add crash monitoring for XML-processing services, especially SIGSEGV events involving libexpat, setContext, XML_Parse, or out-of-memory conditions.
- Apply memory, payload-size, timeout, and restart controls around XML parsing paths to limit denial-of-service blast radius.
- Treat this as a routine availability fix unless the affected XML parser is part of a critical production service; KEV status is false, ransomware use is not reported, EPSS is low and flat, and exploit maturity is listed as none.
- Update base images and rebuild dependent applications so patched libexpat versions are actually included in runtime artifacts.
The record
libexpat before 2.7.5 allows a NULL pointer dereference in the function setContext on retry after an earlier ouf-of-memory condition.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | expat | 0 | 2.7.1-150400.3.37.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS | expat | 0 | 2.7.1-150400.3.37.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS | expat | 0 | 2.7.1-150400.3.37.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS | expat | 0 | 2.7.1-150400.3.37.1 |
| SUSE:Linux Enterprise Micro 5.3 | expat | 0 | 2.7.1-150400.3.37.1 |
| SUSE:Linux Enterprise Micro 5.4 | expat | 0 | 2.7.1-150400.3.37.1 |
| SUSE:Linux Enterprise Micro 5.5 | expat | 0 | 2.7.1-150400.3.37.1 |
| SUSE:Linux Enterprise Server 15 SP4-LTSS | expat | 0 | 2.7.1-150400.3.37.1 |
| SUSE:Linux Enterprise Server 15 SP5-LTSS | expat | 0 | 2.7.1-150400.3.37.1 |
| SUSE:Linux Enterprise Server 15 SP6-LTSS | expat | 0 | 2.7.1-150400.3.37.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP4 | expat | 0 | 2.7.1-150400.3.37.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP5 | expat | 0 | 2.7.1-150400.3.37.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP6 | expat | 0 | 2.7.1-150400.3.37.1 |
| openSUSE:Leap 15.6 | expat | 0 | 2.7.1-150400.3.37.1 |
| openSUSE:Leap 16.0 | expat | 0 | 2.7.1-160000.5.1 |
| openSUSE:Tumbleweed | expat | 0 | 2.7.5-1.1 |
| openSUSE:Tumbleweed | mozjs115 | 0 | 115.15.0-8.1 |
| openSUSE:Tumbleweed | mozjs140 | 0 | 140.10.0-1.1 |
Related vulnerabilities
- CVE-2026-32776 libexpat before 2.7.5 allows a NULL pointer dereference with empty external parameter… Also affects expat
- CVE-2026-32777 libexpat before 2.7.5 allows an infinite loop while parsing DTD content. Also affects expat
- CVE-2024-28757 libexpat through 2.6.1 allows an XML Entity Expansion attack when there is isolated use… Also affects expat
- CVE-2026-25210 In libexpat before 2.7.4, the doContent function does not properly determine the buffer… Also affects expat
- CVE-2026-24515 In libexpat before 2.7.4, XML_ExternalEntityParserCreate does not copy unknown encoding… Also affects expat
- CVE-2024-50602 An issue was discovered in libexpat before 2.6.4. Also affects expat
- CVE-2024-45491 An issue was discovered in libexpat before 2.6.3. Also affects expat
- CVE-2024-45492 An issue was discovered in libexpat before 2.6.3. Also affects expat