
Exploit de preuve de concept en Go pour CVE-2025-14847 (MongoBleed), une vulnérabilité de divulgation de mémoire MongoDB. Confectionne des documents BSON malformés pour divulguer la mémoire non initialisée du serveur via des messages d'erreur.
Ce dépôt contient une preuve de concept en Go pour CVE-2025-14847, une vulnérabilité de divulgation mémoire de MongoDB communément appelée Mongobleed.
Cette PoC est une réimplémentation en Go de l'exploit Python original par Joe Desimone, disponible ici :
https://github.com/joe-desimone/mongobleed
L'exploit exploite une faille de décompression zlib et d'analyse BSON pour fuiter la mémoire non initialisée d'un serveur MongoDB vulnérable.
Lisez le billet de blog - https://saereya.github.io/posts/mongobleed-cve-2025-14847/
CVE-2025-14847 est causée par une gestion incorrecte des messages OP_MSG compressés dans MongoDB. En forgeant un document BSON malformé avec une longueur de document gonflée et en l'enveloppant dans un message OP_COMPRESSED, le serveur peut lire au-delà des limites du tampon décompressé.
Cela peut amener MongoDB à interpréter la mémoire résiduelle comme des noms de champs BSON, qui sont ensuite renvoyés dans les messages d'erreur. Répéter ce processus avec différents décalages peut fuiter des fragments de la mémoire du serveur.
Cette PoC :
OP_COMPRESSEDLes données fuites sont extraites de chaînes d'erreur telles que :
field name '...'type <n>Cette vulnérabilité affecte des versions spécifiques de MongoDB antérieures au correctif officiel.
Consultez les avis de sécurité de MongoDB pour connaître les plages de versions exactes.
Compilation :
go build -o mongobleed
Exécution :
./mongobleed --host <target> --port 27017
Indicateurs optionnels : --min-offset : Longueur de document BSON de départ (par défaut : 20) --max-offset : Longueur de document BSON de fin (par défaut : 8192)
[*] MongoBleed - CVE-2025-14847
[*] Targetting localhost:27017
[*] Offset: 20 -> 8192
[+] offset= 117 len= 51: ssions^\u0001f\bD\\��A6�;7\u0003��V%\u0019\u001a9ip
[+] offset= 119 len= 51: ssions^\u0001f\bD\\��A6�;7\u0003��V%\u0019\u001a9ip
[+] offset= 120 len= 51: ssions^\u0001f\bD\\��A6�;7\u0003��V%\u0019\u001a9ip
[+] offset= 121 len= 51: ssions^\u0001f\bD\\��A6�;7\u0003��V%\u0019\u001a9ip
Ce code est fourni à des fins éducatives et de recherche uniquement.
N'exécutez pas cet outil contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas l'autorisation explicite de tester. Une utilisation non autorisée peut être illégale et contraire à l'éthique.