Stack Traces Expuestos al Usuario
Retornar stack traces o detalles de errores internos en respuestas de API revela tu estructura de archivos, versiones de librerías y rutas de código a los atacantes.
Cómo Funciona
Un stack trace le dice a un atacante qué librerías usas, sus versiones, la estructura de archivos interna de tu servidor y qué líneas de código fallaron. Esto hace que los ataques dirigidos sean significativamente más fáciles — pueden buscar CVEs para tus versiones exactas de librerías y crear inputs para explotar rutas de código específicas.
// MAL: error crudo enviado al cliente incluye stack trace
app.use((err, req, res, next) => {
res.status(500).json({
error: err.message,
stack: err.stack, // expone /home/usuario/proyecto/src/routes/auth.ts:42
details: err // puede incluir query, config u otros internos
});
});// BIEN: error genérico al cliente, detalles completos solo en logs del servidor
app.use((err, req, res, next) => {
console.error({ error: err.message, stack: err.stack, userId: req.user?.id });
res.status(500).json({
error: 'Algo salió mal. Por favor intenta de nuevo.', // nada interno
requestId: req.id // para que el usuario pueda reportarlo y tú encontrarlo en logs
});
});Ejemplo Real
OWASP identifica la exposición de información a través de mensajes de error como una vulnerabilidad persistente. Los pen testers rutinariamente usan stack traces de respuestas de error para identificar versiones de librerías explotables y la estructura interna de la aplicación.
Cómo Prevenirlo
- Retorna mensajes de error genéricos a los clientes — nunca mensajes de excepción crudos ni stack traces
- Loguea los detalles completos del error del lado del servidor con un ID de request que el usuario pueda referenciar
- Establece NODE_ENV=production para suprimir stack traces en muchos frameworks automáticamente
- Usa un manejador de errores global que sanitice todas las respuestas de error antes de enviarlas
Tecnologías Afectadas
Data Hogo detecta esta vulnerabilidad automáticamente.
Escanea Tu Repo GratisVulnerabilidades Relacionadas
Console.log de Datos Sensibles
mediumLoguear contraseñas, tokens, objetos de usuario completos o datos de pago a la consola envía esos datos a tu agregador de logs en texto plano.
Sin Error Boundary de React
lowSin error boundaries, un error de JavaScript en cualquier componente crashea todo el árbol de React y muestra una pantalla en blanco al usuario.
Logging de Seguridad Insuficiente
lowNo loguear eventos de seguridad (logins fallidos, denegaciones de permisos, acciones sospechosas) significa que no puedes detectar ataques en curso ni reconstruir lo que pasó después de una brecha.
PII en Logs
mediumLoguear información personal identificable (email, nombre completo, IP, teléfono) crea riesgos de privacidad y cumplimiento bajo GDPR y CCPA.