CVE-2026-53722: Nuxt <NuxtLink> XSS Vulnerability – Versions 3.21.7 & 4.4.7 Required
Nuxt, a popular Vue.js development framework, contains a cross-site scripting vulnerability in its <NuxtLink> component. The component fails to validate URL schemes in values bound to its `to` or `href` props, allowing attackers to inject malicious javascript: or vbscript: URLs. When a user clicks a link crafted this way, arbitrary JavaScript executes within the application's origin. The vulnerability affects versions before 3.21.7 and 4.4.7. Exploitation requires an attacker to control input that binds to the component—such as query parameters, CMS fields, or user profile URLs—and a user to click the malicious link.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 5.4 MEDIUM · CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N
- Weaknesses (CWE)
- CWE-79, CWE-83
- Affected products
- 1 configuration(s)
- Published / Modified
- 2026-06-12 / 2026-06-17
NVD description (verbatim)
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.
3 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
The <NuxtLink> component does not perform scheme validation on URL values before rendering them into the href attribute of underlying <a> elements. When attacker-controlled input is bound to the `to` or `:href` props, a javascript: or vbscript: scheme URL is reflected verbatim into the DOM. Additionally, the href and route.href values exposed to custom slot consumers can be re-bound by applications to their own anchors, extending the attack surface. While data:text/html,... payloads do not execute in the application origin, they can be leveraged for same-tab phishing attacks. This is a reflected DOM-based XSS vulnerability affecting the rendering layer, classified under CWE-79 (Improper Neutralization of Input During Web Page Generation) and CWE-83 (Improper Neutralization of Script-Related HTML Tags).
Business impact
Organizations running Nuxt-based applications that accept and reflect user-supplied URLs risk credential theft, session hijacking, and malware distribution through reflected XSS. Customer-facing applications—particularly those with user profiles, community forums, or dynamic content sourced from CMS platforms—face reputational damage if attackers inject phishing payloads or keyloggers. The vulnerability requires user interaction (a click), reducing the attack surface compared to stored XSS but remaining practical in scenarios where attackers can embed links in emails, chat, or social platforms. Affected versions deployed in production should be prioritized for upgrade to prevent this class of attack.
Affected systems
Nuxt framework versions prior to 3.21.7 (v3.x line) and prior to 4.4.7 (v4.x line) are vulnerable. Any Nuxt application that binds untrusted input—query parameters, API responses, user profile data, or CMS content—to <NuxtLink :to> or :href props is at risk. Applications using custom slots that re-bind the exposed href or route.href props to their own anchor elements inherit the same risk. Node.js applications and server-side rendering (SSR) contexts are in scope where client-side rendering ultimately exposes the vulnerability.
Exploitability
Exploitation is straightforward and requires no special privileges or authentication. An attacker crafts a malicious URL with a javascript: scheme and supplies it through any input vector that reaches a <NuxtLink> binding—a URL parameter, form submission, or API endpoint. The attack is reflected and requires a user to click the link, making social engineering necessary but not uncommon in practice. The CVSS score of 5.4 (MEDIUM) reflects network accessibility, low attack complexity, no privilege requirement, and required user interaction, balanced against limited impact (low confidentiality and integrity, no availability impact).
Remediation
Upgrade Nuxt to version 3.21.7 or later (v3.x) or version 4.4.7 or later (v4.x). Verify compatibility with your application before deploying, particularly if custom build configurations or pinned dependencies exist. As a temporary mitigation, sanitize or validate URL schemes at the application level before binding to <NuxtLink> components—allow only http://, https://, and relative paths, and reject javascript:, vbscript:, and data: schemes. Implement Content Security Policy (CSP) with a strict script-src directive to limit reflected script execution even if a payload reaches the DOM.
Patch guidance
Review your package.json or lock file to identify your current Nuxt version. If running 3.x, update to 3.21.7 or later; if running 4.x, update to 4.4.7 or later. Test the upgrade in a staging environment, paying particular attention to any custom <NuxtLink> overrides or slot implementations. Verify that URL binding behavior matches your expectations after patching. Monitor the official Nuxt security advisory for any follow-up guidance or related issues.
Detection guidance
Monitor for the presence of javascript: or vbscript: schemes in href attributes rendered within your Nuxt application. Review server logs and traffic for suspicious URL parameters passed to routes that feed <NuxtLink> components. In a static analysis context, audit your codebase for <NuxtLink> components binding untrusted input without prior sanitization. Implement CSP violation reporting to catch injected payloads that bypass client-side filtering. After patching, verify that malicious URL schemes no longer execute by testing with harmless javascript: payloads in your staging environment.
Why prioritize this
Although rated MEDIUM severity, this vulnerability warrants prioritization in web-facing Nuxt applications because it is practical to exploit, requires no authentication, and directly impacts user security. Applications accepting user-supplied URLs (profiles, community content, CMS integrations) should patch immediately. Low-risk environments (internal tools, closed user groups) can follow a standard patching cadence. The lack of current KEV designation does not diminish the risk—this reflects early disclosure timing, not severity.
Risk score, explained
The CVSS 3.1 score of 5.4 reflects a network-accessible vulnerability (AV:N) with low attack complexity (AC:L) requiring no privileges (PR:N) but user interaction (UI:R). The impact is limited: low confidentiality (credentials, session tokens can be stolen) and low integrity (malicious script execution), with no availability impact. The unscoped impact (S:U) means the attack does not cross security boundaries. In context, the practical exploitability and reputational risk to customer-facing applications may warrant treating this as higher priority than the numerical score alone suggests.
Frequently asked questions
Does this vulnerability require authentication to exploit?
No. The vulnerability is pre-authentication and requires only that untrusted input reaches a <NuxtLink> binding. This makes it applicable to public-facing pages, search results, and shared links.
What if our Nuxt application only binds internal, trusted URLs to <NuxtLink>?
Your risk is minimal. The vulnerability requires attacker-controlled input at the binding point. Applications that exclusively bind hard-coded or server-validated URLs are not affected.
Does this affect server-side rendering (SSR)?
Yes. The vulnerability manifests in the client-side DOM after SSR hydration. An unvalidated URL rendered server-side will be reflected client-side when the component mounts, exploitable in the user's browser.
Can Content Security Policy prevent exploitation?
CSP with a restrictive script-src directive can mitigate javascript: payloads, though data: and vbscript: phishing variants may still succeed depending on your policy. CSP is a defense-in-depth layer, not a substitute for patching.
This analysis is based on the official CVE record and Nuxt security advisory as of the publication date. Patch version numbers and affected version ranges must be verified against the official Nuxt releases before deployment. Organizations should conduct their own risk assessment and testing in non-production environments prior to patching. This document does not constitute legal or compliance advice; consult your organization's security and compliance teams for guidance specific to your environment. Source: NVD (public-domain), retrieved 2026-07-20. Analysis generated by SEC.co (claude-haiku-4-5).
Related vulnerabilities
- CVE-2026-45669MEDIUMNuxt navigateTo() XSS Vulnerability (3.21.6, 4.4.6 Patches)
- CVE-2026-46342MEDIUMNuxt Island Hash Validation Bypass Vulnerability
- CVE-2016-20070MEDIUMPrivilege Escalation & Stored XSS in WordPress Booking Calendar Contact Form 1.0.23
- CVE-2018-25384MEDIUMStored XSS in Wikidforum 2.20 Allows Authenticated Attackers to Inject Malicious Scripts
- CVE-2019-25731MEDIUMStored XSS in Zuz Music 2.1 Contact Form
- CVE-2019-25737MEDIUMStored XSS in Live Chat Unlimited 2.8.3 – Admin Session Compromise
- CVE-2019-25739MEDIUMGigToDo 1.3 Stored XSS Vulnerability in Proposal Descriptions
- CVE-2019-25742MEDIUMStored XSS in Zoner Real Estate WordPress Theme 4.1.1 – Admin Account Compromise Risk