CyberGlossary

Ataques y amenazas

Inyección NoSQL

También conocido como: NoSQLi

Definición

Inyección contra bases documentales, clave-valor o de grafos donde el atacante introduce operadores o JavaScript en los objetos de consulta.

La inyección NoSQL apunta a bases como MongoDB, CouchDB, DynamoDB o Redis que utilizan lenguajes de consulta basados en JSON, BSON o JavaScript embebido. En lugar de romper cadenas, el atacante manipula la estructura, por ejemplo enviando un JSON con operadores como {"$ne": null} o {"$where": "..."} para saltarse autenticación, volcar documentos o ejecutar JavaScript en el servidor. La deserialización automática de objetos en lenguajes dinámicos (PHP, Node.js) facilita el ataque al convertir entradas en parte del DSL. Las defensas incluyen tipado estricto, validación por esquema, rechazo de operadores enviados por el usuario, APIs parametrizadas, deshabilitar JavaScript del lado servidor y roles de base de datos con mínimo privilegio.

Ejemplos

  • Enviar {"username": "admin", "password": {"$ne": ""}} a un login MongoDB para saltarse la verificación de contraseña.
  • Abusar de {"$where": "sleep(5000) || true"} para extraer datos mediante diferencias de tiempo.

Términos relacionados