# CVE-2026-121444: svg-sanitizer algorithmic complexity denial of service in use reference-graph analysis

Source: https://junglewise.ai/threats/cve-2026-121444-svg-sanitizer-from-0-11-0-before-1-1-0-contains-an-algorithmic  
Publisher: Junglewise Threat Intelligence, https://junglewise.ai/threats  
Published: 2026-11-03. Updated: 2026-11-03  
License: CC BY 4.0 with a link back

CVE-2026-121444 · Severity: high · CVSS 7.5 · Published 2026-11-03

svg-sanitizer is a PHP library that removes potentially harmful code from SVG (scalable vector graphics) files. The library contains a flaw in how it analyzes SVG elements that reference other elements, allowing attackers to upload a small malicious SVG file that causes the server to consume massive CPU resources for hours, disrupting service availability for legitimate users.

Technologies: [Enshrined Svg-Sanitizer](https://junglewise.ai/threats/technologies/svg-sanitizer). Vendors: [Enshrined](https://junglewise.ai/threats/vendors/enshrined).

## Quick answers

**Is CVE-2026-121444 exploited in the wild?** No. Junglewise Threat Intelligence has no report of CVE-2026-121444 being exploited in the wild.

**How severe is CVE-2026-121444?** High severity, with a CVSS score of 7.5, published 3 November 2026.

**Which products and versions are affected?** Enshrined Svg-Sanitizer 0.11.0 to 1.0.0.

**Is there a fix for CVE-2026-121444?** Yes: fixed in 1.1.0. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.

**How is CVE-2026-121444 attacked?** It is attacked over the network, in a software library.

**Am I affected by CVE-2026-121444?** Check whether you run Enshrined Svg-Sanitizer at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

## How to fix

- Fixed in 1.1.0

## Technical details

The vulnerability exists in the hasInfiniteLoop() and countUse() functions in src/ElementReference/Subject.php, which recursively enumerate all paths in an SVG reference graph without memoization. An attacker constructs a layered, acyclic directed graph with 15 nested levels where each node has multiple children pointing to the next layer, forcing the algorithm to explore approximately k^15 paths. Because the depth limit of 15 prevents the exception from firing at the boundary, there is no bounds check on exponential breadth, allowing a ~12 KB SVG to require tens of hours of CPU time during sanitization.

## Affected products

- enshrined svg-sanitizer 0.11.0 to 1.0.0

## Timeline

- 2026-10-19: disclosed
- 2026-11-03: advisory

## References

- [https://github.com/darylldoyle/svg-sanitizer/security/advisories/GHSA-hrwm-vcc9-hcm4](https://github.com/darylldoyle/svg-sanitizer/security/advisories/GHSA-hrwm-vcc9-hcm4)
- [https://www.vulncheck.com/advisories/svg-sanitizer-0.11.0-before-1.1.0-algorithmic-complexity-dos-via-use-reference-graph](https://www.vulncheck.com/advisories/svg-sanitizer-0.11.0-before-1.1.0-algorithmic-complexity-dos-via-use-reference-graph)

## Related threats

- [svg-sanitizer cross-site scripting via animateTransform](https://junglewise.ai/threats/cve-2026-121447-svg-sanitizer-before-1-1-0-contains-a-cross-site-scripting)
- [svg-sanitizer incomplete URL filtering in SVG attributes](https://junglewise.ai/threats/cve-2026-121446-svg-sanitizer-from-0-5-0-before-1-1-0-contains-an-incomplete)
- [svg-sanitizer denial of service via unclosed tag](https://junglewise.ai/threats/cve-2026-121443-svg-sanitizer-from-1-1-0-before-1-1-1-contains-a-denial-of)
- [svg-sanitizer uncaught LogicException in sanitize()](https://junglewise.ai/threats/cve-2026-117541-svg-sanitizer-from-0-11-0-before-1-1-0-contains-an-uncaught)
- [svg-sanitizer quadratic DoS in PHP tag stripping](https://junglewise.ai/threats/cve-2026-117540-svg-sanitizer-from-0-5-3-before-1-1-0-contains-a-denial-of)
