Source Maps Expuestos en Producción
Los archivos source map de JavaScript (.map) son públicamente accesibles en producción, revelando el código fuente original completo incluyendo comentarios, nombres de variables y lógica interna.
Cómo Funciona
Los source maps son archivos que mapean JavaScript minificado/bundleado de vuelta al código fuente original. Cuando se dejan accesibles en producción, cualquiera puede descargarlos y reconstruir todo el codebase. Esto revela lógica de negocio, endpoints de API, reglas de validación, flujos de autenticación, valores hardcodeados, comentarios internos y estructura del código. Los atacantes usan esta información para encontrar vulnerabilidades más rápido leyendo el source real en vez de hacer ingeniería inversa de código minificado. Next.js genera source maps por default en builds de producción.
// next.config.js — source maps enabled (default)
module.exports = {
productionBrowserSourceMaps: true,
// .map files are now publicly accessible
// e.g., /_next/static/chunks/pages/admin-a1b2c3.js.map
};// next.config.js — disable public source maps
module.exports = {
productionBrowserSourceMaps: false,
// Upload source maps to error tracking only
sentry: {
hideSourceMaps: true,
},
};Ejemplo Real
En 2021, investigadores encontraron que varios sitios web importantes incluyendo plataformas de e-commerce tenían source maps expuestos, revelando árboles completos de componentes React, código de integración de API y lógica de panel admin. Esto dio a los atacantes un mapa para encontrar y explotar vulnerabilidades.
Cómo Prevenirlo
- Configura productionBrowserSourceMaps: false en next.config.js
- Sube source maps a Sentry o herramientas similares de forma privada, no pública
- Agrega *.map a las reglas de denegación de tu CDN o Content-Security-Policy
- Audita archivos desplegados para asegurar que no haya archivos .map públicamente accesibles
Tecnologías Afectadas
Data Hogo detecta esta vulnerabilidad automáticamente.
Escanea Tu Repo GratisVulnerabilidades Relacionadas
dangerouslySetInnerHTML Sin Sanitización
highUsar dangerouslySetInnerHTML de React con input de usuario sin sanitizar permite a atacantes inyectar scripts maliciosos que se ejecutan en los navegadores de otros usuarios.
Tokens de Autenticación en localStorage
highGuardar JWT tokens, tokens de sesión o API keys en localStorage los hace accesibles a cualquier JavaScript corriendo en la página, incluyendo payloads XSS.
Exposición de Secretos en __NEXT_DATA__
highLos props de página de Next.js pasados por getServerSideProps o getStaticProps filtran datos sensibles como API keys, URLs de base de datos o configuración interna a través del script tag __NEXT_DATA__.
CORS Abierto en API Routes de Next.js
mediumLas API routes de Next.js configuradas con Access-Control-Allow-Origin: * permiten a cualquier sitio web hacer requests cross-origin autenticados, habilitando ataques tipo CSRF.