highCWE-295OWASP A02:2021

Sin Validación de Certificado SSL de BD

Tu conexión SSL a la base de datos usa rejectUnauthorized: false, que cifra el tráfico pero no verifica la identidad del servidor, dejándote expuesto a ataques de hombre en el medio.

Cómo Funciona

SSL sin validación de certificado es como cerrar con llave tu puerta pero no verificar quién está del otro lado. Tus datos están cifrados en tránsito, pero un atacante que intercepte la conexión (ej. vía ARP spoofing en redes internas de cloud) puede presentar cualquier certificado y tu cliente lo aceptará. Ahora estás mandando tus credenciales de base de datos y consultas a la computadora del atacante.

Código Vulnerable
// MAL: SSL habilitado pero validación de certificado deshabilitada
const pool = new Pool({
  connectionString: process.env.DATABASE_URL,
  ssl: {
    rejectUnauthorized: false // deshabilita validación de cert — riesgo de MITM
  }
});
Código Seguro
// BIEN: habilita SSL con validación adecuada de certificado
const pool = new Pool({
  connectionString: process.env.DATABASE_URL,
  ssl: {
    rejectUnauthorized: true, // verifica certificado del servidor (el default debe ser true)
    ca: process.env.DB_CA_CERT // ancla el certificado CA de tu proveedor de BD para mayor seguridad
  }
});

Ejemplo Real

rejectUnauthorized: false es una de las sugerencias de 'fix' más comunes en Stack Overflow para errores SSL con certificados autofirmados — y una de las más peligrosas. Muchas apps en producción tienen esta configuración de un copy-paste apresurado de un desarrollador, dejando su comunicación con la base de datos vulnerable a interceptación.

Cómo Prevenirlo

  • Siempre mantén rejectUnauthorized: true (el default) — nunca lo configures a false en producción
  • Si obtienes errores SSL con un certificado autofirmado, soluciona el problema del certificado en lugar de deshabilitar la validación
  • Para bases de datos administradas, descarga el certificado CA de tu proveedor y anclaló con la opción ca
  • Usa la variable de entorno NODE_EXTRA_CA_CERTS para agregar certificados CA personalizados sin deshabilitar la validación
  • Audita en busca de rejectUnauthorized: false en tu codebase — es un 'fix temporal' común que se vuelve permanente

Tecnologías Afectadas

Node.jsPython

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas