CVE-2024-8176
HighCVSS 7.5Exploitation Probability (EPSS)
Elevated risk72th percentile - higher than 72% of all known CVEs
Summary
A stack overflow vulnerability exists in the libexpat library due to unbounded recursion when handling nested entity references in XML documents. An attacker can craft a malicious XML file that exhausts stack space, causing a crash.
Risk Assessment
This vulnerability can be exploited for denial-of-service (DoS) attacks by sending a specially crafted XML document remotely. In some environments, it may also lead to memory corruption, posing a risk of privilege escalation.
Recommendation
Update libexpat to the latest patched version immediately to limit recursion depth. In the meantime, implement XML document validation before processing.
Other vulnerabilities in libexpat
See all- CVE-2024-45490High
An issue was discovered in libexpat before 2.6.3, where xmlparse.c does not reject a negative length for XML_ParseBuffer.
- CVE-2017-11742High
The writeRandomBytes_RtlGenRandom function in xmlparse.c in libexpat versions 2.2.1 and 2.2.2 on Windows allows local users to gain privileges via a Trojan horse ADVAPI32.DLL in the current working directory due to an untrusted search path, known as DLL hijacking.
- CVE-2017-9233High
XML External Entity vulnerability in libexpat 2.2.0 and earlier allows attackers to put the parser in an infinite loop using a malformed external entity definition from an external DTD.
- CVE-2024-50602Medium
Issue in libexpat before version 2.6.4. The XML_ResumeParser function can crash if XML_StopParser stops/suspends an unstarted parser.
- CVE-2024-45492Critical
An issue was discovered in libexpat before version 2.6.3, which can lead to an integer overflow in the nextScaffoldPart function in xmlparse.c on 32-bit platforms.
- CVE-2024-45491Critical
An issue was discovered in libexpat before version 2.6.3 related to integer overflow in the dtdCopy function in xmlparse.c. This issue occurs on 32-bit platforms where UINT_MAX equals SIZE_MAX.
- CVE-2026-76957Medium
libexpat before 2.8.4 lacks handler call depth tracking with custom encoding callbacks. Thus, a use-after-free can occur. NOTE: this is similar to CVE-2026-50219, CVE-2026-56131 and CVE-2026-56412.
- CVE-2026-76956Medium
In libexpat versions 2.8.2 and 2.8.3 before 2.8.4, misinterpretation of getentropy's return code leads to insufficient entropy, making it vulnerable to hash flooding attacks, causing denial of service via crafted XML content.
- CVE-2026-72522Medium
libexpat before 2.8.3 has an out-of-bounds read and resultant infinite loop because low surrogates are treated the same as high surrogates during Unicode processing in the *_toUtf16 functions.
- CVE-2026-56412Medium
In libexpat before version 2.8.2, XML_TOK_DATA_CHARS is not considered in doCdataSection, leading to a lack of handler call depth tracking in cases of policy violation. This can result in a use-after-free error.
Original NVD description (English source)
A stack overflow vulnerability exists in the libexpat library due to the way it handles recursive entity expansion in XML documents. When parsing an XML document with deeply nested entity references, libexpat can be forced to recurse indefinitely, exhausting the stack space and causing a crash. This issue could lead to denial of service (DoS) or, in some cases, exploitable memory corruption, depending on the environment and library usage.

