mediumCWE-209A05:2021

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.

Código Vulnerable
// 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
  });
});
Código Seguro
// 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

Node.js

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas