lowCWE-778

Sin Health Check en Docker

Sin una instrucción HEALTHCHECK, Docker y los orquestadores no pueden detectar cuando tu contenedor está corriendo pero roto — enrutando tráfico a una app muerta.

Cómo Funciona

Un contenedor puede estar en estado 'running' mientras la aplicación dentro se ha caído o tiene deadlock. Sin HEALTHCHECK, Docker marca el contenedor como saludable por defecto. Kubernetes y Docker Swarm siguen mandando tráfico. Los usuarios obtienen errores mientras el orquestador cree que todo está bien.

Código Vulnerable
# MAL: sin HEALTHCHECK — el contenedor es 'saludable' aunque la app se caiga
FROM node:20-alpine
WORKDIR /app
COPY . .
RUN npm ci
EXPOSE 3000
CMD ["node", "server.js"]
Código Seguro
# BIEN: HEALTHCHECK le dice a los orquestadores cuando la app está realmente lista
FROM node:20-alpine
WORKDIR /app
COPY . .
RUN npm ci
EXPOSE 3000
HEALTHCHECK --interval=30s --timeout=10s --retries=3 \
  CMD wget -qO- http://localhost:3000/health || exit 1
CMD ["node", "server.js"]

Ejemplo Real

Varios deployments de alto tráfico han experimentado interrupciones silenciosas donde los contenedores aparecían como saludables en dashboards de Kubernetes mientras servían errores 500 a todos los usuarios — porque la app se había bloqueado pero el proceso del contenedor seguía vivo.

Cómo Prevenirlo

  • Agrega un HEALTHCHECK a cada Dockerfile de producción que llame a un endpoint /health
  • Implementa un endpoint /health en tu app que verifique dependencias críticas (conexión a DB, caché)
  • Establece valores realistas de --interval, --timeout y --retries basados en el tiempo de inicio de tu app
  • Prueba el comportamiento del health check cayendo intencionalmente la app y verificando que el contenedor se vuelva 'unhealthy'

Tecnologías Afectadas

Docker

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas