CVE-2025-14847 : Fuite de mémoire MongoDB, vulnérabilité critique 2025
Aurélien Fontevive
Une fuite de mémoire critique a été découverte dans MongoDB, exposant des millions de bases de données à un risque d’extraction de données sensibles sans authentification. Cette faille, identifiée sous la référence CVE-2025-14847, affecte la compression Zlib et permet à un attaquant distant de lire de la mémoire non initialisée du serveur.
Cet article analyse en détail le mécanisme de l’attaque, l’ampleur de l’exposition, et surtout, les actions correctives immédiates que vous devez entreprendre pour sécuriser vos infrastructures en 2025.
Comprendre la faille CVE-2025-14847
La CVE-2025-14847 est classifiée avec un score de sévérité CVSS 8.7, ce qui la place dans la catégorie “Haute”. Il s’agit techniquement d’une erreur de gestion des paramètres de longueur (improper handling of length parameter inconsistency) au sein de l’implémentation du protocole de compression Zlib. CVSS 8.7
Le mécanisme de l’attaque
Concrètement, le problème survient lorsqu’un client envoie des requêtes compressées contenant des incohérences entre les champs de longueur déclarés et la taille réelle des données associées. Si un attaquant manipule ces en-têtes de manière malveillante, le serveur MongoDB peut se retrouver dans une situation où il tente de renvoyer des données de compression qui n’ont pas été correctement initialisées en mémoire.
Selon la description officielle sur CVE.org, “des champs de longueur mal assortis dans les en-têtes de protocole compressés Zlib peuvent permettre la lecture de mémoire heap non initialisée par un client non authentifié”. En termes simples, le serveur divulgue des fragments de sa mémoire vive (RAM) à un acteur externe.
Pourquoi est-ce dangereux ?
La mémoire non initialisée (uninitialized memory) peut contenir des informations résiduelles d’opérations précédentes. Bien que ces données soient souvent aléatoires, elles peuvent parfois inclure :
- Des fragments de requêtes précédentes (mots de passe, données utilisateur).
- Des pointeurs de mémoire ou des structures internes du serveur.
- Des clés cryptographiques ou des tokens de session.
C’est ce qu’on appelle une fuite de mémoire (memory leak) ou un problème de memory safety, qui peut servir de base pour des attaques plus complexes, comme l’ingénierie inverse ou la préparation d’exploits futurs.
Portée de l’impact : Quelles versions sont vulnérables ?
Cette vulnérabilité est particulièrement inquiétante car elle touche un large éventail de versions de MongoDB, des plus récentes aux plus anciennes encore en service dans certains environnements legacy.
Voici la liste exhaustive des versions impactées :
- MongoDB 8.2.0 à 8.2.3
- MongoDB 8.0.0 à 8.0.16
- MongoDB 7.0.0 à 7.0.26
- MongoDB 6.0.0 à 6.0.26
- MongoDB 5.0.0 à 5.0.31
- MongoDB 4.4.0 à 4.4.29
- Toutes les versions MongoDB Server v4.2
- Toutes les versions MongoDB Server v4.0
- Toutes les versions MongoDB Server v3.6
Si votre infrastructure utilise l’une de ces versions, vous êtes exposé à une attaque sans authentification préalable.
Mesures de mitigation et correctifs
Face à une menace de ce calibre, l’action recommandée est double : appliquer le correctif officiel ou, à défaut, désactiver la compression vulnérable.
1. Mise à jour immédiate (Recommandé)
La seule solution pérenne est de mettre à jour vers une version corrigée de MongoDB. Le développeur a publié les versions de sécurité suivantes qui neutralisent la faille :
- MongoDB 8.2.3 (et versions ultérieures)
- MongoDB 8.0.17 (et versions ultérieures)
- MongoDB 7.0.28 (et versions ultérieures)
- MongoDB 6.0.27 (et versions ultérieures)
- MongoDB 5.0.32 (et versions ultérieures)
- MongoDB 4.4.30 (et versions ultérieures)
“Nous recommandons vivement de mettre à jour vers une version corrigée dès que possible”, indique MongoDB.
2. Désactiver la compression Zlib (Solution temporaire)
Si une mise à jour immédiate n’est pas techniquement possible (par exemple, sur des systèmes critiques nécessitant des tests de non-régression poussés), il est impératif de désactiver la compression Zlib sur le serveur.
Pour cela, vous devez démarrer le processus mongod ou mongos avec l’option de configuration explicite qui exclut Zlib.
Voici comment procéder :
- Option 1 : Utiliser le paramètre
networkMessageCompressorsau lancement du binaire. - Option 2 : Modifier le fichier de configuration
mongod.confpour spécifiernet.compression.compressorssans inclure zlib.
Les autres algorithmes de compression supportés par MongoDB, tels que Snappy et Zstd, ne sont pas affectés par cette faille spécifique et peuvent être utilisés en substitution.
Analyse de risque : De quoi parle-t-on réellement ?
Pour comprendre la gravité, il faut se pencher sur la nature de l’attaque. Selon OP Innovate, “CVE-2025-14847 permet à un attaquant distant non authentifié de déclencher une condition dans laquelle le serveur MongoDB peut renvoyer de la mémoire non initialisée de son tas (heap)”.
Les conséquences potentielles
Bien que MongoDB ne soit pas une base de données SQL classique, les fuites de mémoire peuvent être tout aussi critiques. Les données exposées pourraient inclure :
- L’état interne du serveur : Cela aide les attaquants à cartographier l’infrastructure.
- Des informations confidentielles : Si des données sensibles ont été traités récemment, des résidus pourraient être visibles.
- Assistance à l’exploitation : Les pointeurs de mémoire divulgués peuvent aider à contourner les protections mémoire modernes (comme ASLR) pour des attaques futures.
Dans le contexte français, où le respect du RGPD est strict, une telle fuite de données, même si elle semble technique, pourrait constituer une violation si des données personnelles sont interceptées.
Tableau comparatif : Versions corrigées vs Vulnérables
Pour vous aider à identifier rapidement votre statut, voici un résumé des versions impactées et leurs équivalents sécurisés : sécurisés
| Branche de version | Statut | Version corrigée recommandée |
|---|---|---|
| 8.2.x | Vulnérable (<= 8.2.3) | 8.2.3 |
| 8.0.x | Vulnérable (<= 8.0.16) | 8.0.17 |
| 7.0.x | Vulnérable (<= 7.0.26) | 7.0.28 |
| 6.0.x | Vulnérable (<= 6.0.26) | 6.0.27 |
| 5.0.x | Vulnérable (<= 5.0.31) | 5.0.32 |
| 4.4.x | Vulnérable (<= 4.4.29) | 4.4.30 |
| 4.2.x | Vulnérable (Toutes) | Mise à jour requise |
| 4.0.x | Vulnérable (Toutes) | Mise à jour requise |
| 3.6.x | Vulnérable (Toutes) | Mise à jour requise |
Procédure de vérification et étapes d’urgence
En pratique, voici la marche à suivre pour sécuriser un cluster MongoDB exposé.
- Identifier la version actuelle :
Lancez la commande shell suivante pour connaître votre version :
db.version() - Vérifier la configuration de compression : Consultez votre fichier de configuration ou les paramètres de démarrage pour vérifier si zlib est activé.
- Appliquer le correctif ou le contournement :
Si vous êtes sur une version vulnérable, priorisez la mise à jour. Si impossible, redémarrez le service avec l’option
--networkMessageCompressors snappy,zstd(en excluant zlib).
Note d’expertise : Dans nos tests de sécurité sur des infrastructures françaises, nous avons observé que la désactivation de Zlib n’a généralement pas d’impact négatif sur les performances si Snappy ou Zstd sont déjà configurés, car ces derniers sont souvent plus efficaces.
Conclusion
La faille CVE-2025-14847 rappelle l’importance critique de la memory safety dans les systèmes de gestion de bases de données. Avec un score CVSS de 8.7 et une exploitation possible sans authentification, elle représente une menace sérieuse pour la confidentialité des données.
Si vous gérez des instances MongoDB, l’action immédiate est de vérifier vos versions et de désactiver Zlib si la mise à jour n’est pas encore possible. La sécurité de vos données ne peut attendre.
Prochaine action : Vérifiez dès maintenant la version de votre serveur MongoDB et appliquez le correctif approprié.