Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSupply control-char-prefixed javascript: URL to NuxtLink 'to'
-
DeliveryNo-pages router renders unsafe href in server HTML
-
ExploitVictim clicks the malicious link
-
ExecutionBrowser strips control char and runs javascript: scheme
-
ImpactScript executes in application origin
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires a specific non-default deployment: the Nuxt application must run with pages disabled (no-pages router mode), and the application must bind attacker-controlled input to a NuxtLink 'to' prop (or default anchor/custom output). The malicious value must be an ASCII C0 control character prefixing a script-capable scheme (e.g., javascript:), which the no-pages router classifies as an internal route before the protocol check. Exploitation is LIMITED by: mandatory user interaction (the victim must click the rendered link, matching UI:P), the need for the application to reflect untrusted data into the link target, and the pages-disabled configuration requirement. Affects Nuxt versions prior to 4.6.0; fixed in 4.6.0. |
| Impact | This is a genuinely low-priority issue despite the network attack vector. The vendor CVSS 4.0 vector (CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:L/VI:L/VA:N, score 2.3) shows exploitation hinges on two de-prioritizing factors: AT:P (a specific attack requirement - the app must run with pages disabled AND reflect attacker input into NuxtLink's 'to') and UI:P (the victim must actively click the crafted link). No EPSS score was provided, there is no CISA KEV listing, and no public exploit was identified in the input, so all exploitation-likelihood signals are either absent or point to low real-world risk. Impact is limited (VC:L/VI:L, VA:N) - reflected script execution in the app origin, not full compromise. Note a modeling discrepancy: a CVSS 3.1 reflected-XSS vector typically scores higher (~6.1) because 3.1 collapses the AT:P/UI:P nuance into coarser AC/UI metrics and credits a scope change; the 4.0 2.3 rating better captures the restrictive preconditions. Net assessment: a real but narrowly-conditioned client-side XSS that is a patch-on-schedule item, not an emergency - more likely to matter for targeted attacks against specific misconfigured deployments than for widespread opportunistic exploitation. |
| Exploit ScenarioDerived | A Nuxt application configured with pages disabled renders a NuxtLink whose 'to' value is derived from attacker-controlled input (e.g., a query parameter or stored field). The attacker supplies a value consisting of an ASCII C0 control character followed by a javascript: URL; the no-pages router misclassifies it as an internal route and emits it as an anchor href in the server-rendered HTML. When a victim clicks the link, the browser strips the leading control character and executes the remaining javascript: URL in the application's origin. No public exploit was identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 21, 2026
Client-side script execution can be triggered in Nuxt applications running with pages disabled (all versions prior to 4.6.0) when attacker-controlled input bound to NuxtLink's to prop carries a leading ASCII C0 control character ahead of a javascript: URL. The no-pages router classifies the value as an internal route before the script-protocol check runs, so the unsafe href is emitted into server-rendered HTML; the victim must click the link for script to run in the application's origin. The issue is an incomplete fix for CVE-2026-53722, is unauthenticated (PR:N) but gated by significant preconditions - pages-disabled mode, reflected untrusted input, and a user click - and there is no public exploit identified at time of analysis; Nuxt 4.6.0 resolves it.
RemediationAI
Vendor-released patch: upgrade Nuxt to 4.6.0 (https://github.com/nuxt/nuxt/releases/tag/v4.6.0), which replaces the bypassable sanitizeExternalHref helper with sanitizeAnchorHref/isAbsoluteHref/isRootedPath and sanitizes both route.href and router-link slot href values; see advisory GHSA-jjm6-p2m9-9w4x and PR https://github.com/nuxt/nuxt/pull/36459. Where upgrading is not immediately possible, the primary compensating control is to never pass raw untrusted strings to NuxtLink's to: resolve user input against an allowlist of known internal routes or pass route names plus params objects, which removes the string-to-href path entirely (trade-off: requires refactoring any dynamic link generation). If dynamic URL strings are unavoidable, normalize them before binding by stripping ASCII C0 control characters (0x00-0x1F) and whitespace and rejecting any value whose scheme is not http/https or a relative path - note this duplicates the library logic and will drift as ufo changes. Adding a Content-Security-Policy with a script-src that excludes 'unsafe-inline' and javascript: URIs limits the impact of any residual bypass but may break inline scripts and Nuxt payload hydration unless nonces/hashes are configured. Re-enabling pages mode removes the vulnerable no-pages router code path, at the cost of changing application architecture. Because exploitation requires a victim click, avoiding reflection of request data into link targets on high-traffic pages reduces exposure while patching is scheduled.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in npm
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
NuxtLink resolves its to prop through ufo helpers: hasProtocol(path, { acceptRelative: true }) decides whether a value is an external URL, and isScriptProtocol implements a denylist covering javascript:, data:, vbscript: and blob:. The earlier CVE-2026-53722 fix added a local sanitizeExternalHref() in packages/nuxt/src/app/components/nuxt-link.ts that stripped ASCII whitespace and C0 control characters (/[\u0000-\u001F\s]+/g) and recursively peeled view-source: before testing the scheme. The bypass arises from ordering in the no-pages router path: a value such as \x00javascript:alert(1) is classified as an internal/relative route before the protocol check is applied, so it reaches the rendered anchor href unsanitized; the browser discards the leading control character during URL parsing and then interprets the remaining string as a javascript: URL. This is CWE-79 (improper neutralization of input during web page generation) realized as a DOM/reflected XSS in the anchor output - the default anchor, the NuxtLink custom/slot output, and the server-rendered HTML are all affected. The 4.6.0 fix (PR 36459) removes the ad-hoc helper and introduces sanitizeAnchorHref, isAbsoluteHref and isRootedPath in packages/nuxt/src/app/utils, applies sanitizeAnchorHref to route.href and to routerLinkSlotProps.href, and resolves rooted paths via the router history's createHref instead of naive joinURL concatenation.
Know when Nuxt gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N
AC:H reflects the required pages-disabled config plus attacker-controlled 'to' binding; UI:R for the mandatory victim click; S:C and C:L/I:L for script execution in the app origin.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Nuxt is an open-source web development framework for Vue.js. Prior to 4.6.0, an incomplete fix for CVE-2026-53722 allows an application with pages disabled to render a script-capable URL through NuxtLink when attacker-controlled input bound to to is prefixed with an ASCII C0 control character. The no-pages router classifies the value as an internal route before the earlier protocol check and passes it to the rendered anchor href; browsers remove the leading control character and interpret the remaining javascript: URL. The default anchor and NuxtLink custom output are affected, the unsafe href is present in server-rendered HTML, and a victim must click the link for script to execute in the application's origin. This issue is fixed in version 4.6.0.
Blast Radius
ecosystem impact- 1 npm packages depend on nuxt (1 direct, 0 indirect)
Ecosystem-wide dependent count for version 4.6.0.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
Code Injection in GitHub repository nuxt/nuxt prior to 3.5.3. Rated critical severity (CVSS 9.8), this vulnerability is
Nuxt is a free and open-source framework to create full-stack web applications and websites with Vue.js. Rated high seve
Nuxt is a free and open-source framework to create full-stack web applications and websites with Vue.js. Rated high seve
Nuxt is a free and open-source framework to create full-stack web applications and websites with Vue.js. Rated high seve
Unauthenticated server-side request forgery in Nuxt OG Image (the npm package nuxt-og-image) 6.0.2 through 6.6.x allows
A vulnerability in Nuxt DevTools has been fixed in version **2.6.4***. Rated medium severity (CVSS 6.9), this vulnerabil
Nuxt is a free and open-source framework to create full-stack web applications and websites with Vue.js. Rated medium se
Cross-site Scripting (XSS) - Generic in GitHub repository nuxt/framework prior to 3.2.1. Rated medium severity (CVSS 6.1
Cross-site Scripting (XSS) - Reflected in GitHub repository nuxt/framework prior to v3.0.0-rc.13. Rated medium severity
Use of Hard-coded Credentials in GitHub repository nuxtlabs/github-module prior to 1.6.2. Rated critical severity (CVSS
Authentication/authorization bypass in Clerk's official JavaScript SDKs (@clerk/nextjs, @clerk/nuxt, @clerk/astro, and t
Route-rule middleware bypass in Nuxt 3.11.0-3.21.6 and 4.0.0-4.4.6 allows remote attackers to evade routeRules-defined p
EUVD-2026-107413
GHSA-jjm6-p2m9-9w4x
NVD
CVE.org
EPSS
Exploit-DB