事件经过
在 vLLM 0.22.0 之前,激活函数加载器使用基于断言的安全检查来验证从模型配置中加载的函数名称。当解释器在优化模式(python -O 或 PYTHONOPTIMIZE=1)下运行时,Python 的 assert 语句会被无声剥离。未经身份验证的攻击者可以发布具有精心设计的激活函数名称的恶意 HuggingFace 模型;当 vLLM 在优化模式下加载模型时,断言检查被跳过,任意代码在服务器上执行。CVSS 7.5 高。
影响分析
这创建了一类新颖的攻击:HuggingFace Hub 上的中毒公共模型可以无声地对任何加载它的 vLLM 服务器进行 RCE — 无需身份验证或直接网络访问。攻击者可以针对自动拉取新的或微调模型的 MLOps 管道。这是对推理基础设施的模型供应链攻击。
攻击途径
攻击者发布具有精心设计的激活函数配置的恶意 HuggingFace 模型;以 PYTHONOPTIMIZE=1 运行的 vLLM 加载它并在没有身份验证的情况下执行攻击者代码
受影响系统
vLLM < 0.22.0 在启用 Python 优化时运行
缓解措施
升级到 vLLM 0.22.0。避免以 python -O 或 PYTHONOPTIMIZE=1 运行 vLLM。将模型源限制为受信任的注册表。修复:https://github.com/vllm-project/vllm/commit/b3c7ffcab82c2439726f8cb213800f6f38c023d3