lowCWE-778

Sin Endpoint de Health Check

Sin un endpoint /health, los load balancers y orquestadores no pueden verificar que tu aplicación realmente funciona antes de enrutar tráfico hacia ella.

Cómo Funciona

Los orquestadores (Kubernetes, ECS, Railway) usan endpoints de health check para determinar si un contenedor está listo para recibir tráfico. Sin uno, un contenedor recién deployado que no pudo conectarse a la base de datos recibe tráfico real inmediatamente, retornando errores a usuarios reales.

Código Vulnerable
// MAL: sin endpoint de health check — el orquestador no puede verificar el estado de la app
// Sin ruta /health definida en ningún lugar de la app
// El load balancer verifica que el puerto 3000 está abierto — pero la app puede estar rota internamente
Código Seguro
// BIEN: endpoint /health que verifica dependencias reales de la aplicación
app.get('/health', async (req, res) => {
  try {
    await db.raw('SELECT 1'); // verifica la conexión a la base de datos
    res.json({ status: 'ok', version: process.env.APP_VERSION });
  } catch (err) {
    res.status(503).json({ status: 'error', message: 'Base de datos no disponible' });
  }
});

Ejemplo Real

Un patrón común de fallo de deployment: nueva versión deployada con una migración de base de datos rota, el health check nunca lo detecta porque no existe ninguno, y el 100% de los usuarios golpea la versión rota durante varios minutos antes de que alguien haga rollback manualmente.

Cómo Prevenirlo

  • Implementa un endpoint GET /health en cada servicio
  • Haz que el endpoint de health verifique dependencias reales — conectividad a base de datos, disponibilidad de caché
  • Retorna HTTP 200 para saludable, HTTP 503 para no saludable — eso es lo que esperan los load balancers
  • Mantén el endpoint de health liviano y exclúyelo de autenticación y rate limiting

Tecnologías Afectadas

Node.js

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas