Vulnerabilidad en Astro (CVE-2024-56159)
Gravedad CVSS v4.0:
ALTA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
19/12/2024
Última modificación:
20/12/2024
Descripción
Astro es un framework web para sitios web basados en contenido. Un error en el proceso de compilación permite que cualquier usuario no autenticado lea partes del código fuente del servidor. Durante la compilación, junto con los recursos del cliente, como los archivos CSS y de fuentes, los archivos sourcemap **para el código del servidor** se mueven a una carpeta de acceso público. Cualquier tercero puede leerlos con una solicitud HTTP GET no autorizada al mismo servidor que aloja el resto del sitio web. Si bien algunos archivos del servidor están codificados, lo que hace que su acceso sea oscuro, los archivos correspondientes al enrutador del sistema de archivos (aquellos en `src/pages`) tienen un nombre predecible. Por ejemplo, el archivo sourcemap para `src/pages/index.astro` se llama `dist/client/pages/index.astro.mjs.map`. Esta vulnerabilidad es la causa principal del problema n.° 12703, que se vincula a un proyecto simple de stackblitz que demuestra la vulnerabilidad. Durante la compilación, observe el contenido de la carpeta `dist/client` (conocida como `config.build.client` en el código astro). Todos los servidores astro hacen que la carpeta en cuestión sea accesible a la Internet pública sin ninguna autenticación. Contiene archivos `.map` correspondientes al código que se ejecuta en el servidor. Todos los proyectos de **server-output** en las versiones de Astro 5 **v5.0.3** a **v5.0.7**, que tengan **sourcemaps habilitado**, ya sea directamente o mediante un complemento como `sentry`, se ven afectados. La corrección para los proyectos de **server-output** se publicó en **astro@5.0.8**. Además, todos los proyectos de **static-output** manipulados con Astro 4 versiones **4.16.17 o anteriores**, o Astro 5 versiones **5.0.8 o anteriores**, que tengan **sourcemaps habilitado** también se ven afectados. La corrección para los proyectos de **static-output** se publicó en **astro@5.0.9** y se incorporó a Astro v4 en **astro@4.16.18**. El impacto inmediato se limita al código fuente. No se exponen los secretos ni las variables de entorno a menos que estén presentes textualmente en el código fuente. No hay una pérdida inmediata de integridad dentro del servidor vulnerable. Sin embargo, es posible descubrir posteriormente otra vulnerabilidad a través del código fuente revelado. No hay un impacto inmediato en la disponibilidad del servidor vulnerable. Sin embargo, la presencia de una expresión regular insegura, por ejemplo, puede explotarse rápidamente para comprometer posteriormente la disponibilidad. La corrección para los proyectos **server-output** se publicó en **astro@5.0.8**, y la corrección para los proyectos **static-output** se publicó en **astro@5.0.9** y se incorporó a Astro v4 en **astro@4.16.18**. Se recomienda a los usuarios que actualicen de inmediato si están usando mapas de origen o una integración que los habilite.
Impacto
Puntuación base 4.0
7.80
Gravedad 4.0
ALTA
Referencias a soluciones, herramientas e información
- https://github.com/getsentry/sentry-javascript/blob/develop/packages/astro/src/integration/index.ts#L50
- https://github.com/withastro/astro/blob/176fe9f113fd912f9b61e848b00bbcfecd6d5c2c/packages/astro/src/core/build/static-build.ts#L139
- https://github.com/withastro/astro/issues/12703
- https://github.com/withastro/astro/security/advisories/GHSA-49w6-73cw-chjr
- https://github.com/withastro/astro/security/advisories/GHSA-49w6-73cw-chjr