mediumCWE-547

Host de Base de Datos Hardcodeado

El hostname y puerto de tu base de datos están hardcodeados en el código fuente en lugar de variables de entorno, exponiendo la topología de tu infraestructura y haciendo los despliegues inflexibles.

Cómo Funciona

Hardcodear db.prod.example.com:5432 en tu código fuente expone tu topología de infraestructura interna a cualquiera que lea el código. Incluso si la base de datos requiere autenticación, conocer el hostname hace el reconocimiento más fácil. También hace que la gestión de entornos sea una pesadilla — cada entorno (dev, staging, prod) necesita cambios de código en lugar de simplemente cambiar variables de entorno.

Código Vulnerable
// MAL: host de base de datos hardcodeado en el código fuente
const pool = new Pool({
  host: 'db.prod.internal.example.com', // expuesto en el código fuente
  port: 5432,
  database: 'myapp_prod',
  user: process.env.DB_USER,
  password: process.env.DB_PASSWORD
});
Código Seguro
// BIEN: todos los detalles de conexión vienen de variables de entorno
const pool = new Pool({
  connectionString: process.env.DATABASE_URL
  // DATABASE_URL cubre host, puerto, nombre de bd, usuario, contraseña en una sola var
});

Ejemplo Real

Durante una auditoría de seguridad de la configuración de un proyecto open source, el hostname de la base de datos de producción fue descubierto en un archivo de configuración commiteado. Aunque las credenciales estaban en variables de entorno, el hostname permitió a los atacantes mapear la topología de red interna de la empresa y apuntar ese host específico para otros ataques.

Cómo Prevenirlo

  • Usa una sola variable de entorno DATABASE_URL que codifique todos los detalles de conexión
  • Si necesitas variables separadas, usa DB_HOST, DB_PORT, DB_NAME desde variables de entorno — nunca hardcodeadas
  • Audita tu código fuente en busca de hostnames internos y direcciones IP con una regex como \b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b
  • Trata los hostnames de infraestructura como secretos — revelan tu topología a los atacantes
  • Usa service discovery o alias DNS en tu VPC en lugar de hardcodear hostnames específicos

Tecnologías Afectadas

Node.jsPythonGo

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas