Loading...
Skip to main content

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

LOW

Loofah `allowed_uri?` does not detect `javascript:` URIs split by numeric character references without semicolons

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

Summary

## Summary `Loofah::HTML5::Scrub.allowed_uri?` does not correctly reject `javascript:` or `vbscript:` URIs when the scheme is split by a numeric character reference that has no trailing semicolon. A browser decodes such references and resolves the URL to an executable `javascript:` scheme, while `allowed_uri?` reports it safe. 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 numeric character references with a trailing `;` (`	`, `
`, `
`) but did not cover the forms without semicolons. ## Details `allowed_uri?` decodes HTML entities with `CGI.unescapeHTML`, which decodes numeric character references only when they carry a trailing `;`. A reference without a semicolon such as `&#58` (colon) or `&#9` (tab) is left literal, so the scheme-detection check finds no scheme, and the method falls through to its scheme-less path and returns `true`. A browser, however, decodes numeric character references even without a trailing semicolon. An encoded colon such as `&#58` becomes the `:` scheme separator, so `javascript&#58alert(1)` resolves to `javascript:alert(1)`. Encoded whitespace such as `&#9` (tab) is decoded and then stripped from the URL, rejoining the surrounding text, so `java&#9script:alert(1)` also resolves to `javascript:alert(1)`. In both cases the URL executes while `allowed_uri?` approved it as safe. 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 @MoonFuji.

Advisory Timeline

  • First published July 21, 2026 (82 days ago).
  • Last revised September 10, 2026 — 50 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-73492?
Loofah `allowed_uri?` does not detect `javascript:` URIs split by numeric character references without semicolons 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-73492?
CVE-2026-73492 affects loofah. Use GeekWala's free vulnerability scanner to check your dependencies against CVE-2026-73492 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-5qhf-9phg-95m2

Related CVEs

Check if you're affected

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

Scan Your Dependencies