MongoDB Sin Autenticación
Tu conexión a MongoDB no tiene credenciales de autenticación, permitiendo que cualquiera que pueda alcanzar el puerto de la base de datos lea, modifique o borre todos los datos.
Cómo Funciona
MongoDB históricamente venía con autenticación deshabilitada por defecto, lo que causó la masiva ola de ransomware de 2016-2017 donde más de 27,000 bases de datos fueron borradas. Aunque las versiones más nuevas habilitan auth por defecto, muchas configuraciones — especialmente entornos de desarrollo basados en Docker — todavía levantan MongoDB sin credenciales y se olvidan de agregarlas antes de deployear a producción.
// MAL: conectándose a MongoDB sin ninguna autenticación
const client = new MongoClient('mongodb://db.example.com:27017');
// Sin usuario, sin contraseña, sin authSource — acceso completo a todas las bases de datos// BIEN: siempre autentícate con un usuario dedicado por base de datos
const client = new MongoClient(process.env.MONGODB_URI);
// MONGODB_URI=mongodb://appuser:StrongPass@db.example.com:27017/mydb?authSource=mydbEjemplo Real
Los ataques de ransomware a MongoDB de 2017 borraron 27,000 bases de datos en 72 horas. Los atacantes scripted el ataque completo: encontrar MongoDB abierto en Shodan, dumpear todos los datos, borrarlos, dejar una nota de rescate. La pérdida total de datos afectó un estimado de más de 100 terabytes. La mayoría de las víctimas nunca recuperaron sus datos.
Cómo Prevenirlo
- Siempre crea un usuario dedicado de MongoDB con contraseña fuerte para cada aplicación — nunca te conectes sin credenciales
- Configura authSource en tu cadena de conexión para especificar qué base de datos almacena las credenciales del usuario
- Deshabilita la eliminación del flag --auth de MongoDB o asegúrate de que esté habilitado en tu mongod.conf: security.authorization: enabled
- En Docker Compose, configura MONGO_INITDB_ROOT_USERNAME y MONGO_INITDB_ROOT_PASSWORD y crea usuarios específicos para la app
- Nunca expongas el puerto 27017 de MongoDB a internet — usa acceso solo desde VPC
Tecnologías Afectadas
Data Hogo detecta esta vulnerabilidad automáticamente.
Escanea Tu Repo GratisVulnerabilidades Relacionadas
Conexión a Base de Datos Sin Cifrado
highTu conexión a la base de datos no usa SSL/TLS, lo que significa que todas las consultas y resultados viajan por la red en texto plano y pueden ser interceptados.
Base de Datos Accesible Públicamente
criticalTu base de datos está vinculada a 0.0.0.0 o expuesta en una IP pública sin VPC o firewall, haciéndola directamente accesible desde internet.
Credenciales de Base de Datos por Defecto
criticalTu base de datos usa credenciales predeterminadas de fábrica como postgres:postgres, root:root o admin:admin — lo primero que prueba cualquier atacante.
Cadena de Conexión con Contraseña Inline
highUna cadena de conexión a base de datos con contraseña en texto plano está hardcodeada en tu código fuente, comprometiendo tus credenciales de base de datos en el control de versiones.