Connexion Premium

MongoBleed : une très vilaine faille MongoDB laisse fuiter des données sensibles

Et Joyeux Noël !

MongoBleed : une très vilaine faille MongoDB laisse fuiter des données sensibles

Illustration : Flock

Une faille MongoDB laisse fuiter des données sensibles des serveurs, y compris des mots de passe et des clés secrètes. Le danger est réel, d’autant plus que la faille existe depuis plus de huit ans et que des preuves de concept sont librement disponibles sur Internet. Des correctifs sont disponibles, à déployer au plus vite si ce n’est pas encore fait !

MongoDB est de nouveau victime d’une vilaine faille de sécurité, baptisée cette fois CVE-2025-14847. « De multiples vulnérabilités ont été découvertes dans MongoDB Server. Certaines d’entre elles permettent à un attaquant de provoquer un déni de service à distance, une atteinte à la confidentialité des données et une atteinte à l’intégrité des données », explique le CERT-FR.

Depuis 2017, il était possible de récupérer des données en mémoire

Le CERT Santé français donne quelques détails sur la faille et ses conséquences. Elle est exploitable par le réseau avec une complexité « faible » et ne nécessite aucun privilège, ce qui explique sa dangerosité. Dans tous les cas, elle ne permet pas d’obtenir des privilèges plus élevés, mais tout de même d’accéder à des « espaces mémoire non initialisés sans authentification ».

Cette vulnérabilité rappelle Heartbleed qui avait secoué Internet il y a plus de 10 ans, avec des conséquences parfois très graves.

Le CVE lui attribue une note de dangerosité de 7,5 sur 10 dans la version 3.1 du CVSS et de 8,7 sur 10 pour la version 4.0. L’alerte date du 19 décembre 2025 et fait suite à cinq bulletins de sécurité publiés par MongoDB les 25 novembre (1, 2 et 3), le 9 décembre (4) et enfin le 19 décembre (5). Le CERT indiquait le 23 décembre que la faille n’était pas activement exploitée… mais la situation va rapidement changer.

Dans le dernier bulletin de MongoDB, on peut lire que la faille concerne toutes les versions de MongoDB Server à partir de la 3.6. Le bug a été ajouté dans ce commit du 1ᵉʳ juin 2017… il y a donc plus de huit ans. Il est ensuite resté dans les versions plus récentes, de la 4.x à la 8.2 en passant par les 5.x, 6.x et 7.x. Des correctifs sont disponibles avec les versions 8.2.3, 8.0.17, 7.0.28, 6.0.27, 5.0.32 et 4.4.30. Les moutures 4.2, 4.0 et 3.6 de MongoDB sont donc laissées sur le côté.

Si vous ne pouvez pas mettre à jour rapidement, MongoDB recommande de « désactiver la compression zlib sur le serveur MongoDB en démarrant mongod ou mongos avec l’option networkMessageCompressors ou net.compression.compressors qui exclut explicitement zlib ».

Selon un rapport du moteur de recherche Censys (un concurrent de Shodan), plus de 87 000 bases de données seraient vulnérables.

Pour Noël, des « experts » publient des preuves de concept

Dans une mise à jour, le CERT Santé affirme maintenant qu’une preuve de concept « est disponible en sources ouvertes », permettant donc à n’importe qui d’exploiter facilement cette brèche si elle n’est pas corrigée. Les documents nécessaires pour créer un outil afin d’exploiter cette brèche ont été mis en ligne dans la nuit du 25 au 26 décembre sur un dépôt GitHub, soit une semaine après l’annonce de MongoDB et la mise en ligne des correctifs, en pleine période de préparation des fêtes de fin d’année.

Ils ont été publiés par un utilisateur qui serait responsable technique chez Elastic Security, qui se présente comme une « plateforme open source qui optimise la recherche, l’observabilité et la sécurité ». Le chercheur en cybersécurité Kevin Beaumont affirme avoir testé le PoC et confirme « que cet exploit est réel ».

C’est visiblement aussi simple à exploiter que HeartBleed, avec les mêmes dangers : « il suffit de fournir l’adresse IP d’une instance MongoDB et elle commencera à dénicher en mémoire des choses comme les mots de passe de base de données (qui sont en texte brut), les clés secrètes AWS, etc. », détaille Kevin Beaumont.

Ce dernier ajoute qu’une « autre entreprise a jugé bon de publier des détails techniques la veille de Noël » ; il s’agit d’Ox Security. Le ton est volontairement sarcastique car le calendrier est tout sauf idéal. La faille peut se révéler extrêmement dangereuse et publier les détails techniques de son exploitation permet à quasiment n’importe qui de tenter sa chance. Plusieurs s’étonnent d’ailleurs de voir des experts ainsi publier les détails d’exploitation d’une faille de sécurité aussi sensible, surtout en pleine période de fête.

Nous en parlions avec des experts en cybersécurité lors des Assises de Monaco en octobre dernier : « Quand une vulnérabilité est rendue publique avec son code d’exploitation, des acteurs malveillants vont lancer une campagne sur l’ensemble d’Internet en mode « /0 » pour tester si des sites ou services sont vulnérables ». Désormais, le plus difficile est presque d’estimer le bon montant de la rançon.

Publier ainsi des PoC revient à faciliter la vie des pirates, comme relayer tout et n’importe quoi sur les fuites de données… et ainsi se faire les « commerciaux » des pirates. Un sujet sensible, qui nécessite souvent des vérifications incompatibles avec la course à l’information. Next a déjà depuis longtemps choisi son camp sur ce point.

Corriger est une chose, mais comment savoir si on a été victime ?

Que des chercheurs en cybersécurité postent des preuves de concepts et des détails techniques en plein pendant le réveillon n’est certainement pas l’idée de l’année… même s’il faut aussi reconnaitre que laisser des serveurs vulnérables pendant une semaine n’est pas mieux.

Aussi bien de la part du chercheur de chez Elastic Security que chez Ox Security, on ne trouve aucune précision sur comment détecter une exploitation de cette vulnérabilité dans les journaux par exemple. Un autre expert en cybersécurité s’est attelé à la tâche : Eric Capuano. Sur son blog, il recommande évidemment d’appliquer les correctifs, mais ajoute que « le patch seul ne suffit pas — il faut savoir si vous avez été ciblé avant le patch ».

Il explique que la particularité de cette brèche est qu’elle ne semble « détectable que dans les journaux du serveur MongoDB, qui ont très peu de chance d’être transmis à un système SIEM [Security Information and Event Management ou gestion des événements et des informations de sécurité, ndlr], et nécessite une logique relativement complexe qui pourrait être difficile à intégrer à la plupart des moteurs de détection SIEM ». Il propose un « artefact » pour Velociraptor, une plateforme open source de collecte et d’analyse. Si vous avez d’autres moyens de vérifier ce qu’il en est, n’hésitez pas à nous le signaler via les commentaires.

Ce n’est pas la première fois que MongoDB défraye la chronique. On se souvient par exemple en 2015 que plusieurs dizaines de milliers de bases de données étaient ouvertes aux quatre vents. Pas à cause d’une faille, mais d’un défaut de configuration avec des administrateurs qui laissaient les bases accessibles depuis n’importe quelle adresse IP. MongoDB avait alors réagi avec quasiment un simple RTFM (Read The Fucking Manual). Deux ans plus tard, rebelote. En 2023, MongoDB s’était fait pirater et des données de ses clients avaient été dérobées.

Commentaires (28)

votre avatar
Si la faille nécessite peu de travaux côté réseau, j'en déduis que les bases concernées sont encore exposées sur Internet... ?

Parce que là, je n'ai pas l'impression de voir un rebond via le front ou le back.
votre avatar
Il y a un travail assez facile à faire côté réseau: couper IPv4 une fois pour toute.
Quand je dis facile, je le met en œuvre chez moi depuis plusieurs années: plus aucun service important en IPv4. Même samba est à 100% en IPv6.

Il ne me reste que DLNA car mes TV ne connaissent pas IPv6.

Le reste du traffic IPv4 ne peut allez que dehors.

Prochaine étape: passage en NAT64 pour éteindre le DHCP.
votre avatar
Chez toi, je suppose que tu n'as qu'une adresse IP V4 publique, celle de ta box, les autres adresses IP V4 de ton réseau sont privées et donc inaccessibles de l'extérieur. Une base de donnée dans ton réseau serait donc protégée de ces attaques sauf à avoir redirigé certains ports de ta box vers des serveurs internes, mais là, tu es censé savoir ce que tu fais.
Il suffirait que les serveurs de base de données n'aient que des adresses IP privées pour que ce genre de risques disparaisse aussi bien en V4 qu'en V6.
votre avatar
Inaccessible à première vue. Tu oublies un truc « magique » que peux de gens pensent à désactiver: l'ouverture de ports sur la box avec upnp. Et là, ton adresse IPv4 pourtant privée, se met à recevoir du trafic externe de la part de ta box.

Pas mal d'applications se permettent d'ouvrir des ports externes si on les laisse faire; C'est peut-être le cas de mongodb.

Encore une fois: le NAT n'assure aucune sécurité.

Ce qui est assez sale également est que l'adresse privée IPv4 sert pour du trafic à la fois privé et global. En IPv4, on a pas vraiment le choix alors qu'en IPv6, il est possible de tout séparer: le global, le privé et le local ont chacun leurs adresses. C'est tellement plus simple!

En IPv6, mes adresses ULA ne recevrons jamais de trafic publique, que j'ai bien configuré ma box ou non. D’ailleurs, ce n'est pas la box qui annonce le préfixe ULA.

Donc, les bases de données de mon réseau local ne sont accessibles qu'en IPv6 via des adresses ULA et protégées par des règles de pare-feu bien entendu.
votre avatar
Je doute que les BDD MongoDB concernées soient hébergées derrière des box Internet grand public.

Ici, ça sent plutôt l'instance déployée sur une VM directement connectée à Internet ou des déploiements PaaS réalisés à la truelle avec tout par défaut, dont la patte publique active. Et une absence de gestion de firewall.

D'ailleurs, je me demande si dans le lot il y en a hébergés par Atlas.

C'est le côté pervers du Cloud : en mode public, c'est pas cher et rapide à déployer. Par contre, dès qu'il s'agit de privatiser les instances, les coûts et la complexité augmentent et ça peut provoquer de mauvaises décisions.

Ça ou alors les organisations en mode "feature team" ou "squad" ou "devops" ou peu importe le nom à la mode à qui on file un "bac à sable" pour qu'elles soient autonomes et déploient avec peu de garde fous (pourtant les CSP ont des policies pour bloquer les conneries !). Et c'est comme ça qu'on se retrouve avec plein de ressources mal gérées ou mal configurées ouvertes aux quatre vents qui plombent au passage les dashboard finops.
votre avatar
En effet, je t'accorde qu'il y a peu de chance de trouver une base de prod derrière une box de FAI.

Je pense que l'on peut tout de même faire un parrallèle avec les conteneurs. La dernière fois que j'ai regardé du côté du plus célèbre d'entre eux, j'ai trouvé du NAT44 par défaut et l'ipv6 en supplément et l'impossibilité de faire une config sans IPv4. C'est donc du bricolage à mes yeux.

Donc, pour que le service du conteneur soit disponible, il faut ouvrir des portes et pour administrer ce conteneur, c'est la même adresse. Du coup, tout repose sur le pare-feux mais il est très permissif pour permettre aux prestataires de l'administrer même en télétravail et sans VPN.

En IPv6, tu peux ségréger les accès via des adresses de services et des adresses d'administration et tu peux facilement faire des règles plus restrictives pour l'administration.
votre avatar
À quand le tuto avec Next ? 🙂
Ou as tu un lien à proposer ? Je ne connais pas du tout et ça m'intéresse!

Moi j'ai fini par couper mes services maison à distance car je ne suis pas capable de réagir vite aux patchs (même si on parle de services et données isolés).
votre avatar
J'avais envisagé un tuto à un moment mais je suis sous l'eau à cause d'activités associatives.

Le premier problème concerne l'opérateur. Mise à part avec free, avoir des services hébergés chez soi en IPv6 est vite compliqué avec les gros FAI. Rien que pour cette partie, il faudrait consacrer un tuto dédié.

Après, il y a des choses assez simples à faire avec un raspberry pi pour annoncer un préfixe ULA sur ton réseau en évitant le gros piège de la route par défaut. Si tu ne met pas une durée de vie de 0 à la route par défaut de ton préfixe privé, tu va envoyer le trafic internet sortant vers ce préfixe et tu va perdre ton accès Internet.

Pour corser un peu les choses, on peut mettre le réseau IPv6 privé dans un vlan, ce qui présente quelques avantages :

  • La box va bloquer les paquets vlan donc le vlan sera non présent sur le wifi ;

  • Certaines box n'aiment pas voir des annonces de préfixe IPv6 et peuvent ne pas envoyer les leurs si un autre préfixe est annoncé (vu avec une freebox).



Sous linux, ajouter un vlan est tellement simple qu'il n'est pas nécessaire d'écrire quoi que ce soit. Sous windows, il faut passer par une bidouille du sous-système linux en ajoutant un pont réseau et une carte réseau virtuelle reliée au VLAN. Largement de quoi faire un tuto.

Une fois le préfixe ULA annoncé sur ton LAN, tu peux commencer à basculer tes services dessus.

Avec un serveur et des machines virtuelles ou conteneurs, tu peux passer à l'étape suivante: la délégation de préfixe. Là encore, c'est simple avec free et plus complexe avec les autre gros FAI.
votre avatar
Cela change selon le FAI à cause des Box ? Je suis sur une Box Fritz moi, car chez un petit opérateur suisse laissant plus de liberté sur le matériel (Green, en Suisse)
votre avatar
Merci de me rappeler que la francophonie ne s'arrête pas à la frontière de la France métropolitaine. :D

Il faut juste que tu te renseigne pour savoir si ton opérateur te laisse un préfixe global IPv6 constant ou s'il est potentiellement variable d'une connexion à une autre.

Si tu es dans le premier cas, c'est simple et tu peux te prendre un domaine pour tes services. Le .ovh est le moins cher de tous et de très loin. Tu pourras y placer les noms de service associés aux adresses de services que tu attribueras.

Sinon, il va falloir opter pour un service de dns dynamique.

Si tu ne passe pas par des enregistrements DNS, tu as la possibilité d'obtenir des certificats SSL associés à des adresses IPv6 publiques mais cela ne fonctionne que si ton préfixe est stable.

Les adresses de services IPv6 sont en général très simple et souvent basés sur le port correspondant par simplicité. Exemple typique pour un site web : [préfixe IPv6]::443

Pour un ssh par contre, il va être préférable de composer une adresse machine aléatoire pour éviter les scan d'adresse trop faciles.

Si tu veux t'attaquer à la délégation de préfixes, il faut savoir combien de préfixes 64 bits tu disposes. Chez free, c'est 8 au total alors que la box se voit attribué un /60. Chez d'autres opérateurs, s'est jusqu'à 256 mais avec des complications qui rendent ces préfixes difficilement utilisables. Mais le mieux est de commencer avec une architecture simple.
votre avatar
Merci beaucoup! Je vais regarder tout ça en 2026. Merci et bonne année!
votre avatar
Ta solution n'est pas une solution universelle. Binder ta Mongo sur une ULA uniquement signifie que le process n'a pas, sans bidouilles, accès à Internet.
votre avatar
En quoi est-ce un problème qu'un serveur de base de donnée n'ait pas accès à Internet ?
Vraie question.
votre avatar
Sur une base de donnée, je pense pas que ca pose vraiment problème.

Ce que j'ai dit, c'est que ta solution n'est pas universelle. Ca marchera pas pour un process qui a besoin de se connecter à Internet.

Vis à vis d'un firewall correctement configuré, je vois pas l'avantage.

Et attention aussi au faux sentiment de protection. Une exfiltration de donnée est toujours possible via le DNS par exemple. Si la Mongo demande nom_prenom_numérodeCB.mondomaine.tld, c'est l'OS qui fera la query avec sa GUA.
votre avatar
Ca marchera pas pour un process qui a besoin de se connecter à Internet.
Proxy filtrant sur whitelist dans ce cas, ou firewall de niveau 7.

Le deuxième cas devient courant à cause des registries type Docker et compagnie pour des clusters Kubernetes privés, par exemple.

(même si je ne vois pas quel process sur un serveur de BDD voudrait aller sur Internet)
votre avatar
Ta solution n'est pas une solution universelle. Binder ta Mongo sur une ULA uniquement signifie que le process n'a pas, sans bidouilles, accès à Internet.
Je ne connais pas Mongo DB mais, en ce qui concerne mariadb ou mysql, on a en général un serveur d'api en php ou autre pour faire la com extérieure donc la base n'as pas besoin d'être vue de l'extérieur.

Après, on parle d'IPv6 donc ta machine ou ton conteneur qui fait tourner la base mongodb ou tout autre chose, peut avoir des adresses globales et ULA en //. Si un service a besoin d'avoir un accès sortant sur Internet, il n'a pas besoin d'une bidouille pour cela.
votre avatar
Pas à cause d’une faille, mais d’un défaut de configuration avec des administrateurs qui laissaient les bases accessibles depuis n’importe quelle adresse IP.
C'est le firewall protégeant le serveur qu'il faut configurer pour interdire toute adresse IP non autorisée à accéder à la base de données et pas simplement le logiciel MongoDB.
Ça aurait aussi protégé contre cette faille !
votre avatar
C'est le firewall protégeant type qui déploie le serveur qu'il faut configurer
Fixed :p
votre avatar
Et beh... tant que les boites embaucheront n'importe qui pour faire de l'admin sys (et là on parle du niveau 0 de l'administration système...), ça continuera à se produire.
Sincèrement, si une Mongo est accessible depuis le net en direct, le problème, ce n'est pas la faille de sécu, mais le gars qui a fait ça.

Je sais pas si ca a été évoqué dans la news linkée (que je n'ai pas lu), mais si j'étais un hackeur, je scannerais le net pour me garder un inventaire des instances applicatives de toute type dispo sur le net, si possible avec les numéros de versions. Comme ça, le jour où une faille de sécu comme celle-ci sort, bah j'ai pu qu'à l'exploiter immédiatement.
Pour dire que faire confiance au "mot de passe de la base", c'est juste attendre de se faire trouer.
Dès que l'exploit est publiée, c'est déjà trop tard. Le temps qu'un admin sys update la Mongo, y a déjà 10 hackeurs qui lui sont passée dessus.
votre avatar
Quand tu mets tout dans le cloud, tout devient plus ou moins accessible depuis internet, non ?
votre avatar
Pas du tout. Tous les cloud providers proposent des équivalents "cloud" aux vlans, vrf, firewalls, routeurs, etc... physique. Tu peux recréer une architecture cloud qui ressemble à une archi physique avec des firewalls, load balancer, des zones de sécurités dédiées pour séparer les frontend, les base de données, etc...

La fausse simplicité du "cloud" a malheureusement permis à plein de gens de faire encore plus n'importe quoi, encore plus rapidement. En quelques clics de souris, sans aucune connaissance, tu peux te créer des serveurs. Et malheureusement, ça fonctionne... ou en tout cas, ça rend un service. Et puis comme ça tourne, bah on laisse tourner comme ça.
votre avatar
Censys-arin scanne justement le net en permanence en mode /0. J'ai bloqué ces AS sur mes firewall:

AS398324, CENSYS-ARIN-01, US
AS398705, CENSYS-ARIN-02, US
AS398722, CENSYS-ARIN-03, US

Amis ou ennemis, je m'en fou, ils n'ont rien à faire chez moi.
votre avatar
Les pirates ont ciblé la période où ils savaient que tout le monde serait en vacances.
votre avatar
En tout cas, c'est sympa de pouvoir emprunter la DeLorean de Next.
En relisant l'article de 2015 sur l'open bar MongoDB, on tombe sur quelques commentaires croustillants, à commencer par @SébastienGavois qui se fait pourrir pour avoir parsemé le texte de "MangoDB".

Ou bien :
Et mes serveurs à la maison c’est du flan ?
Ben, si t’as 100 pékins qui se connectent dessus, oui, c’est un peu du flan
C'est quoi le plafond en pékins pour faire parti du réseau internet !:zarb:
Bon j'ai pas fait les 167 commentaires non plus, faut dire que la moulinette de Next passée par là, nous force à plisser un peu les yeux tel un disciple de Tank se forgeant au déchiffrement de la Matrice en temps réel.
votre avatar
MongolDB, ça aurait pu être un sous-titre. 50/50 avec les admins de la dite base, encore et toujours.
votre avatar
La véritable faille consiste à laisser des BD directement connectées à un réseau public.
Le correctif est humain. La remédiation consiste à donner des moyens/investir, et non plus simplement "coûter".
votre avatar
Normalement, la base d'un service Web est l'architecture trois tiers :

Un serveur Web de présentation (Apache ou Ngnix)
Un serveur de base de données (MySQL, MariaDB, ou MongoDB)

Un navigateur avec éventuellement du JavaScript (Firefox, Chrome, Brave, Safari, ...)

C'est le serveur Web qui doit être accessible par Internet (avec éventuellement un répartiteur de charge si il ya beaucoup de traffic).

Le serveur de base de données ne DOIT être accessible que par le serveur Web.

Mais ça, c'était avant la mode du Cloud public.
votre avatar
C'est pas souvent que je vois le navigateur considéré comme élément d'une architecture trois tiers. Surtout qu'il n'est pas maîtrisé.

D'habitude, c'est front (exposé), back (pas censé être exposé) et db (encore moins censé être exposé).

En Cloud on peut privatiser les ressources pour éviter de les exposer, justement.