Executive brief
Nuxt is a popular web development framework used to build high-performance websites. A security flaw in its NoScript component allows attackers to inject malicious scripts into a webpage if the site displays untrusted user data (like URL parameters) inside that component. This could lead to unauthorized actions being performed in a user's browser, such as stealing session information or redirecting users to malicious sites.
Technical details
A cross-site scripting (XSS) vulnerability exists in the Nuxt <NoScript> component (re-exported from @unhead/vue). The component incorrectly writes its default-slot content to the 'innerHTML' property of the <noscript> head tag instead of using 'textContent', bypassing Vue's standard HTML escaping. When a browser with JavaScript enabled parses the server-rendered HTML, certain tags (like <script>) inside the <noscript> block in the <head> section will implicitly close the <noscript> tag and execute in the document context. Attackers can exploit this by providing malicious payloads through untrusted data sources, such as 'route.query' parameters, if they are interpolated into the <NoScript> slot. The issue is fixed in Nuxt versions 4.4.7 and 3.21.7 by switching to 'textContent' and using 'escapeHtml' from @vue/shared.
Affected products
- Nuxt Nuxt >= 4.0.0, < 4.4.7; < 3.21.7
Timeline
- 2026-06-02: advisory: GitHub Security Advisory GHSA-m3q2-p4fw-w38m published
- 2026-06-20: disclosed: CVE-2026-56317 published to NVD
References
- https://github.com/nuxt/nuxt/commit/4b054e9d95f8daf366cb144b52782047c511a66e
- https://github.com/nuxt/nuxt/commit/7fea9fd687f1dacbfb63db5fae5839896b017a0e
- https://github.com/nuxt/nuxt/security/advisories/GHSA-m3q2-p4fw-w38m
- https://www.vulncheck.com/advisories/nuxt-cross-site-scripting-via-noscript-component-slot-content