See how libexpat compares to other vendors in security performance
Hello oss-security,
just a quick note that libexpat 2.8.4 (or "Expat 2.8.4") released today is fixing four vulnerabilities:
- CVE-2026-66046 - CVE-2026-76641 - CVE-2026-76956 - CVE-2026-76957
The related part of the change log is this:
#1321 #1331 CVE-2026-66046, CVE-2026-76641 -- Fix quadratic runtime from "attribute isCdata lookups" that allowed denial of service attacks through moderately sized crafted XML input (CWE-407). The vulnerability is closely related to past CVE-2026-45186 that was fixed with Expat 2.8.1. Please note that a layer of compression around XML can significantly reduce the minimum attack payload size. Upstream CVSS 3.1 vector: AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H (CVSS score: 7.5) (Note the "AV:N" for network/remote.) #1322 CVE-2026-76957 -- Protect custom encoding callbacks from parser re-entry. The vulnerability is closely related to past issues CVE-2026-50219, CVE-2026-56131 and CVE-2026-56412 that were all fixed with Expat 2.8.2. #1326 CVE-2026-76956 -- Fix inverted getentropy() return handling; allowed for hash flooding denial of services in configurations where getentropy is configured or detected as the only high quality entropy extractor. Upstream CVSS 3.1 vector: AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H (CVSS score: 5.9) (Note the "AV:N" for network/remote.)
Some key links are:
- The blog post about it https://blog.hartwork.org/posts/expat-2-8-4-released/
- The full change log of release 2.8.4 https://github.com/libexpat/libexpat/blob/R284/expat/Changes
- The fixing pull requests - https://github.com/libexpat/libexpat/pull/1321 - https://github.com/libexpat/libexpat/pull/1322 - https://github.com/libexpat/libexpat/pull/1326 - https://github.com/libexpat/libexpat/pull/1331
- The NVD CVE metadata - https://nvd.nist.gov/vuln/detail/cve-2026-66046 - https://nvd.nist.gov/vuln/detail/cve-2026-76641 - https://nvd.nist.gov/vuln/detail/cve-2026-76956 - https://nvd.nist.gov/vuln/detail/cve-2026-76957
Best
Sebastian
In libexpat 2.8.2 and 2.8.3 before 2.8.4, misinterpretation of getentropy's return code leads to insufficient entropy, which results in being vulnerable to hash flooding attacks, causing a denial of service via crafted XML content.
Hello oss-security,
just a quick note that libexpat 2.8.2 (or "Expat 2.8.2") released today is fixing 13 vulnerabilities of three classes:
- 1x out-of-bounds write - 3x missing control flow integrity checks - 9x integer overflow
The related section of the change log says this:
#1246 CVE-2026-50219 -- Disallow calls to functions XMLGetBuffer, XMLParse, XMLParseBuffer, XMLParserFree, XMLParserReset to guard e.g. Expat bindings from memory corruption; this CPython issue is related: https://github.com/python/cpython/issues/146169 #1267 CVE-2026-56131 -- Protect XMLResumeParser from being called from a handler, plugging a hole in the fix to CVE-2026-50219 #1272 CVE-2026-56132 -- Fix out-of-bound scaffolding index store in doProlog #1229 #1232 CVE-2026-56403 -- Integer overflow in storeAtts #1249 CVE-2026-56404 -- Integer overflow in addBinding #1251 CVE-2026-56405 -- Integer overflow in getAttributeId #1255 CVE-2026-56406 -- Integer overflow in XMLParseBuffer #1262 CVE-2026-56407 -- Integer overflow in textLen handling #565 CVE-2026-56408 -- Integer overflow in copyString (commit 16e2efd867ea8567ffa012210b52ef5918e20817) #1259 CVE-2026-56409 -- xmlwf: Integer overflow in output path join #1252 CVE-2026-56410 -- xmlwf: Integer overflow in resolveSystemId #1263 CVE-2026-56411 -- xmlwf: Integer overflow in notation list allocation #1278 CVE-2026-56412 -- Guard XMLTOKDATACHARS handler calls in doCdataSection, plugging a hole in the fix to CVE-2026-50219
Some key links are:
- The blog post about it https://blog.hartwork.org/posts/expat-2-8-2-released/
- The change log of release 2.8.2 https://github.com/libexpat/libexpat/blob/R282/expat/Changes
- The related pull requests Best
Sebastian
In libexpat through 2.7.3, a crafted file with an approximate size of 2 MiB can lead to dozens of seconds of processing time.
Hello oss-security,
just a quick note that libexpat 2.7.3 (or "Expat 2.7.3") released today is improving upon the original fixes to CVE-2024-8176 and CVE-2025-59375. So if you backported the original fixes, please be sure to update/extend these backports as needed.
Some key links are:
- The change log of release 2.7.3 https://github.com/libexpat/libexpat/blob/R273/expat/Changes
- The two key pull requests: https://github.com/libexpat/libexpat/pull/1048 https://github.com/libexpat/libexpat/pull/1059
Best
Sebastian
Hello oss-security,
just a quick note that libexpat 2.7.2 (or "Expat 2.7.2") released today is fixing CVE-2025-59375: denial of service through forced extensive use of dynamic memory despite small parser input.
Some key links are:
- The change log of release 2.7.2 https://github.com/libexpat/libexpat/blob/R272/expat/Changes
- The ClusterFuzz finding, its payload and analysis https://github.com/libexpat/libexpat/issues/1018
- The fixing pull request https://github.com/libexpat/libexpat/pull/1034
- The official CVE metadata https://nvd.nist.gov/vuln/detail/CVE-2025-59375
Best
Sebastian
An issue was discovered in libexpat before 2.6.3. nextScaffoldPart in xmlparse.c can have an integer overflow for mgroupSize on 32-bit platforms (where UINTMAX equals SIZEMAX).
libexpat through 2.5.0 allows a denial of service (resource consumption) because many full reparsings are required in the case of a large token for which multiple buffer fills are needed.
References: [1] https://github.com/libexpat/libexpat/pull/789 [2] https://github.com/libexpat/libexpat/commit/34b598c5f594b015c513c73f06e7ced3323edbf1