CVE-2024-45492
Critical · 9.8CVSS
9.8
EPSS
1.4%
Published
Aug 30, 2024
CISA due date
—
Cloudanix analysis
A flaw in a widely used XML library can let attackers crash or take over programs on older 32-bit computers when they process certain files.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Other
- Component
- Library
- Class
- Memory Corruption
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Integer overflow in nextScaffoldPart within xmlparse.c allows m_groupSize to wrap on 32-bit platforms where UINT_MAX equals SIZE_MAX, resulting in memory corruption.
Why it matters to the business
Applications parsing untrusted XML on 32-bit systems may crash or allow arbitrary code execution, disrupting services and exposing data across any dependent software stacks.
How an attack unfolds
An attacker supplies a specially crafted XML document that triggers excessive group size calculations during parsing; on 32-bit builds the overflow corrupts internal structures, enabling control-flow hijacking or denial of service.
How to fix it
Upgrade libexpat to commit 88b3ed553d8ad335559254863a33360d55b9f1d6 or later release 2.6.3; rebuild and redeploy all dependent applications.
How to confirm the fix worked
Confirm the installed libexpat version or commit hash is at or beyond the fixed revision; run regression tests with XML payloads that previously triggered the overflow.
Typical attack path
- Identify a network-accessible service or application that uses a vulnerable libexpat build on a 32-bit platform.
- Send a malicious XML payload crafted to exercise nextScaffoldPart with an oversized m_groupSize value.
- Trigger the integer wrap and subsequent memory corruption to achieve code execution or crash the process.
How to detect it
Review application logs for unexpected crashes or memory errors during XML parsing; monitor for sudden restarts of services that embed libexpat on 32-bit hosts.
What your security team should do
- Prioritize patching all 32-bit deployments that embed or link against libexpat within the next maintenance window.
- Scan build pipelines and package manifests for references to pre-2.6.3 libexpat versions.
- Enable memory-safety tooling such as ASAN or fuzzing in CI for XML parsing components.
The record
An issue was discovered in libexpat before 2.6.3. nextScaffoldPart in xmlparse.c can have an integer overflow for m_groupSize on 32-bit platforms (where UINT_MAX equals SIZE_MAX).
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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 |
| 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 | libqt5-qtwebengine | 0 | 5.15.18-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-45490 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