Read the docs
TI-2026-66444 Aliases GHSA-2j22-pr5w-6gq8

Loofah has improper detection of disallowed URIs via `allowed_uri?`

Priority LOW 38CWE-116Published · Updated

Key facts

Attack vector
—
Privileges required
—
User interaction
—
Attack complexity
—
Impact type
Cross-site scripting
Confidentiality · integrity · availability
—
Fix status
Fixed

No CVSS vector from any source. Fix status from GitHub. Impact type from CWE-79.

Summary

## Summary `Loofah::HTML5::Scrub.allowed_uri?` does not correctly reject `javascript:` URIs when the scheme is split by HTML entity-encoded control characters such as `
` (carriage return), `
` (line feed), or `	` (tab). ## Details The `allowed_uri?` method strips literal control characters before decoding HTML entities. Payloads like `java
script:alert(1)` survive the control character strip, then `
` is decoded to a carriage return, producing `java\rscript:alert(1)`. Note that the Loofah sanitizer's default `sanitize()` path is **not affected** because Nokogiri decodes HTML entities during parsing before Loofah evaluates the URI protocol. This issue only affects direct callers of the `allowed_uri?` string-level helper when passing HTML-encoded strings. ## Impact Applications that call `Loofah::HTML5::Scrub.allowed_uri?` to validate user-controlled URLs and then render approved URLs into `href` or other browser-interpreted URI attributes may be vulnerable to cross-site scripting (XSS). This only affects Loofah `2.25.0`. ## Mitigation Upgrade to Loofah >= `2.25.1`. ## Credit Responsibly reported by HackOne user @smlee.

Why it matters now

Fix Fixed loofah (RubyGems): 2.25.1

SSVC decision points

Not available: CISA has not published SSVC decision points for this record.

Affected products

VendorProductAffected versionsFixed inStatusSource
—loofah (RubyGems)2.25.0 to before 2.25.12.25.1Patch availableGHSA-2j22-pr5w-6gq8
  • loofah (RubyGems) Vendor— Affected 2.25.0 to before 2.25.1 Fixed in 2.25.1 Patch available GHSA-2j22-pr5w-6gq8

Remediation

  • Fix · GHSA-2j22-pr5w-6gq8 loofah (RubyGems) Fixed in 2.25.1 Advisory →

Timeline

  1. 2026-10-03 Threatist record created from GHSA-2j22-pr5w-6gq8

References

Sources

This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences