CVE-2024-28757
High · 7.5CVSS
7.5
EPSS
2.0%
Published
Mar 10, 2024
CISA due date
—
Cloudanix analysis
A flaw in a common XML processing library can let attackers send specially crafted data that makes programs use up all available memory or processing power, causing outages.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Library
- Class
- Improper Input Validation
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Allows XML Entity Expansion attacks when external parsers are created via XML_ExternalEntityParserCreate in isolated contexts, leading to uncontrolled recursive entity expansion and resource exhaustion.
Why it matters to the business
Applications using libexpat for XML processing may experience denial of service through excessive memory or CPU consumption, disrupting services and increasing operational costs until patched.
How an attack unfolds
An attacker supplies a crafted XML document that triggers external entity parsing through XML_ExternalEntityParserCreate, causing the parser to recursively expand entities without limits and exhaust system resources.
How to fix it
Upgrade libexpat to the fixed commit fa75b96546c069d17b8f80d91e0f4ef0cde3790d or later; rebuild and redeploy all dependent applications; disable external entity parsing where possible until updated.
How to confirm the fix worked
Verify the installed libexpat version or commit hash against fa75b96546c069d17b8f80d91e0f4ef0cde3790d; test parsing of known expansion payloads in isolated external parser contexts to confirm resource limits are enforced.
Typical attack path
- Identify an application endpoint or feature that accepts and processes XML using libexpat with external parser creation.
- Craft malicious XML containing recursive external entity references.
- Submit the XML payload to trigger isolated external parsing.
- Observe resource exhaustion leading to service degradation or crash.
How to detect it
Review application logs and system metrics for sudden high memory or CPU usage correlated with XML parsing activity; inspect process trees for libexpat-based parsers handling untrusted input.
What your security team should do
- Prioritize patching all libexpat instances to the fixed commit within standard maintenance windows due to the high availability impact.
- Audit codebases for use of XML_ExternalEntityParserCreate and restrict external entity resolution.
- Monitor for unusual spikes in memory or CPU during XML processing as a temporary detection measure.
- Update dependency scanning tools to flag vulnerable libexpat versions below the fixed commit.
The record
libexpat through 2.6.1 allows an XML Entity Expansion attack when there is isolated use of external parsers (created via XML_ExternalEntityParserCreate).
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| AlmaLinux:9 | expat | 0 | 2.5.0-1.el9_3.1 |
| AlmaLinux:9 | expat-devel | 0 | 2.5.0-1.el9_3.1 |
| Alpine:v3.16 | expat | 0 | 2.6.2-r0 |
| Alpine:v3.17 | expat | 0 | 2.6.2-r0 |
| Alpine:v3.18 | expat | 0 | 2.6.2-r0 |
| Alpine:v3.19 | expat | 0 | 2.6.2-r0 |
| Alpine:v3.20 | expat | 0 | 2.6.2-r0 |
| Alpine:v3.21 | expat | 0 | 2.6.2-r0 |
| Alpine:v3.22 | expat | 0 | 2.6.2-r0 |
| Debian:10 | expat | 0 | No fix |
| Debian:11 | expat | 0 | No fix |
| Debian:11 | libxmltok | 0 | No fix |
| Debian:12 | expat | 0 | No fix |
| Debian:12 | libxmltok | 0 | No fix |
| Debian:13 | expat | 0 | 2.6.1-2 |
| Debian:14 | expat | 0 | 2.6.1-2 |
| Mageia:9 | expat | 0 | 2.6.2-1.mga9 |
| Red Hat:enterprise_linux:9::appstream | expat | 0 | 0:2.5.0-1.el9_3.1 |
| Red Hat:enterprise_linux:9::appstream | expat-debuginfo | 0 | 0:2.5.0-1.el9_3.1 |
| Red Hat:enterprise_linux:9::appstream | expat-debugsource | 0 | 0:2.5.0-1.el9_3.1 |
| Red Hat:enterprise_linux:9::appstream | expat-devel | 0 | 0:2.5.0-1.el9_3.1 |
| Red Hat:enterprise_linux:9::baseos | expat | 0 | 0:2.5.0-1.el9_3.1 |
| Red Hat:enterprise_linux:9::baseos | expat-debuginfo | 0 | 0:2.5.0-1.el9_3.1 |
| Red Hat:enterprise_linux:9::baseos | expat-debugsource | 0 | 0:2.5.0-1.el9_3.1 |
| Red Hat:enterprise_linux:9::baseos | expat-devel | 0 | 0:2.5.0-1.el9_3.1 |
| Red Hat:rhel_eus:9.2::appstream | expat | 0 | 0:2.5.0-1.el9_2.1 |
| Red Hat:rhel_eus:9.2::appstream | expat-debuginfo | 0 | 0:2.5.0-1.el9_2.1 |
| Red Hat:rhel_eus:9.2::appstream | expat-debugsource | 0 | 0:2.5.0-1.el9_2.1 |
| Red Hat:rhel_eus:9.2::appstream | expat-devel | 0 | 0:2.5.0-1.el9_2.1 |
| Red Hat:rhel_eus:9.2::baseos | expat | 0 | 0:2.5.0-1.el9_2.1 |
| Red Hat:rhel_eus:9.2::baseos | expat-debuginfo | 0 | 0:2.5.0-1.el9_2.1 |
| Red Hat:rhel_eus:9.2::baseos | expat-debugsource | 0 | 0:2.5.0-1.el9_2.1 |
| Red Hat:rhel_eus:9.2::baseos | expat-devel | 0 | 0:2.5.0-1.el9_2.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | expat | 0 | 2.4.4-150400.3.17.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS | expat | 0 | 2.4.4-150400.3.17.1 |
| SUSE:Linux Enterprise Micro 5.3 | expat | 0 | 2.4.4-150400.3.17.1 |
| SUSE:Linux Enterprise Micro 5.4 | expat | 0 | 2.4.4-150400.3.17.1 |
| SUSE:Linux Enterprise Micro 5.5 | expat | 0 | 2.4.4-150400.3.17.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP5 | expat | 0 | 2.4.4-150400.3.17.1 |
| SUSE:Linux Enterprise Server 15 SP4-LTSS | expat | 0 | 2.4.4-150400.3.17.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP4 | expat | 0 | 2.4.4-150400.3.17.1 |
| SUSE:Manager Proxy 4.3 | expat | 0 | 2.4.4-150400.3.17.1 |
| SUSE:Manager Server 4.3 | expat | 0 | 2.4.4-150400.3.17.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 | No fix |
| 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.3 |
| 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:23.10 | expat | 0 | 2.5.0-2ubuntu0.1 |
| Ubuntu:24.04:LTS | cadaver | 0 | No fix |
| Ubuntu:24.04:LTS | expat | 0 | 2.6.1-2build1 |
| 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.1-2build1 |
| Ubuntu:24.10 | libxmltok | 0 | No fix |
| 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 | 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 | libxmltok | 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 | No fix |
| 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 | No fix |
| 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 | 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 | No fix |
| 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 | 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 | expat | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | insighttoolkit4 | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | libxmltok | 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 |
| Ubuntu:Pro:22.04:LTS | libxmltok | 0 | No fix |
| Ubuntu:Pro:24.04:LTS | libxmltok | 0 | No fix |
| openSUSE:Leap 15.5 | expat | 0 | 2.4.4-150400.3.17.1 |
| openSUSE:Leap Micro 5.3 | expat | 0 | 2.4.4-150400.3.17.1 |
| openSUSE:Leap Micro 5.4 | expat | 0 | 2.4.4-150400.3.17.1 |
| openSUSE:Tumbleweed | expat | 0 | 2.6.2-1.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-45490 An issue was discovered in libexpat before 2.6.3. Also affects expat
- CVE-2017-9233 XML External Entity vulnerability in libexpat 2.2.0 and earlier (Expat XML Parser… Also affects expat
- CVE-2013-0340 expat before version 2.4.0 does not properly handle entities expansion unless an… Also affects expat
- CVE-2009-3560 The big2_toUtf8 function in lib/xmltok.c in libexpat in Expat 2.0.1, as used in the… Also affects expat
- CVE-2009-3720 The updatePosition function in lib/xmltok_impl.c in libexpat in Expat 2.0.1, as used in… Also affects expat