
Laboratoire d'exploitation, docker et scanner de code pour la vulnérabilité mongobleed CVE-2025-14847 ainsi que les outils de synchronisation Phoenix Security
CVE-2025-14847 | CVSS 8.7 (Élevée) | Divulgation mémoire non authentifiée
📖 Documentation complète • 🔬 Analyse technique • ⚡ Commandes rapides
MongoBleed est une vulnérabilité critique de divulgation mémoire dans la couche de transport réseau de MongoDB qui permet à des attaquants distants non authentifiés d'exfiltrer des données mémoire sensibles du tas, sans aucun identifiant ni interaction utilisateur.
| Catégorie | Description |
|---|
| Type d'attaque | Divulgation mémoire distante et non authentifiée |
| Cause racine | La décompression Zlib retourne la taille du tampon alloué au lieu de la longueur réelle des données |
| Données exposées | Mots de passe de bases de données, clés API, jetons de session, identifiants AWS, état interne du serveur |
| Sévérité | CVSS 8.7 (Élevée) – accessible via le réseau, aucune authentification requise |
| Exploitation | Exploitation active observée dans la nature depuis le 28 décembre 2025 |
| Branche | Vulnérable | Corrigée | Action |
|---|---|---|---|
| 8.2.x | 8.2.0 → 8.2.2 | 8.2.3 | Mettre à jour immédiatement |
| 8.0.x | 8.0.0 → 8.0.16 | 8.0.17 | Mettre à jour immédiatement |
| 7.0.x | 7.0.0 → 7.0.27 | 7.0.28 | Mettre à jour immédiatement |
| 6.0.x | 6.0.0 → 6.0.26 | 6.0.27 | Mettre à jour immédiatement |
| 5.0.x | 5.0.0 → 5.0.31 | 5.0.32 | Mettre à jour immédiatement |
| 4.4.x | 4.4.0 → 4.4.29 | 4.4.30 | Mettre à jour immédiatement |
| ≤4.2.x | Toutes les versions | Aucune | ⚠️ Fin de vie – Migrer vers une version prise en charge |
| Aspect | Détails |
|---|---|
| Qu'est-ce qui est vulnérable | La couche de transport réseau du serveur MongoDB utilisant la compression zlib |
| Sévérité | Élevée (CVSS 8.7/7.5) |
| Impact | Divulgation à distance et non authentifiée de mémoire tas non initialisée |
| Pourquoi c'est important | Les fragments divulgués contiennent des mots de passe de base de données, des clés secrètes AWS et des états internes du serveur |
| Statut de l'exploit | Preuve de concept (PoC) publique "mongobleed" validée et en circulation |
| Que faire aujourd'hui | Mettre à jour vers les versions corrigées immédiatement ou désactiver la compression zlib |
La vulnérabilité réside dans la couche de transport réseau de MongoDB (message_compressor_zlib.cpp) où une faille critique dans la logique de décompression zlib permet à des attaquants non authentifiés de fuiter des données mémoire sensibles du serveur.
// CODE VULNÉRABLE (avant correction)
counterHitDecompress(input.length(), output.length());
return {output.length()}; // ❌ Retourne la taille du TAMPON ALLOUÉ
// CODE CORRIGÉ (après correction)
counterHitDecompress(input.length(), output.length());
return length; // ✅ Retourne la longueur RÉELLE des données décompressées
┌─────────────────────────────────────────────────────────────────────────────┐
│ Vecteur d'attaque MongoBleed │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ATTAQUANT MONGODB VULNÉRABLE │
│ │ │ │
│ │ 1. Envoie un message OP_COMPRESSED │ │
│ │ uncompressedSize: 8192 (MENSONGE) │ │
│ │ données réelles: ~100 octets │ │
│ │────────────────────────────────────> │
│ │ │ │
│ │ 2. Alloue un tampon de 8192 octets │
│ │ 3. Décompresse ~100 octets │
│ │ 4. BOGUE : retourne buffer.length() = 8192 │
│ │ 5. L'analyseur BSON lit la mémoire non initialisée│
│ │ │ │
│ │ 6. Réponse d'erreur avec la mémoire│ │
│ │ divulguée comme "noms de champs" │ │
│ │<──────────────────────────────────── │
│ │ │ │
│ 🔓 DONNÉES DIVULGUÉES : │ │
│ - Clés API, mots de passe, jetons │
│ - État interne de MongoDB │
│ - Configurations WiredTiger │
│ - Informations système /proc │
│ - Données de connexions client │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
| Date | Événement |
|---|---|
| 15 décembre 2025 | Vulnérabilité identifiée ; ticket interne SERVER-115508 |
| 19 décembre 2025 | Correctif publié, CVE-2025-14847 divulgué |
| 24 décembre 2025 | Parc MongoDB Atlas corrigé |
| 26 décembre 2025 | PoC public "mongobleed" publié |
| 28 décembre 2025 | Exploitation observée dans la nature |
🔬 Voir l'analyse technique → pour l'anatomie détaillée de la vulnérabilité, la construction de l'exploit et les méthodes de détection.
mongobleed-exploit-CVE-2025-14847/
├── exploit/ # 🔴 Laboratoire d'exploit
│ ├── docker-compose.yml # Instances MongoDB vulnérable + corrigée
│ ├── mongobleed.py # PoC d'exploit de fuite mémoire
│ ├── init/init-mongo.js # Données de test sensibles
│ ├── test-exploit.sh # Script de test du laboratoire
│ └── README.md # Documentation du laboratoire
│
├── scanner/ # 🌐 Scanner réseau
│ ├── mongobleed_scanner.py # Scanner de vulnérabilité IP/domaine
│ ├── sample-targets.txt # Fichier d'exemple de cibles
│ └── README.md # Documentation du scanner
│
├── code-scan/ # 📂 Scanner de code
│ ├── main.py # Point d'entrée CLI
│ ├── scanners/ # Scanners Docker, Python, Infrastructure
│ ├── models/ # Modèles Finding, Vulnerability
│ ├── integrations/ # Envoi vers Phoenix Security
│ └── README.md # Documentation du scanner de code
│
└── original-exploit/ # 📚 Référence du PoC original
cd exploit
# Démarrer le laboratoire (instances vulnérable + corrigée)
docker-compose up -d
sleep 10
# Tester l'instance vulnérable (devrait fuiter de la mémoire)
python3 mongobleed.py --host localhost --port 27017
# Tester l'instance corrigée (NE DEVRAIT PAS fuiter de mémoire)
python3 mongobleed.py --host localhost --port 27018
# Test complet du laboratoire
./test-exploit.sh
cd scanner
# Scanner un hôte unique
python3 mongobleed_scanner.py 192.168.1.100
# Scanner une plage réseau
python3 mongobleed_scanner.py 192.168.1.0/24
# Scanner depuis un fichier
python3 mongobleed_scanner.py @sample-targets.txt --json --output results.json
cd code-scan
# Scanner un projet pour détecter les versions vulnérables de MongoDB
python3 main.py scan /path/to/project
# Scanner et envoyer vers Phoenix
python3 main.py scan /path/to/project --upload-phoenix
# Exécuter les tests
python3 main.py test
# === LABORATOIRE D'EXPLOIT ===
# Démarrer le laboratoire
cd exploit && docker-compose up -d && sleep 10
# Exécuter l'exploit (instance vulnérable)
python3 exploit/mongobleed.py --host localhost --port 27017
# Exécuter l'exploit (instance corrigée - vérifier l'absence de fuites)
python3 exploit/mongobleed.py --host localhost --port 27018
# === SCANNER RÉSEAU ===
# Scanner le laboratoire local
python3 scanner/mongobleed_scanner.py localhost:27017 localhost:27018
# Scanner un réseau
python3 scanner/mongobleed_scanner.py 192.168.1.0/24 --threads 20
# === SCANNER DE CODE ===
# Scanner le répertoire courant
python3 code-scan/main.py scan .
# Scanner avec sortie JSON
python3 code-scan/main.py scan /path/to/project --json --output results.json
# Scanner et envoyer vers Phoenix
python3 code-scan/main.py scan /path/to/project --upload-phoenix
[*] mongobleed - CVE-2025-14847 Fuite mémoire MongoDB
[*] Cible : localhost:27017
[*] Scan des offsets 20-8192...
[+] offset= 117 len= 39: ssions^\u0001�r��*YDr���
[+] offset=16582 len=1552: MemAvailable: 8554792 kB\nBuffers: ...
[+] offset=18731 len=3908: MONGOBLEED_PRIVATE_KEY_DATA_123...
[!] LA CIBLE EST VULNÉRABLE À CVE-2025-14847
[*] Total divulgué : 8748 octets
[*] Fragments uniques : 42
[!] Secrets potentiels détectés :
• Clé privée RSA
• Secret de laboratoire
[*] Scan de 254 cibles avec 10 threads...
[1/254] 192.168.1.10:27017 - 8.2.2 [VULNÉRABLE - CONFIRMÉ]
[2/254] 192.168.1.11:27017 - 8.2.3 [SÉCURISÉ]
RÉSUMÉ :
----------------------------------------
Nombre total de cibles scannées : 254
Hôtes joignables : 12
Instances MongoDB : 8
VULNÉRABLES : 3
================================================================================
RAPPORT DU SCANNER DE CODE MONGOBLEED - CVE-2025-14847
================================================================================
🚨 VERSIONS VULNÉRABLES DE MONGODB DÉTECTÉES
1. [email protected]
Fichier : /project/docker-compose.yml
Type : docker-compose
Raison : La version 8.2.2 est dans la plage vulnérable [8.2.0 - 8.2.2]
✅ Mettre à jour vers : 8.2.3
CVE : CVE-2025-14847
| Priorité | Action | Détails |
|---|---|---|
| 🔴 1 | Mettre à jour MongoDB | Mettre à jour vers les versions corrigées (8.2.3, 8.0.17, 7.0.28, 6.0.27, 5.0.32, 4.4.30) |
| 🟠 2 | Désactiver zlib | mongod --setParameter networkMessageCompressors=snappy,zstd |
| 🟡 3 | Isolation réseau | Blocage du port 27017 par pare-feu, utiliser VPN/réseau privé |
| 🔵 4 | Rotation des identifiants | Si exposés, faire pivoter tous les mots de passe de base de données, clés API, jetons |
Tous les scanners prennent en charge l'envoi des résultats vers la plateforme Phoenix Security :
# Créer la configuration
python3 code-scan/main.py create-config
cp .phoenix.config.TEMPLATE .phoenix.config
# Modifier avec vos identifiants
# [phoenix]
# client_id = votre_client_id
# client_secret = votre_client_secret
# api_base_url = https://api.securityphoenix.cloud
# Scanner et envoyer
python3 code-scan/main.py scan /path/to/project --upload-phoenix
⚠️ IMPORTANT : Cette boîte à outils est fournie uniquement pour des tests de sécurité autorisés et des fins de recherche.
| Document | Description |
|---|---|
| 📖 DOCUMENTATION.md | Documentation complète du projet avec installation, utilisation et mesures correctives |
| 🔬 TECHNICAL_ANALYSIS.md | Anatomie approfondie de la vulnérabilité, mécanisme d'exploitation et détection |
| ⚡ QUICK_COMMANDS.md | Commandes prêtes à copier-coller pour tous les outils |
| Outil | Documentation | Description |
|---|---|---|
| 🔴 Laboratoire d'exploit | exploit/README.md | Laboratoire MongoDB vulnérable/corrigé basé sur Docker |
| 🌐 Scanner réseau | scanner/README.md | Scanner de vulnérabilité IP/CIDR |
| 📂 Scanner de code | code-scan/README.md | Scanner de code source pour versions vulnérables |
Pour tests de sécurité autorisés uniquement. Utilisez de manière responsable.
Dernière mise à jour : Décembre 2025