| Gói / sản phẩm | Phiên bản bị ảnh hưởng | Phiên bản đã vá |
|---|---|---|
| nuxt | ≥ 3.6.0, < 3.19.0≥ 4.0.0, < 4.1.0 | 3.19.04.1.0 |
| nuxt | ≥ 3.6.0, < 3.19.0≥ 4.0.0, < 4.1.0 | 3.19.04.1.0 |
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:
Bạn đang dùng một trong các sản phẩm này? Quét site để biết có đang lộ phiên bản có lỗ hổng không.
Quét site miễn phí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