CVE-2024-45490
High · 7.5CVSS
7.5
EPSS
1.7%
Published
Aug 30, 2024
CISA due date
—
Cloudanix analysis
A widely used XML parsing library can be tricked into crashing when given certain bad input, taking down any program that uses it until it is updated.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Trivial
- Impact
- Denial Of Service
- Component
- Library
- Class
- XXE
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
xmlparse.c in libexpat accepts a negative length argument to XML_ParseBuffer without validation, allowing subsequent integer underflow or out-of-bounds memory operations that terminate the process.
Why it matters to the business
Applications and services relying on libexpat can be forced offline by remote or local inputs, producing availability loss until the process is restarted or the library is updated.
How an attack unfolds
An attacker supplies an XML document or invokes the parsing API with a negative buffer length value; the missing check permits the parser to dereference invalid memory offsets, triggering a crash without requiring authentication or user interaction.
How to fix it
Upgrade libexpat to the commit 88b3ed553d8ad335559254863a33360d55b9f1d6 or later release that enforces non-negative lengths in XML_ParseBuffer; rebuild and redeploy all dependent binaries.
How to confirm the fix worked
Confirm the installed libexpat version or commit hash is at or beyond 88b3ed553d8ad335559254863a33360d55b9f1d6; run unit tests that pass negative lengths to XML_ParseBuffer and verify they are rejected with an error rather than crashing.
Typical attack path
- Identify a network-accessible service or application that links against a vulnerable libexpat build
- Craft an XML payload or API call containing a negative length parameter for XML_ParseBuffer
- Deliver the input over the network or locally
- Observe process termination and service denial
How to detect it
Review application and system logs for unexpected libexpat process crashes or segmentation faults during XML parsing; correlate with inbound XML traffic or API calls that precede the failure; monitor for repeated restarts of services that embed libexpat.
What your security team should do
- Immediately inventory all systems and containers that ship or link libexpat and schedule upgrades to the fixed commit
- Prioritize patching internet-facing services first due to the network attack vector and high availability impact
- Add libexpat version checks to build pipelines and dependency scanners to prevent re-introduction of vulnerable builds
The record
An issue was discovered in libexpat before 2.6.3. xmlparse.c does not reject a negative length for XML_ParseBuffer.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| AlmaLinux:8 | expat | 0 | 2.2.5-15.el8_10 |
| AlmaLinux:8 | expat-devel | 0 | 2.2.5-15.el8_10 |
| AlmaLinux:9 | expat | 0 | 2.5.0-2.el9_4.1 |
| AlmaLinux:9 | expat-devel | 0 | 2.5.0-2.el9_4.1 |
| Alpine:v3.17 | expat | 0 | 2.6.3-r0 |
| Alpine:v3.18 | expat | 0 | 2.6.3-r0 |
| Alpine:v3.19 | expat | 0 | 2.6.3-r0 |
| Alpine:v3.20 | expat | 0 | 2.6.3-r0 |
| Alpine:v3.21 | expat | 0 | 2.6.3-r0 |
| Alpine:v3.22 | expat | 0 | 2.6.3-r0 |
| Debian:11 | expat | 0 | 2.2.10-2+deb11u6 |
| Debian:11 | libxmltok | 0 | No fix |
| Debian:12 | expat | 0 | 2.5.0-1+deb12u1 |
| Debian:12 | libxmltok | 0 | No fix |
| Debian:13 | expat | 0 | 2.6.2-2 |
| Mageia:9 | expat | 0 | 2.6.3-1.mga9 |
| Mageia:9 | mozjs78 | 0 | 78.15.0-7.1.mga9 |
| Red Hat:enterprise_linux:8::baseos | expat | 0 | 0:2.2.5-15.el8_10 |
| Red Hat:enterprise_linux:8::baseos | expat-debuginfo | 0 | 0:2.2.5-15.el8_10 |
| Red Hat:enterprise_linux:8::baseos | expat-debugsource | 0 | 0:2.2.5-15.el8_10 |
| Red Hat:enterprise_linux:8::baseos | expat-devel | 0 | 0:2.2.5-15.el8_10 |
| Red Hat:enterprise_linux:9::appstream | expat | 0 | 0:2.5.0-2.el9_4.1 |
| Red Hat:enterprise_linux:9::appstream | expat-debuginfo | 0 | 0:2.5.0-2.el9_4.1 |
| Red Hat:enterprise_linux:9::appstream | expat-debugsource | 0 | 0:2.5.0-2.el9_4.1 |
| Red Hat:enterprise_linux:9::appstream | expat-devel | 0 | 0:2.5.0-2.el9_4.1 |
| Red Hat:enterprise_linux:9::baseos | expat | 0 | 0:2.5.0-2.el9_4.1 |
| Red Hat:enterprise_linux:9::baseos | expat-debuginfo | 0 | 0:2.5.0-2.el9_4.1 |
| Red Hat:enterprise_linux:9::baseos | expat-debugsource | 0 | 0:2.5.0-2.el9_4.1 |
| Red Hat:enterprise_linux:9::baseos | expat-devel | 0 | 0:2.5.0-2.el9_4.1 |
| Rocky Linux:8 | expat | 0 | 0:2.2.5-15.el8_10 |
| Rocky Linux:9 | expat | 0 | 0:2.5.0-2.el9_4.1 |
| SUSE:Linux Enterprise Micro 5.1 | expat | 0 | 2.2.5-150000.3.30.1 |
| SUSE:Linux Enterprise Micro 5.2 | expat | 0 | 2.2.5-150000.3.30.1 |
| SUSE:Linux Enterprise Micro 5.2 | mozjs60 | 0 | 60.9.0-150200.6.8.1 |
| SUSE:Linux Enterprise Micro 5.3 | expat | 0 | 2.4.4-150400.3.22.1 |
| SUSE:Linux Enterprise Micro 5.3 | mozjs60 | 0 | 60.9.0-150200.6.8.1 |
| SUSE:Linux Enterprise Micro 5.4 | expat | 0 | 2.4.4-150400.3.22.1 |
| SUSE:Linux Enterprise Micro 5.4 | mozjs60 | 0 | 60.9.0-150200.6.8.1 |
| SUSE:Linux Enterprise Micro 5.5 | expat | 0 | 2.4.4-150400.3.22.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP5 | expat | 0 | 2.4.4-150400.3.22.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP6 | expat | 0 | 2.4.4-150400.3.22.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP7 | mozjs60 | 0 | 60.9.0-150200.6.8.1 |
| SUSE:Linux Enterprise Module for Desktop Applications 15 SP5 | mozjs78 | 0 | 78.15.0-150400.3.6.2 |
| SUSE:Linux Enterprise Module for Desktop Applications 15 SP6 | mozjs115 | 0 | 115.4.0-150600.3.3.1 |
| SUSE:Linux Enterprise Module for Desktop Applications 15 SP7 | mozjs60 | 0 | 60.9.0-150200.6.8.1 |
| SUSE:Linux Enterprise Module for Package Hub 15 SP5 | mozjs78 | 0 | 78.15.0-150400.3.6.2 |
| SUSE:Linux Enterprise Module for Package Hub 15 SP6 | mozjs78 | 0 | 78.15.0-150400.3.6.2 |
| SUSE:Linux Enterprise Module for Package Hub 15 SP7 | mozjs52 | 0 | 52.6.0-150000.3.9.1 |
| SUSE:Linux Enterprise Server 12 SP5 | expat | 0 | 2.1.0-21.37.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP5 | expat | 0 | 2.1.0-21.37.1 |
| SUSE:Linux Enterprise Software Development Kit 12 SP5 | expat | 0 | 2.1.0-21.37.1 |
| Ubuntu:14.04:LTS | xmlrpc-c | 0 | No fix |
| Ubuntu:16.04:LTS | ayttm | 0 | No fix |
| Ubuntu:16.04:LTS | cableswig | 0 | No fix |
| Ubuntu:16.04:LTS | cadaver | 0 | No fix |
| Ubuntu:16.04:LTS | gdcm | 0 | No fix |
| Ubuntu:16.04:LTS | insighttoolkit4 | 0 | No fix |
| Ubuntu:16.04:LTS | matanza | 0 | No fix |
| Ubuntu:16.04:LTS | smart | 0 | No fix |
| Ubuntu:16.04:LTS | swish-e | 0 | No fix |
| Ubuntu:16.04:LTS | tdom | 0 | No fix |
| Ubuntu:16.04:LTS | wbxml2 | 0 | No fix |
| Ubuntu:16.04:LTS | xmlrpc-c | 0 | No fix |
| Ubuntu:18.04:LTS | cadaver | 0 | No fix |
| Ubuntu:18.04:LTS | coin3 | 0 | No fix |
| Ubuntu:18.04:LTS | gdcm | 0 | No fix |
| Ubuntu:18.04:LTS | insighttoolkit4 | 0 | No fix |
| Ubuntu:18.04:LTS | matanza | 0 | No fix |
| Ubuntu:18.04:LTS | smart | 0 | No fix |
| Ubuntu:18.04:LTS | swish-e | 0 | No fix |
| Ubuntu:18.04:LTS | tdom | 0 | No fix |
| Ubuntu:18.04:LTS | vnc4 | 0 | No fix |
| Ubuntu:18.04:LTS | wbxml2 | 0 | No fix |
| Ubuntu:18.04:LTS | xmlrpc-c | 0 | No fix |
| Ubuntu:20.04:LTS | cadaver | 0 | No fix |
| Ubuntu:20.04:LTS | expat | 0 | 2.2.9-1ubuntu0.7 |
| Ubuntu:20.04:LTS | insighttoolkit4 | 0 | No fix |
| Ubuntu:20.04:LTS | libxmltok | 0 | No fix |
| Ubuntu:20.04:LTS | matanza | 0 | No fix |
| Ubuntu:20.04:LTS | swish-e | 0 | No fix |
| Ubuntu:20.04:LTS | tdom | 0 | No fix |
| Ubuntu:20.04:LTS | wbxml2 | 0 | No fix |
| Ubuntu:20.04:LTS | xmlrpc-c | 0 | No fix |
| Ubuntu:22.04:LTS | cadaver | 0 | No fix |
| Ubuntu:22.04:LTS | expat | 0 | 2.4.7-1ubuntu0.4 |
| Ubuntu:22.04:LTS | insighttoolkit4 | 0 | No fix |
| Ubuntu:22.04:LTS | libxmltok | 0 | No fix |
| Ubuntu:22.04:LTS | matanza | 0 | No fix |
| Ubuntu:22.04:LTS | swish-e | 0 | No fix |
| Ubuntu:22.04:LTS | tdom | 0 | No fix |
| Ubuntu:22.04:LTS | wbxml2 | 0 | No fix |
| Ubuntu:22.04:LTS | xmlrpc-c | 0 | No fix |
| Ubuntu:24.04:LTS | cadaver | 0 | No fix |
| Ubuntu:24.04:LTS | expat | 0 | 2.6.1-2ubuntu0.1 |
| Ubuntu:24.04:LTS | libxmltok | 0 | No fix |
| Ubuntu:24.04:LTS | matanza | 0 | No fix |
| Ubuntu:24.04:LTS | swish-e | 0 | No fix |
| Ubuntu:24.04:LTS | tdom | 0 | No fix |
| Ubuntu:24.04:LTS | wbxml2 | 0 | No fix |
| Ubuntu:24.04:LTS | xmlrpc-c | 0 | No fix |
| Ubuntu:24.10 | cadaver | 0 | No fix |
| Ubuntu:24.10 | expat | 0 | 2.6.2-2 |
| Ubuntu:24.10 | libxmltok | 0 | 1.2-4.1ubuntu3 |
| Ubuntu:24.10 | matanza | 0 | No fix |
| Ubuntu:24.10 | swish-e | 0 | No fix |
| Ubuntu:24.10 | tdom | 0 | No fix |
| Ubuntu:24.10 | wbxml2 | 0 | No fix |
| Ubuntu:24.10 | xmlrpc-c | 0 | No fix |
| Ubuntu:25.04 | cadaver | 0 | No fix |
| Ubuntu:25.04 | libxmltok | 0 | 1.2-4.1ubuntu3 |
| Ubuntu:25.04 | matanza | 0 | No fix |
| Ubuntu:25.04 | swish-e | 0 | No fix |
| Ubuntu:25.04 | tdom | 0 | No fix |
| Ubuntu:25.04 | wbxml2 | 0 | No fix |
| Ubuntu:25.04 | xmlrpc-c | 0 | No fix |
| Ubuntu:25.10 | cadaver | 0 | No fix |
| Ubuntu:25.10 | matanza | 0 | No fix |
| Ubuntu:25.10 | swish-e | 0 | No fix |
| Ubuntu:25.10 | tdom | 0 | No fix |
| Ubuntu:25.10 | wbxml2 | 0 | No fix |
| Ubuntu:25.10 | xmlrpc-c | 0 | No fix |
| Ubuntu:Pro:14.04:LTS | coin3 | 0 | No fix |
| Ubuntu:Pro:14.04:LTS | expat | 0 | 2.1.0-4ubuntu1.4+esm9 |
| Ubuntu:Pro:14.04:LTS | vnc4 | 0 | No fix |
| Ubuntu:Pro:14.04:LTS | vtk | 0 | No fix |
| Ubuntu:Pro:14.04:LTS | xmlrpc-c | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | ayttm | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | cableswig | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | cadaver | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | coin3 | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | expat | 0 | 2.1.0-7ubuntu0.16.04.5+esm9 |
| Ubuntu:Pro:16.04:LTS | gdcm | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | insighttoolkit4 | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | libxmltok | 0 | 1.2-3ubuntu0.16.04.1~esm4 |
| Ubuntu:Pro:16.04:LTS | matanza | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | smart | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | swish-e | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | tdom | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | vnc4 | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | vtk | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | wbxml2 | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | xmlrpc-c | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | cadaver | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | coin3 | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | expat | 0 | 2.2.5-3ubuntu0.9+esm1 |
| Ubuntu:Pro:18.04:LTS | gdcm | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | insighttoolkit4 | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | libxmltok | 0 | 1.2-4ubuntu0.18.04.1~esm3 |
| Ubuntu:Pro:18.04:LTS | matanza | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | smart | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | swish-e | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | tdom | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | vnc4 | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | wbxml2 | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | xmlrpc-c | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | cadaver | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | insighttoolkit4 | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | libxmltok | 0 | 1.2-4ubuntu0.20.04.1~esm3 |
| Ubuntu:Pro:20.04:LTS | matanza | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | swish-e | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | tdom | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | wbxml2 | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | xmlrpc-c | 0 | No fix |
| Ubuntu:Pro:22.04:LTS | libxmltok | 0 | 1.2-4ubuntu0.22.04.1~esm3 |
| Ubuntu:Pro:24.04:LTS | libxmltok | 0 | 1.2-4.1ubuntu2.24.0.4.1+esm1 |
| openSUSE:Leap 15.5 | expat | 0 | 2.4.4-150400.3.22.1 |
| openSUSE:Leap 15.5 | mozjs78 | 0 | 78.15.0-150400.3.6.2 |
| openSUSE:Leap 15.6 | expat | 0 | 2.4.4-150400.3.22.1 |
| openSUSE:Leap 15.6 | mozjs115 | 0 | 115.4.0-150600.3.3.1 |
| openSUSE:Leap 15.6 | mozjs52 | 0 | 52.6.0-150000.3.9.1 |
| openSUSE:Leap 15.6 | mozjs60 | 0 | 60.9.0-150200.6.8.1 |
| openSUSE:Leap 15.6 | mozjs78 | 0 | 78.15.0-150400.3.6.2 |
| openSUSE:Leap Micro 5.5 | expat | 0 | 2.4.4-150400.3.22.1 |
| openSUSE:Tumbleweed | expat | 0 | 2.6.3-1.1 |
| openSUSE:Tumbleweed | mozjs115 | 0 | 115.4.0-5.1 |
| openSUSE:Tumbleweed | mozjs128 | 0 | 128.2.0-2.1 |
| openSUSE:Tumbleweed | mozjs78 | 0 | 78.15.0-5.1 |
| openSUSE:Tumbleweed | x3270 | 0 | 4.3-4.1 |
Related vulnerabilities
- 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
- CVE-2024-28757 libexpat through 2.6.1 allows an XML Entity Expansion attack when there is isolated use… Also affects expat
- CVE-2017-9233 XML External Entity vulnerability in libexpat 2.2.0 and earlier (Expat XML Parser… Also affects expat
- CVE-2016-4472 The overflow protection in Expat is removed by compilers with certain optimization… Also affects expat
- CVE-2012-6702 Expat, when used in a parser that has not called XML_SetHashSalt or passed it a seed of… Also affects expat
- CVE-2016-0718 Expat allows context-dependent attackers to cause a denial of service (crash) or possibly… Also affects expat