CVE-2026-126205: Loofah regular expression denial of service in SVG local-reference check

CVE-2026-126205 · Severity: medium · CVSS 5.3 · Published 2026-11-12

Loofah is an HTML sanitizer library used to clean untrusted HTML for safe display. A flaw in its SVG attribute validation causes the regex engine to consume excessive CPU when processing specially crafted whitespace-only attribute values. An attacker can trigger a denial-of-service condition by sending malicious HTML to be sanitized, consuming server resources without performing actual data access or modification.

Technologies: Flavorjones Loofah, loofah (RubyGems). Vendors: Flavorjones, RubyGems.

Quick answers

Is CVE-2026-126205 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-126205 being exploited in the wild.
How severe is CVE-2026-126205?
Medium severity, with a CVSS score of 5.3, published 12 November 2026.
Which products and versions are affected?
Flavorjones Loofah < 2.25.3; loofah (RubyGems) < 2.25.3.
Is there a fix for CVE-2026-126205?
Yes: fixed in 2.25.3. Until then: Applications unable to upgrade should run Ruby 3.2 or later, which matches the vulnerable pattern in linear time and eliminates the ReDoS risk. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-126205 attacked?
It is attacked over the network.
Am I affected by CVE-2026-126205?
Check whether you run Flavorjones Loofah or loofah (RubyGems) 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: 2.25.3

Applications unable to upgrade should run Ruby 3.2 or later, which matches the vulnerable pattern in linear time and eliminates the ReDoS risk.

Technical details

The vulnerability is an inefficient regular expression with quadratic complexity in the SVG local-reference check. The pattern `/^\s*[^#\s].*/m` rescans from each line start when given all-whitespace input because `^` anchors to line starts and `\s` matches newlines. This affects Ruby 3.1 and earlier; Ruby 3.2 introduced linear-time regex matching that eliminates the issue. An unauthenticated attacker supplying HTML to the sanitizer can cause CPU exhaustion with input length proportional to the attack duration.

Affected products

  • flavorjones Loofah < 2.25.3

Identifiers

  • CVE-2026-126205
  • GHSA-mf2j-8f84-cc9q

Timeline

  • 2026-11-12: disclosed

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.