MEDIUM 5.3

CVE-2026-47200: Nuxt Component Islands Route Middleware Bypass

Nuxt, a popular Vue.js web development framework, has a vulnerability where certain server-side page components are exposed over HTTP without proper security checks when a feature called Component Islands is enabled. This exposure allows unauthorized access to sensitive functionality that should only be available to authenticated users or through protected routes. The vulnerability affects Nuxt versions 3.11.0 through 3.21.5 and 4.0.0-alpha.1 through 4.4.5, as well as the related @nuxt/nitro-server package in the same version ranges.

Source data · NVD / CISA · public domain

CVSS
3.1 · 5.3 MEDIUM · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
Weaknesses (CWE)
CWE-284, CWE-288
Affected products
2 configuration(s)
Published / Modified
2026-06-12 / 2026-06-17

NVD description (verbatim)

Nuxt is an open-source web development framework for Vue.js. In Nuxt versions 3.11.0 to before 3.21.6 and 4.0.0-alpha.1 to before 4.4.6 and @nuxt/nitro-server versions 3.20.0 to before 3.21.6 and 4.0.0-alpha.1 to before 4.4.6, when experimental.componentIslands is enabled (default in Nuxt 4), any .server.vue file under pages/ is automatically registered as a server island under the key page_<routeName> and exposed via the /__nuxt_island/:name endpoint. Until this fix, requests through that endpoint rendered the page component directly via the SSR renderer without instantiating Vue Router, which meant route middleware declared on the page (including definePageMeta({ middleware })) did not run. This issue has been patched in versions 3.21.6 and 4.4.6.

3 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

The vulnerability exists in how Nuxt's experimental Component Islands feature (enabled by default in Nuxt 4) automatically registers .server.vue files located in the pages/ directory as server islands. These components are exposed via the /__nuxt_island/:name endpoint. The flaw is that requests to this endpoint bypass Vue Router instantiation entirely, which means route-level middleware—declared via definePageMeta({ middleware })—never executes. This circumvents authentication, authorization, and other security checks that developers expected to enforce on those routes. The SSR renderer directly renders the page component without the security context that middleware provides.

Business impact

Organizations using Nuxt with Component Islands enabled face information disclosure risk. Attackers can directly access page components that contain sensitive data or logic, bypassing authentication middleware and authorization checks. This could expose customer data, business logic, or other protected information without leaving normal request patterns in logs. The risk is particularly acute for applications that rely on middleware for compliance controls (PCI-DSS, HIPAA, GDPR) or that serve regulated data. Development teams must patch quickly to avoid potential data breach liability.

Affected systems

Nuxt framework versions 3.11.0 through 3.21.5 and 4.0.0-alpha.1 through 4.4.5 are vulnerable. The @nuxt/nitro-server package in the same version ranges is also affected, as it provides the server-side rendering backend. Nuxt 4 users are at elevated risk because Component Islands is enabled by default. Nuxt 3 users who have explicitly enabled experimental.componentIslands are also at risk. Any application serving .server.vue files in the pages/ directory with this feature enabled and deployed to production requires immediate attention.

Exploitability

Exploitation requires no authentication and no special user interaction. An attacker simply needs to know or guess the route name of a .server.vue page component; the endpoint /__nuxt_island/:name is unauthenticated and publicly accessible. Route names in many applications can be inferred from directory structure or discovered through directory enumeration. The attack surface is network-accessible by default. While this is not currently listed in the CISA KEV catalog, the simplicity of exploitation and lack of barriers to access make it a credible threat for public-facing applications.

Remediation

Upgrade Nuxt to version 3.21.6 or later (for 3.x users) or version 4.4.6 or later (for 4.x users). For @nuxt/nitro-server, apply the same version boundaries. If immediate patching is not feasible, disable the experimental.componentIslands feature by setting it to false in nuxt.config.ts, then restart your application. Audit logs and access patterns for any signs of unauthorized requests to /__nuxt_island/ endpoints prior to patching.

Patch guidance

Verify the exact version of Nuxt and @nuxt/nitro-server in your package.json and lock files. Upgrade Nuxt to 3.21.6+ or 4.4.6+ depending on your major version line. Update @nuxt/nitro-server to match. Run npm audit after upgrading to confirm no regressions. Test your application in a staging environment, especially any pages that use definePageMeta({ middleware }), to confirm middleware is now invoked correctly through the island endpoint. If you have pinned versions, unpin them or explicitly set the new minimum versions.

Detection guidance

Monitor access logs for requests to /__nuxt_island/ endpoints, particularly those matching known page route names. Baseline normal island requests and alert on unusual patterns or authentication-free access to sensitive routes. Review web application firewall (WAF) logs for anomalous access to this endpoint. Scan your codebase for .server.vue files in pages/ directories and audit their middleware declarations. Check production deployments to confirm which versions of Nuxt and @nuxt/nitro-server are currently running.

Why prioritize this

Although the CVSS score is moderate (5.3), the simplicity of exploitation, default enablement in Nuxt 4, and potential for information disclosure warrant rapid patching. Organizations running Nuxt 4 in production should prioritize this within days rather than weeks. Nuxt 3 users with Component Islands explicitly enabled should also prioritize. The risk is heightened for applications handling regulated or sensitive data.

Risk score, explained

The CVSS 3.1 score of 5.3 (MEDIUM) reflects low attack complexity, network accessibility, and low confidentiality impact. No authentication is required and user interaction is not necessary. However, the scope is unchanged and there is no integrity or availability impact. The score does not fully capture the reputational and compliance risk of exposed sensitive data, so organizations should consider business context when deciding urgency. The lack of a public exploit in KEV does not diminish the straightforward nature of the flaw.

Frequently asked questions

Does disabling Component Islands eliminate the risk?

Yes. If you set experimental.componentIslands: false in nuxt.config.ts and restart, the /__nuxt_island/ endpoint will not be created and the vulnerability cannot be exploited. However, disabling the feature may break applications that depend on it; patching to the fixed versions is the preferred long-term solution.

Do I need to patch if I'm only using Nuxt 3 and have never enabled Component Islands?

No, the vulnerability only manifests when experimental.componentIslands is enabled. If it remains disabled (the default for Nuxt 3), you are not vulnerable. However, if you plan to enable it or migrate to Nuxt 4, patching beforehand is strongly recommended.

Can I see in my logs which routes have been accessed via the island endpoint?

Yes. Search your web server or application logs for requests to /__nuxt_island/. The endpoint name structure is /__nuxt_island/<page_routeName>, so you can correlate those names to your pages/ directory to understand which protected pages may have been exposed. This is a critical forensic step if you suspect prior exploitation.

Will patching break my existing Component Islands implementation?

No. The fix ensures that route middleware now runs correctly on island requests, which is the intended behavior. If your middleware is well-designed, it should continue to function as expected. Test in staging to confirm, but middleware that relies on correct execution will actually work better after the patch.

This analysis is provided for informational purposes only and does not constitute legal or compliance advice. Organizations should verify all patch version numbers and applicability against official Nuxt and @nuxt/nitro-server advisories before deploying changes. CVSS scores and severity ratings are derived from the published NVD record and reflect technical factors only; business risk assessment must account for your specific environment, data sensitivity, and regulatory obligations. No exploit code or active proof-of-concept is provided. Always test patches in a non-production environment first. Source: NVD (public-domain), retrieved 2026-07-20. Analysis generated by SEC.co (claude-haiku-4-5).