GHSA-jjm6-p2m9-9w4x: XSS

Published Oct 22, 2026
·
Updated

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 pages disabled (no pages/ directory, or pages: 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 nuxt@4.6.0. 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 nuxt@4.6.0 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 /.

Affected Software

1 affected componentFixes available
npm/nuxt<4.6.0
4.6.0

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade npm/nuxt to a version that resolves this vulnerability.

    Fixed in 4.6.0
  2. Upgrade

    Upgrade nuxt to a version that resolves this vulnerability.

    Fixed in 4.6.0
  3. Compensating control

    Before binding values to NuxtLink :to, validate them by rejecting anything that is not a path beginning with a single /.

Event History

Oct 22, 2026
Advisory Published
via GitHub·04:51 PM
Data Sourced
via GitHub·04:51 PM
DescriptionWeaknessAffected Software

Frequently Asked Questions

1

Which Nuxt applications are exposed?

Only applications running with pages disabled are affected, either because there is no pages/ directory or because pages is set to false. Applications using vue-router are not affected.

2

What must an attacker control to exploit this issue?

The attacker needs to supply a value used as the to prop of a rendered NuxtLink that the application does not control. A value that prefixes javascript: with an ASCII C0 control character, such as %01, can be passed through into the rendered href.

3

Does exploitation require user interaction?

Yes. The malicious href executes script in the application's origin when the link is clicked.

4

How can I determine whether my application is affected?

Check whether pages is disabled and whether untrusted input can reach a rendered NuxtLink to value. The issue affects both default NuxtLink anchors and NuxtLink custom, and the href is included in server-rendered HTML.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203