Vulnerabilidad en Nuxt (CVE-2024-23657)
Severidad:
ALTA
Type:
CWE-22
Limitación incorrecta de nombre de ruta a un directorio restringido (Path Traversal)
Fecha de publicación:
05/08/2024
Última modificación:
06/08/2024
Descripción
Nuxt es un framework gratuito y de código abierto para crear sitios web y aplicaciones web completos con Vue.js. A Nuxt Devtools le falta autenticación en la función RPC `getTextAssetContent`, que es vulnerable a path traversal. Combinado con la falta de comprobaciones de origen en el controlador WebSocket, un atacante puede interactuar con una instancia de devtools que se ejecuta localmente y extraer datos abusando de esta vulnerabilidad. En determinadas configuraciones, un atacante podría filtrar el token de autenticación de devtools y luego abusar de otras funciones RPC para lograr RCE. La función `getTextAssetContent` no comprueba los path traversal, lo que podría permitir a un atacante leer archivos arbitrarios a través del RPC WebSocket. El servidor WebSocket no verifica el origen de la solicitud, lo que conduce al secuestro de websocket entre sitios. Esto puede ser intencionado para permitir que ciertas configuraciones funcionen correctamente. Los tokens de autenticación de Nuxt Devtools se colocan dentro del directorio de inicio del usuario actual. La página web maliciosa puede conectarse al WebSocket de Devtools, realizar un directory traversal por fuerza bruta para encontrar el token de autenticación y luego usar la función *autenticada* `writeStaticAssets` para crear un nuevo componente, Nitro Handler o archivo `app.vue` que se ejecutará automáticamente a medida que se cambia el archivo. Esta vulnerabilidad se solucionó en la versión 1.3.9. Se recomienda a todos los usuarios que actualicen. No se conocen workarounds para esta vulnerabilidad.
Impacto
Puntuación base 3.x
8.80
Severidad 3.x
ALTA
Referencias a soluciones, herramientas e información
- https://github.com/nuxt/devtools/blob/c4f2b68281203fc3f61ffc97d9c6623fbfde46bb/packages/devtools/src/dev-auth.ts#L14
- https://github.com/nuxt/devtools/blob/c4f2b68281203fc3f61ffc97d9c6623fbfde46bb/packages/devtools/src/server-rpc/assets.ts#L88C48-L88C48
- https://github.com/nuxt/devtools/blob/c4f2b68281203fc3f61ffc97d9c6623fbfde46bb/packages/devtools/src/server-rpc/assets.ts#L96C11-L96C28
- https://github.com/nuxt/devtools/blob/c4f2b68281203fc3f61ffc97d9c6623fbfde46bb/packages/devtools/src/server-rpc/index.ts#L109
- https://github.com/nuxt/nuxt/security/advisories/GHSA-rcvg-rgf7-pppv
- https://portswigger.net/web-security/websockets/cross-site-websocket-hijacking