Cadena de Conexion Expuesta
URLs de conexion a base de datos con usuario y password hardcodeadas en el codigo fuente, dejando las credenciales accesibles a cualquiera con acceso al repositorio.
Cómo Funciona
Los desarrolladores frecuentemente hardcodean cadenas de conexion a la base de datos directamente en archivos fuente o configuracion que se commitea al control de versiones. Estas cadenas contienen la URI completa incluyendo usuario, password, host y nombre de la base de datos. Una vez pusheadas a un repositorio — incluso uno privado — las credenciales quedan accesibles para todos los colaboradores y persisten en el historial de git para siempre. Los atacantes que obtienen cualquier nivel de acceso al repo pueden extraer estas credenciales y conectarse directamente a la base de datos. Scanners automatizados en GitHub buscan constantemente cadenas de conexion expuestas en repositorios publicos.
const { PrismaClient } = require('@prisma/client');
const prisma = new PrismaClient({
datasources: {
db: { url: 'postgresql://admin:s3cretPass@db.example.com:5432/myapp' }
}
});const { PrismaClient } = require('@prisma/client');
const prisma = new PrismaClient({
datasources: {
db: { url: process.env.DATABASE_URL }
}
});Ejemplo Real
En 2022, Toyota revelo que un subcontratista publico accidentalmente codigo fuente con credenciales de base de datos en un repositorio publico de GitHub durante casi cinco anos, exponiendo potencialmente datos de 296,019 clientes incluyendo correos electronicos y numeros de gestion de clientes.
Cómo Prevenirlo
- Guarda todas las cadenas de conexion en variables de entorno, nunca en el codigo fuente
- Agrega archivos .env al .gitignore antes del primer commit
- Usa herramientas de escaneo de secretos como GitGuardian o GitHub Secret Scanning
- Rota las credenciales inmediatamente si alguna vez se commitearon al control de versiones
Tecnologías Afectadas
Data Hogo detecta esta vulnerabilidad automáticamente.
Escanea Tu Repo GratisVulnerabilidades Relacionadas
Backup de Base de Datos Expuesto
highArchivos de dump de base de datos (.sql, .dump, .bak) commiteados al repositorio exponen el esquema completo y datos, incluyendo credenciales de usuarios y registros sensibles.
Queries Crudos en ORMs
highUsar metodos de SQL crudo como $queryRaw de Prisma o query() de Sequelize con interpolacion de strings bypasea la proteccion contra SQL injection del ORM.
Deserializacion Insegura
highDeserializar datos no confiables con librerias como node-serialize o yaml.load de Python permite a los atacantes ejecutar codigo arbitrario en el servidor.
Queries N+1 Explotables
lowLa expansion de relaciones sin limites en queries de ORM permite a los atacantes disparar miles de queries a la base de datos con un solo request de API, causando denegacion de servicio.