Quick answers
- Is CVE-2026-107381 exploited in the wild?
- No. Junglewise Threat Intelligence has no report of CVE-2026-107381 being exploited in the wild.
- How severe is CVE-2026-107381?
- Medium severity, with a CVSS score of 6.5, published 14 October 2026.
- Which products and versions are affected?
- Enshrined Svg-Sanitizer 0.22.0 and earlier; enshrined/svg-sanitize (Packagist) <= 0.22.0, ECOSYSTEM:introduced=0,fixed=1.0.0.
- Is there a fix for CVE-2026-107381?
- Yes. enshrined/svg-sanitize (Packagist): upgrade to 1.0.0 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
- How is CVE-2026-107381 attacked?
- It is attacked over the network, in a software library.
- Am I affected by CVE-2026-107381?
- Check whether you run Enshrined Svg-Sanitizer or enshrined/svg-sanitize (Packagist) 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
- enshrined/svg-sanitize (Packagist): upgrade to 1.0.0 or later
composer require enshrined/svg-sanitize:^1.0.0
Technical details
The vulnerability is a case-sensitivity mismatch: `Resolver::processReferences()` uses XPath with case-sensitive attribute selection `[@href or @xlink:href]`, but `Sanitizer::cleanHrefAttributes()` later normalizes mixed-case attribute names to lowercase. An attacker can bypass the nesting-DoS protection by submitting SVG with `xlink:HrEf` (mixed case), which is not caught by the reference graph but then normalized to `xlink:href` in the output, creating a live nesting bomb that should have been stripped. The fix requires either case-insensitive attribute matching in the XPath query or reordering the sanitizer pipeline so attribute normalization occurs before graph collection.
Affected products
- enshrined svg-sanitizer 0.22.0 and earlier
Identifiers
- CVE-2026-107381
- GHSA-m9xh-6747-9r6f
Timeline
- 2026-10-08: disclosed