Skip to main content

Nuxt CVE-2026-114130

| EUVDEUVD-2026-107413 LOW
Cross-site Scripting (XSS) (CWE-79)
2026-10-21 GitHub_M GHSA-jjm6-p2m9-9w4x
2.3
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Supply control-char-prefixed javascript: URL to NuxtLink 'to'
  2. Delivery
    No-pages router renders unsafe href in server HTML
  3. Exploit
    Victim clicks the malicious link
  4. Execution
    Browser strips control char and runs javascript: scheme
  5. Impact
    Script 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.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
Patch available 0.3% exploitation probability (EPSS)

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

Alert me

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

nuxt < 4.6.0

Affected Packages

npm nuxt fix: 4.6.0

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

Vendor (GitHub_M) PRIMARY 2.3 LOW
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
vuln.today AI 4.7 MEDIUM

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.

3.1 AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:P/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
Present
Privileges Required
None
User Interaction
Passive
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

2
Patch available
Oct 21, 2026 - 19:18 EUVD
CVE Published
Oct 21, 2026 - 17:37 cve.org
LOW 2.3

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

Threat Intelligence Overview

EPSS Score
0.3%
Top 75% exploitable
Prevalence
High
popular Vue.js SSR framework, broad web application deployment
Threat Intel
1
1 source
Data Quality
5 sources
Confidence: Medium

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 LOW
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
High

Priority Score

12
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +12
PoC: 0
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