CVE-2026-114130
Nuxt: Incomplete fix for GHSA-934w-87qh-qr26: a `javascript:` URL prefixed with an ASCII control character executes from `<NuxtLink>` when `pages` is disabled
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.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- Passive
What an attacker can affect
- Confidentiality
- Low
- Integrity
- Low
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
2.3
Nuxt: Incomplete fix for GHSA-934w-87qh-qr26: a `javascript:` URL prefixed with an ASCII control character executes from `<NuxtLink>` when `pages` is disabled
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.
- Record
CVE-2026-114130- CVSS 4.0
- 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 - Weakness
- CWE-79
- Updated
- 2026-11-02
EUVDEUVD-2026-107413
2.3
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.
- Record
EUVD-2026-107413- CVSS 4.0
- 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 - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-jjm6-p2m9-9w4x
2.3
Nuxt: Incomplete fix for GHSA-934w-87qh-qr26: a `javascript:` URL prefixed with an ASCII control character executes from `<NuxtLink>` when `pages` is disabled
Impact
An application that renders <NuxtLink :to="..."> with a value it does not control can be made to render an anchor whose href executes script in the application's origin when clicked.
This is an incomplete fix for GHSA-934w-87qh-qr26 (CVE-2026-53722). It only affects applications running without a pages/ directory, where pages resolves to false and Nuxt registers its own router in place of vue-router. Applications using vue-router are not affected.
Prefixing javascript: with an ASCII C0 control character, for example %01, meant the value was not recognised as having a protocol. It was classified as an internal route and so never reached the protocol check added in GHSA-934w-87qh-qr26, and the router used for pages: false passed it through to the rendered href unchanged. Browsers strip the leading control character and run the result as a script URL.
Both <NuxtLink custom> and the default anchor are affected, and the href is present in the server-rendered HTML.
Mitigating factors
- The application must have
pagesdisabled (nopages/directory, orpages: false). - The application must bind untrusted input to
:to. - A victim must click the rendered link.
Affected versions
nuxt <4.6.0, including all Nuxt 3 releases. Versions before 4.4.7 and 3.21.7 are also affected by GHSA-934w-87qh-qr26.
Patches
Fixed in [email protected]. Nuxt 3 reached end of life on 31 July 2026 and will not receive a fix.
Anchor href values are now checked for script-capable protocols wherever they are rendered, including the router used when pages is disabled. Protocol detection also moved to the platform URL parser, so a URL is classified the same way the browser will read it.
Workarounds
Upgrade to [email protected] or later. If you cannot upgrade, including on Nuxt 3, validate values before binding them to :to, for example by rejecting anything that is not a path beginning with a single /.
- Record
GHSA-jjm6-p2m9-9w4x- CVSS 4.0
- 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 - Weakness
- CWE-79
- Updated
- 2026-11-02
NVD
2.3
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.
- Record
CVE-2026-114130- CVSS 4.0
- 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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Weakness
- CWE-79
- Updated
- 2026-11-02
OSV
2.3
Nuxt: Incomplete fix for GHSA-934w-87qh-qr26: a `javascript:` URL prefixed with an ASCII control character executes from `<NuxtLink>` when `pages` is disabled
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.
- Record
CVE-2026-114130- CVSS 4.0
- 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 - Weakness
- CWE-79
- Updated
- 2026-11-02
OSVGHSA-jjm6-p2m9-9w4x
2.3
Nuxt: Incomplete fix for GHSA-934w-87qh-qr26: a `javascript:` URL prefixed with an ASCII control character executes from `<NuxtLink>` when `pages` is disabled
Impact
An application that renders <NuxtLink :to="..."> with a value it does not control can be made to render an anchor whose href executes script in the application's origin when clicked.
This is an incomplete fix for GHSA-934w-87qh-qr26 (CVE-2026-53722). It only affects applications running without a pages/ directory, where pages resolves to false and Nuxt registers its own router in place of vue-router. Applications using vue-router are not affected.
Prefixing javascript: with an ASCII C0 control character, for example %01, meant the value was not recognised as having a protocol. It was classified as an internal route and so never reached the protocol check added in GHSA-934w-87qh-qr26, and the router used for pages: false passed it through to the rendered href unchanged. Browsers strip the leading control character and run the result as a script URL.
Both <NuxtLink custom> and the default anchor are affected, and the href is present in the server-rendered HTML.
Mitigating factors
- The application must have
pagesdisabled (nopages/directory, orpages: false). - The application must bind untrusted input to
:to. - A victim must click the rendered link.
Affected versions
nuxt <4.6.0, including all Nuxt 3 releases. Versions before 4.4.7 and 3.21.7 are also affected by GHSA-934w-87qh-qr26.
Patches
Fixed in [email protected]. Nuxt 3 reached end of life on 31 July 2026 and will not receive a fix.
Anchor href values are now checked for script-capable protocols wherever they are rendered, including the router used when pages is disabled. Protocol detection also moved to the platform URL parser, so a URL is classified the same way the browser will read it.
Workarounds
Upgrade to [email protected] or later. If you cannot upgrade, including on Nuxt 3, validate values before binding them to :to, for example by rejecting anything that is not a path beginning with a single /.
- Record
GHSA-jjm6-p2m9-9w4x- CVSS 4.0
- 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 - Weakness
- CWE-79
- Updated
- 2026-11-02
Show 5 moreShow less
OSVCLSA-2026-1793809504 No score
TuxCare security update for nuxt (1 CVE)
TuxCare rebuilt nuxt to address 1 CVE. Fixed in 1.4.5-tuxcare.7.
- Record
CLSA-2026-1793809504- Updated
- 2026-11-04
OSVCLSA-2026-1793810012 No score
TuxCare security update for nuxt (2 CVEs)
TuxCare rebuilt nuxt to address 2 CVEs. Fixed in 3.12.3-tuxcare.14.
- Record
CLSA-2026-1793810012- Updated
- 2026-11-04
OSVCLSA-2026-1793810180 No score
TuxCare security update for nuxt (2 CVEs)
TuxCare rebuilt nuxt to address 2 CVEs. Fixed in 3.12.4-tuxcare.20.
- Record
CLSA-2026-1793810180- Updated
- 2026-11-04
OSVCLSA-2026-1793811511 No score
TuxCare security update for nuxt (3 CVEs)
TuxCare rebuilt nuxt to address 3 CVEs. Fixed in 4.0.3-tuxcare.12.
- Record
CLSA-2026-1793811511- Updated
- 2026-11-04
OSVCLSA-2026-1793812844 No score
TuxCare security update for nuxt (1 CVE)
TuxCare rebuilt nuxt to address 1 CVE. Fixed in 3.2.0-tuxcare.12.
- Record
CLSA-2026-1793812844- Updated
- 2026-11-04
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
nuxtnpm |
before 4.6.0 | 4.6.0 |
nuxtTuxCare:npm |
1.4.5-tuxcare.0 up to 1.4.5-tuxcare.7, plus listed versions 1.4.51.4.5-tuxcare.11.4.5-tuxcare.21.4.5-tuxcare.31.4.5-tuxcare.41.4.5-tuxcare.51.4.5-tuxcare.6 |
1.4.5-tuxcare.7 |
nuxtTuxCare:npm From an advisory covering 2 CVEs |
3.12.3-tuxcare.0 up to 3.12.3-tuxcare.14, plus listed versions 3.12.33.12.3-tuxcare.13.12.3-tuxcare.103.12.3-tuxcare.113.12.3-tuxcare.12 Show 9 moreShow less3.12.3-tuxcare.133.12.3-tuxcare.23.12.3-tuxcare.33.12.3-tuxcare.43.12.3-tuxcare.53.12.3-tuxcare.63.12.3-tuxcare.73.12.3-tuxcare.83.12.3-tuxcare.9 |
3.12.3-tuxcare.14 |
nuxtTuxCare:npm From an advisory covering 2 CVEs |
3.12.4-tuxcare.0 up to 3.12.4-tuxcare.20, plus listed versions 3.12.43.12.4-tuxcare.103.12.4-tuxcare.113.12.4-tuxcare.123.12.4-tuxcare.13 Show 14 moreShow less3.12.4-tuxcare.143.12.4-tuxcare.153.12.4-tuxcare.163.12.4-tuxcare.173.12.4-tuxcare.183.12.4-tuxcare.193.12.4-tuxcare.23.12.4-tuxcare.33.12.4-tuxcare.43.12.4-tuxcare.53.12.4-tuxcare.63.12.4-tuxcare.73.12.4-tuxcare.83.12.4-tuxcare.9 |
3.12.4-tuxcare.20 |
nuxtTuxCare:npm From an advisory covering 3 CVEs |
4.0.3-tuxcare.0 up to 4.0.3-tuxcare.12, plus listed versions 4.0.34.0.3-tuxcare.14.0.3-tuxcare.104.0.3-tuxcare.114.0.3-tuxcare.2 Show 7 moreShow less4.0.3-tuxcare.34.0.3-tuxcare.44.0.3-tuxcare.54.0.3-tuxcare.64.0.3-tuxcare.74.0.3-tuxcare.84.0.3-tuxcare.9 |
4.0.3-tuxcare.12 |
nuxtTuxCare:npm |
3.2.0-tuxcare.0 up to 3.2.0-tuxcare.12, plus listed versions 3.2.03.2.0-tuxcare.13.2.0-tuxcare.103.2.0-tuxcare.113.2.0-tuxcare.2 Show 7 moreShow less3.2.0-tuxcare.33.2.0-tuxcare.43.2.0-tuxcare.53.2.0-tuxcare.63.2.0-tuxcare.73.2.0-tuxcare.83.2.0-tuxcare.9 |
3.2.0-tuxcare.12 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected | ||
| affected, aliases, facts | OSV | |
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-114130 is a low vulnerability (CVSS 2.3) in @clerk Nuxt, published October 21, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.41%, the 35th percentile. Fixed in nuxt 4.6.0.
References
github.com/nuxt/nuxt/security/advisories/GHSA-jjm6-p2m9-9w4x
github.com/nuxt/nuxt/pull/36459
github.com/nuxt/nuxt/commit/355ed9565127ff9b1453deb7160059ed55b3cb85
github.com/nuxt/nuxt/commit/df46569d5d3c7a7799de54c328634168fbae70bb
github.com/nuxt/nuxt/releases/tag/v4.6.0
nvd.nist.gov/vuln/detail/CVE-2026-114130
github.com/advisories/GHSA-jjm6-p2m9-9w4x
github.com/CVEProject/cvelistV5/tree/main/cves/2026/114xxx/CVE-2026-114130.json
github.com/nuxt/nuxt