CyberGlossary

Attaques et menaces

Injection NoSQL

Aussi appelé: NoSQLi

Définition

Injection visant des bases documentaires, clé-valeur ou orientées graphe, où l'attaquant glisse des opérateurs ou du JavaScript dans les objets de requête.

L'injection NoSQL cible des bases comme MongoDB, CouchDB, DynamoDB ou Redis dont les langages de requête reposent sur JSON, BSON ou du JavaScript embarqué. Au lieu de s'évader d'une chaîne, l'attaquant manipule la structure, par exemple en envoyant un JSON avec des opérateurs comme {"$ne": null} ou {"$where": "..."} pour contourner l'authentification, exfiltrer des documents ou exécuter du JavaScript côté serveur. La désérialisation automatique d'objets dans des langages dynamiques (PHP, Node.js) rend l'attaque triviale car l'entrée utilisateur devient partie du DSL. Les défenses incluent typage et validation de schéma stricts, refus des opérateurs fournis par l'utilisateur, API paramétrées, désactivation de JavaScript côté serveur et rôles BD à moindre privilège.

Exemples

  • Envoyer {"username": "admin", "password": {"$ne": ""}} à un login MongoDB pour contourner la vérification du mot de passe.
  • Exploiter {"$where": "sleep(5000) || true"} pour énumérer des données via les temps de réponse.

Termes liés