NoSQL Injection
hackingDéfinition
L'injection NoSQL est une vulnérabilité applicative permettant à un attaquant d'altérer la logique d'une requête adressée à une base de données non relationnelle, comme MongoDB, Couchbase ou Redis, en injectant des opérateurs ou des structures de requête non prévues via des champs de saisie insuffisamment validés. Contrairement à l'injection SQL classique, elle exploite souvent la nature typée du langage de requête, par exemple en soumettant un objet JSON contenant un opérateur MongoDB comme dollar-ne ou dollar-gt à la place d'une chaîne de caractères attendue, permettant de contourner une vérification d'authentification ou d'extraire des données non autorisées. Cette classe de vulnérabilité relève de la catégorie A03:2021 du OWASP Top 10 relative aux injections. Elle est fréquente dans les applications construites avec des frameworks JavaScript où les paramètres de requête HTTP sont directement transmis à la couche de persistance sans validation stricte de type. En défense, la validation systématique du type et de la structure attendue des entrées utilisateur, l'utilisation de requêtes paramétrées ou d'ORM appliquant un échappement natif, la désactivation de l'exécution de JavaScript côté serveur dans MongoDB via l'option correspondante, et le principe de moindre privilège sur les comptes applicatifs de base de données constituent les contre-mesures principales, complétées par une journalisation des requêtes anormales pour la détection.
Description
Les injections NoSQL ciblent des bases comme MongoDB via la manipulation d'opérateurs JSON. Des payloads utilisant des opérateurs comme $gt, $ne ou $where permettent de contourner l'authentification ou d'exfiltrer des collections entières de données.
Exploitation
Un payload {"password": {"$gt": ""}} retourne true pour tout mot de passe non vide dans MongoDB. L'opérateur $where permet d'exécuter des fonctions JavaScript arbitraires lors de l'évaluation des requêtes, menant à une exfiltration de données ou un DoS.
Défense
- Valider et typer strictement toutes les entrées avant de construire des requêtes NoSQL
- Désactiver les opérateurs $where et les fonctions JavaScript dans la configuration MongoDB
- Utiliser des ODM avec validation de schéma (Mongoose) pour rejeter les structures d'opérateurs inattendues
Articles liés
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés. 2.1.7
Un projet cybersécurité ?
Expert dispo · Réponse 24h