PHP2Shell: Read our blog on the critical RCE vulnerabilities affecting 70% of the Internet
Vulnerability DatabaseCVE-2026-110306

CVE-2026-110306: 
JavaScript vulnerability analysis and mitigation

Overview

CVE-2026-110306 is a URI scheme spoofing vulnerability in the fast-uri Node.js library that enables stored or reflected cross-site scripting (XSS) attacks. The flaw affects fast-uri versions before 2.4.8, 3.0.0 through 3.1.8, and 4.0.0 through 4.2.2. It was published on October 20, 2026, with the GitHub Security Advisory authored by maintainer mcollina. It carries a CVSS v3.1 base score of 6.1 (Medium) (GitHub Advisory, Red Hat CVE).

Technical details

The root cause is an incorrect validation order (CWE-180) combined with an encoding error (CWE-172): fast-uri applies the legacy JavaScript unescape() function to percent-decode the URI scheme component before validating it, violating RFC 3986 §3.1 which explicitly prohibits percent-encoding in schemes. This means an input like %6Aavascript:alert(1) is decoded to javascript:alert(1) and emitted as a live, executable scheme. Additionally, the equal() comparison function treats percent-encoded and plain schemes as equivalent, allowing attackers to bypass equality-based scheme allowlists. Concrete examples include: normalize('%6Aavascript:alert(1)') returning javascript:alert(1), and equal('%68ttp://a/', 'http://a/') returning true (GitHub Advisory).

Impact

An unauthenticated attacker who can supply URI input to an application using fast-uri can craft a percent-encoded scheme (e.g., %6Aavascript:, %64ata:, or vbscript: variants) that passes raw-input scheme screening but is normalized into an executable URL. When the application stores or renders the normalized result in a browser, this produces stored or reflected XSS, enabling session hijacking, credential theft, or malicious script execution in the victim's browser context. Availability is not impacted, but both confidentiality and integrity are affected at a low-to-moderate level with a changed scope (GitHub Advisory, Red Hat CVE).

Exploitability

As of the disclosure date, there is no public proof-of-concept exploit code and no evidence of in-the-wild exploitation (Red Hat CVE). The EPSS score is reported at 0.0, indicating very low current exploitation probability. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. No threat actor attribution has been reported.

Exploitation steps

  1. Identify a target application: Find a web application that uses a vulnerable version of fast-uri (< 2.4.8, 3.0.0–3.1.8, or 4.0.0–4.2.2) to parse, normalize, or resolve user-supplied URIs, and that screens dangerous schemes on the raw input string before storing or rendering the result.
  2. Craft a percent-encoded malicious URI: Construct a URI where the dangerous scheme is percent-encoded so it passes raw-input validation, e.g., %6Aavascript:alert(document.cookie) (where %6A decodes to j) or using the %uXXXX form: %u006Aavascript:alert(1).
  3. Submit the payload: Provide the crafted URI as input to the application (e.g., via a URL field, redirect parameter, or link submission form). The raw input passes the application's scheme blocklist check because it does not literally contain javascript:.
  4. Trigger normalization: The application calls fast-uri's normalize() or resolve() function, which internally calls unescape() on the scheme before validation, converting the encoded scheme to javascript:alert(document.cookie) and emitting it as a live scheme.
  5. Achieve XSS: The normalized URI is stored in the database or reflected in the HTTP response. When a victim's browser renders the link and clicks it, the javascript: URL executes, delivering the XSS payload and potentially stealing session tokens or performing actions on behalf of the victim (GitHub Advisory).

Indicators of compromise

  • Network: HTTP requests containing percent-encoded scheme components in URI parameters (e.g., %6Aavascript:, %64ata:, %u006A) submitted to application endpoints that accept URL input.
  • Logs: Application or web server access logs showing inputs with % characters in the scheme portion of submitted URIs (before the first :); repeated submissions with variations of encoded javascript, data, or vbscript strings.
  • Application Behavior: Stored links or redirects in the application database containing javascript:, data:, or vbscript: URIs that were not present in raw user input — indicating normalization has occurred on encoded input.
  • Browser/Client Side: Unexpected JavaScript execution triggered by clicking links within the application; browser console errors or alerts originating from javascript: scheme URLs on trusted domains.

Mitigation and workarounds

Upgrade fast-uri to one of the patched versions: 2.4.8, 3.1.9, or 4.2.3 (or any later release). If an immediate upgrade is not possible, apply one of two workarounds: (1) reject any URI input whose scheme component (the substring before the first :, /, ?, or #) contains a % character; or (2) validate parse(input).scheme against an allowlist after normalization and use the parsed result rather than the raw input string for all downstream operations (GitHub Advisory).

Community reactions

The advisory was published by fast-uri maintainer mcollina on GitHub, with UlisesGascon credited as a remediation reviewer (GitHub Advisory). Red Hat tracked the issue via Bugzilla (Bug #2556005) and published a CVE advisory page, indicating downstream awareness in enterprise Linux distributions (Red Hat CVE). No significant broader media coverage or notable social media commentary has been identified at this time.

Additional resources

Linux Distribution fix status

Fix availability across major Linux distributions and their releases.

RHEL / CentOS

Affected

OpenShift

openshift4/ose-monitoring-plugin-rhel9

Affected

RHEL 8

dotnet8.0.src

Affected

RHEL 9

dotnet8.0.src

Affected

RHEL 10

dotnet8.0.src

Affected

Source: This report was generated using AI

Related JavaScript vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-113668MEDIUM5.3
  • JavaScript logoJavaScript
  • apostrophe
NoYesOct 20, 2026
CVE-2026-113670MEDIUM5.3
  • JavaScript logoJavaScript
  • apostrophe
NoYesOct 20, 2026
CVE-2026-113669MEDIUM5.3
  • JavaScript logoJavaScript
  • @apostrophecms/passport-bridge
NoYesOct 20, 2026
CVE-2026-113667MEDIUM5.3
  • JavaScript logoJavaScript
  • @apostrophecms/login-recaptcha
NoYesOct 20, 2026
CVE-2026-113671MEDIUM4.3
  • JavaScript logoJavaScript
  • @apostrophecms/ai-helper
NoYesOct 20, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management