criticalCWE-306OWASP A07:2021

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.

Código Vulnerable
// 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
Código Seguro
// 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=mydb

Ejemplo 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

Node.jsPython

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas