Librsvg: Use-after-free when XML includes have duplicated entities
What fixes it
- 2.57.5librsvg, rustGitHub
- 2.60.3librsvg, rustGitHub
- 2.61.5librsvg, rustGitHub
- 2.62.4librsvg, rustGitHub
- 2.63.2librsvg, rustGitHub
- 15.5.28next, npmGitHub
npm install next@15.5.28
Show all 7 fixed versions
- 16.4.1next, npmGitHub
npm install next@16.4.1
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
Librsvg uses libxml2, a C library, to parse XML. When librsvg parses an SVG document which has a nested Xinclude, an XML entity declaration with a duplicate name as an existing one can cause a use-after-free error.
While libxml2 is expanding an internal entity, a recursive XInclude can parse another document that declares an entity with the same name. Both parses use the same XmlState entity map on the librsvg side. entity_insert() replaces the first entry, whose Drop implementation calls xmlFreeNode(). The outer xmlCtxtParseEntity() then keeps using the freed 144-byte xmlEntity.
The included parse should not free an entity that the outer parser is still using.
The fix is in commit 8a1b0cd319e9af2d1e9cf878081dd77f227a0504, where librsvg will no longer free xmlEntity pointers that libxml2 is still using.
Text from GitHub Advisory Database
Affected versions 13
- librsvg, rust< 2.57.5GitHub
- librsvg, rust>= 2.60.0-beta.0, < 2.60.3GitHub
- librsvg, rust>= 2.61.0, < 2.61.5GitHub
- librsvg, rust>= 2.62.0-beta.0, < 2.62.4GitHub
- librsvg, rust>= 2.63.0-beta.0, < 2.63.2GitHub
- Red Hat Enterprise Linux 10unaffected: 0:1.0.1-1.el10_2.2 and laterCVE List
- Red Hat Enterprise Linux 10unaffected: 0:2.57.1-9.el10_2.10 and laterCVE List
- Red Hat Enterprise Linux 8unaffected: 0:2.42.7-6.el8_10 and laterCVE List
- Red Hat Enterprise Linux 9unaffected: 0:2.50.7-3.el9_8.1 and laterCVE List
- next, npm>= 10.0.0 <= 15.5.27GitHub
- next, npm> 16.0.0 <= 16.4.0GitHub
- next, npmfrom 10.0.0, fixed in 15.5.28OSV
- next, npmfrom 16.0.0, fixed in 16.4.1OSV
References 23
- github.com/GNOME/librsvg/commit/0bc935e675947e185d42005d3ad93d7cf61bcea9Fixvia GitHub
- github.com/GNOME/librsvg/commit/1606574427408baca8203ef723281509a229f9e2Fixvia GitHub
- github.com/GNOME/librsvg/commit/4d0051a9dbd038a5fe8461b61486677d88f8736dFixvia GitHub
- github.com/GNOME/librsvg/commit/e56cc8a33a7184eef6e8a720414aee6205a400adFixvia GitHub
- gitlab.gnome.org/GNOME/librsvg/-/commit/8a1b0cd319e9af2d1e9cf878081dd77f227a0504Fixvia GitHub
- github.com/GNOME/librsvg/releases/tag/2.63.2Fixvia GitHub
- github.com/GNOME/librsvg/releases/tag/2.62.4Fixvia GitHub
- github.com/GNOME/librsvg/releases/tag/2.61.5Fixvia GitHub
- github.com/GNOME/librsvg/releases/tag/2.60.3Fixvia GitHub
- github.com/GNOME/librsvg/releases/tag/2.57.5Fixvia GitHub
- rustsec.org/advisories/RUSTSEC-2026-0305.htmlAdvisoryvia CVE List
- access.redhat.com/security/cve/CVE-2026-96889Advisoryvia CVE List
- access.redhat.com/errata/RHSA-2026:86921Advisoryvia CVE List
- access.redhat.com/errata/RHSA-2026:86842Advisoryvia CVE List
- access.redhat.com/errata/RHSA-2026:86841Advisoryvia CVE List
- access.redhat.com/errata/RHSA-2026:86331Advisoryvia CVE List
- github.com/advisories/GHSA-cpvr-w4j5-2mpgAdvisoryvia GitHub
- gitlab.gnome.org/GNOME/librsvg/-/work_items/1241Exploitvia CVE List
- nvd.nist.gov/vuln/detail/CVE-2026-96889Referencevia GitHub
- gitlab.gnome.org/GNOME/librsvg/-/merge_requests/1211Referencevia GitHub
- github.com/GNOME/librsvg/blob/2.63.2/NEWSReferencevia GitHub
- bugzilla.redhat.com/show_bug.cgi?id=2539279Referencevia CVE List
- crates.io/crates/librsvgReferencevia CVE List