Loading...
Skip to main content

CVE-2026-73491 — Vulnerability in loofah — CVE Details

LOW

Loofah `allowed_uri?` does not detect `javascript:` URIs split by named whitespace character references

Published July 21, 2026Updated September 10, 2026Source: osv

Summary

## Summary `Loofah::HTML5::Scrub.allowed_uri?` does not correctly reject `javascript:` URIs when the scheme is split or prefixed by the HTML5 named character references `	` (tab) or `
` (line feed). This is a bypass of the fix for [GHSA-46fp-8f5p-pf2m](https://github.com/flavorjones/loofah/security/advisories/GHSA-46fp-8f5p-pf2m), which handled the equivalent numeric character references (`	`, `
`, `
`) but did not cover the named forms. ## Details `allowed_uri?` decodes HTML entities with `CGI.unescapeHTML`, which handles numeric character references but not HTML5 named character references. Payloads like `java	script:alert(1)` are therefore left intact, so the method does not recognize the `javascript:` scheme and returns `true`. A browser, however, decodes `	` and `
` to tab and line feed and strips them from the URL during parsing, producing `javascript:alert(1)`. `	` and `
` are the only relevant named character references: across the HTML5 named-character table, they are the only two that decode to characters the WHATWG URL parser strips from a URL (U+0009 and U+000A; there is no named reference for U+000D). ` ` / ` ` decode to U+00A0, which browsers do not strip, so they aren't usable for this bypass. Note that Loofah's default `sanitize()` path is **not** affected, because Nokogiri decodes or entity-escapes HTML entities during parsing before Loofah evaluates the URI protocol. This issue only affects callers of the public `allowed_uri?` string-level helper that pass it HTML-encoded strings. ## Impact Callers that validate a user-controlled URL with `Loofah::HTML5::Scrub.allowed_uri?` and then render the approved value into an `href` or other browser-interpreted URI attribute may be vulnerable to cross-site scripting (XSS). This includes applications that call `allowed_uri?` directly, as well as higher-level features built on top of it, such as Action Text 8.2's markdown link validation. ## Mitigation Upgrade to Loofah >= 2.25.2. ## Credit Responsibly reported by GitHub user @connorshea.

Advisory Timeline

  • First published July 21, 2026 (83 days ago).
  • Last revised September 10, 2026 — 51 days after initial publication.

Remediation

Upgrade to the fixed version using your package manager.

Bundler
Update loofah to 2.25.2 or later
gem install loofah -v 2.25.2

After upgrading, run your dependency scanner again to confirm the vulnerability is resolved.

Affected Packages (1)

Affects 1 ecosystem: rubygems (1).

PackageEcosystemAffectedFixed In
loofah
rubygems
2.25.0, 2.25.12.25.2

Vulnerability Classification

Common Weakness Enumeration (CWE) identifiers for this vulnerability type.

CVSS Score Breakdown

What the CVSS (Common Vulnerability Scoring System) 4.9 score means for each attack dimension.

Attack Vector
Network
Attack Complexity
High
Privileges Required
Low
User Interaction
None
Scope
—
Confidentiality
—
Integrity
—
Availability
—

CVSS:4.0/AV:N/AC:H/AT:N/PR:L/UI:N/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N

Frequently Asked Questions

What is CVE-2026-73491?
Loofah `allowed_uri?` does not detect `javascript:` URIs split by named whitespace character references This vulnerability has been assigned a severity rating of LOW (CVSS score: 4.9/10).
How do I check if my project is affected by CVE-2026-73491?
CVE-2026-73491 affects loofah. Use GeekWala's free vulnerability scanner to check your dependencies against CVE-2026-73491 and 200,000+ other known vulnerabilities.

Severity & Exploitability

CVSS Score
4.9

Exploitation requires specific conditions or has limited impact. Remediate within weeks.

Also Known As

GHSA-8whx-365g-h9vv

Related CVEs

Check if you're affected

Scan your dependencies to see if this vulnerability affects your projects.

Scan Your Dependencies