All the vulnerabilities related to the version 3.17.1 of the package
Nuxt has Client-Side Path Traversal in Nuxt Island Payload Revival
A client-side path traversal vulnerability in Nuxt's Island payload revival mechanism allowed attackers to manipulate client-side requests to different endpoints within the same application domain when specific prerendering conditions are met.
The vulnerability occurs in the client-side payload revival process (revive-payload.client.ts) where Nuxt Islands are automatically fetched when encountering serialized __nuxt_island
objects. The issue affects the following flow:
__nuxt_island
objectdevalue.stringify
and stored in the prerendered pagedevalue.parse
deserializes the payload/__nuxt_island/${key}.json
where key
could contain path traversal sequencesThis vulnerability requires all of the following conditions:
nitro.prerender
)useFetch
, useAsyncData
, or similar composables// Malicious API response during prerendering
{
"__nuxt_island": {
"key": "../../../../internal/service",
"params": { "action": "probe" }
}
}
This could cause the client to make requests to /__nuxt_island/../../../../internal/service.json
if path traversal is not properly handled by the server.
Action Required:
Temporary Workarounds (if immediate update is not possible):
The fix implemented validation for Island keys in revive-payload.server.ts
:
/^[a-z][a-z\d-]*_[a-z\d]+$/i