发布日期: 2026 年 9 月 13 日
风险等级: 高危(High)
漏洞编号: CVE-2026-90553
CVSS: 约 7.8(High;GitHub Advisory 记 CVSS 3.1)
相关公告: GHSA-3c86-2m5g-59q7
披露时间: 约 2026 年 8 月 28 日(GitHub Advisory);NVD 收录约 2026 年 9 月 12 日
一、漏洞概述
vLLM 是广泛使用的高性能大模型推理与服务框架,生产环境常以官方镜像 vllm/vllm-openai 部署为 OpenAI API 兼容 的推理网关。
经官方确认,0.28.0 之前 的 vLLM 在 LlavaOnevision2 处理器加载路径存在缺陷:_load_ov2_processor 通过 transformers.dynamic_module_utils.get_class_from_dynamic_module(...) 加载远端处理器类时,虽传入 trust_remote_code=trust_remote_code,但该 transformers 接口 并无 trust_remote_code 参数,取值被吞入 **kwargs 后 实际无效。结果是:即便调用方显式设置 trust_remote_code=False,仍会无条件缓存并 import 模型仓库中的处理器模块,其 顶层代码会立即执行。
攻击者可构造恶意 LlavaOnevision2 模型,在例如 processing_llava_onevision2.py / video_processing_llava_onevision2.py 中植入任意 Python 代码;服务端一旦加载 / 服务该模型,代码即以 vLLM 进程(或容器)权限 执行。因 LlavaOnevision2ForConditionalGeneration 属于 vLLM 内置架构,配置加载阶段无需 remote code,上游也不会因 trust_remote_code=False 提前拒绝——处理器加载成为未设防入口。
重要说明: 这是典型的 远程 / 供应链式代码执行(CWE-94 / CWE-829):威胁面主要来自「从不可信来源拉取或挂载模型」,而非单纯对外暴露 HTTP 端口即可被未认证扫描。同类问题亦见于官方提及的 CVE-2026-22807 / CVE-2026-27893 一类「恶意模型触发 RCE」场景。
二、漏洞状态
统计截止: 2026 年 9 月 13 日(UTC+8)
| 项目 | 状态 |
|---|---|
| 漏洞细节 | 已公开(GitHub Security Advisory / NVD) |
| 漏洞类型 | 代码注入 / 从不信任控制域引入功能(CWE-94、CWE-829) |
| 官方补丁 | 已发布(≥ 0.28.0) |
| 临时缓解 | 未升级前 勿加载不受信模型仓库 |
| 在野大规模利用 | 暂未发现公开大规模在野攻击报道 |
三、影响范围
1. 版本与发行形态
| 发行形态 | 受影响范围 |
|---|---|
pip 包 vllm | < 0.28.0 |
官方镜像 vllm/vllm-openai(及基于其二次构建的镜像) | 镜像内 vLLM < 0.28.0 的 tag |
| 自建 / 发行版打包的 vLLM 推理服务 | 运行时版本 < 0.28.0 |
修复线: vLLM ≥ 0.28.0(含 pip 与容器内实际安装版本)。
2. 典型受影响场景
- 使用 vLLM /
vllm-openai提供 多模态推理,并加载 LlavaOnevision2 相关模型 - 从 Hugging Face、网盘、第三方仓库、用户上传路径 等 不可信或未充分审计 来源拉取 / 挂载模型
- 容器化部署的 OpenAI 兼容推理网关,运维或平台允许挂载社区模型后直接
serve - 误以为已设置
trust_remote_code=False即可安全评估社区多模态模型
风险边界提示:
- 触发依赖「加载 / 服务含恶意处理器脚本的 LlavaOnevision2 模型」;纯文本、未走该处理器路径的工作负载实际触发面更小,但 仍建议统一升级。
- CVSS 向量中攻击途径记为 Local、需用户交互(加载恶意模型),在「平台代用户拉模型」场景下,常表现为 供应链 / 运营侧加载,影响等同于服务侧 RCE。
四、修复建议
1. 升级 vLLM 至 ≥ 0.28.0(推荐)
| 形态 | 最低建议安全版本 |
|---|---|
pip vllm | ≥ 0.28.0 |
Docker 镜像 vllm/vllm-openai | 选用 镜像内 vLLM ≥ 0.28.0 的 tag(部署前务必核对) |
Docker Hub 官方镜像: vllm/vllm-openai
轩辕镜像对应路径: xuanyuan.cloud/zh/r/vllm/vllm-openai(请在站内打开核对当前可用 tag)
拉取示例(请将标签替换为你确认 已含 ≥ 0.28.0 的版本):
bashdocker pull docker.xuanyuan.run/vllm/vllm-openai:v0.28.0
具体 tag 以 Hub / 轩辕站内列表及官方 Release 为准;勿仅凭浮动标签(如
latest)假定已修复。生产环境固定为已审计的安全版本,并在部署前核对镜像内实际 vLLM 版本。
2. 版本自查
bash# pip / 宿主机环境 python -c "import vllm; print(vllm.__version__)" # 容器内核对(将 <container> 换成实际容器名) docker exec <container> python -c "import vllm; print(vllm.__version__)"
若输出 小于 0.28.0,应尽快更换镜像 tag 或升级安装包后重启推理服务。
五、临时缓解措施
在无法立即完成升级前,建议:
-
禁止加载不受信模型仓库
未升级前,勿从未知 Hugging Face 仓库、未审计压缩包或用户任意上传路径加载 LlavaOnevision2 / 同类多模态模型。 -
收紧模型准入
仅允许预审白名单模型与只读挂载;禁止运行时随意pull社区权重。对模型目录做完整性校验(校验和 / 签名)后再挂载。 -
降低进程权限与网络面
以非特权用户、只读根文件系统、最小 capabilities 运行容器;限制出站网络,降低一旦被植入代码后的横向移动与外连风险(不能替代升级)。 -
仍优先安排正式升级
临时措施无法修复「trust_remote_code形同虚设」的根因;正式路径是升到 ≥ 0.28.0。
六、与轩辕镜像用户的相关说明
轩辕镜像提供的是 镜像加速与拉取服务,不替代 你对 vLLM 应用版本的升级与模型准入策略。
- 使用轩辕拉取
vllm/vllm-openai不会自动变成安全版本;请将镜像 tag 固定为 已含修复的版本(建议镜像内 ≥ 0.28.0),并在部署前核对容器内vllm.__version__。 - 可通过 轩辕镜像专业版 加速拉取 Docker Hub 上的
vllm/vllm-openai,站内路径见:vllm/vllm-openai。 - 配置与排错可参考:轩辕镜像使用手册、镜像拉取 FAQ。
七、参考链接
- NVD:CVE-2026-90553
- GitHub Security Advisory:GHSA-3c86-2m5g-59q7
- Docker Hub:vllm/vllm-openai
- 轩辕站内镜像页:vllm/vllm-openai
- 项目主页:https://github.com/vllm-project/vllm
轩辕镜像安全团队
2026 年 9 月 13 日
评论交流
免责声明
本博客文章所提供的内容、技术方案、配置示例及部署指南等信息,仅供学习交流和技术参考使用。文章内容基于发布时的技术环境和版本信息编写,可能因时间推移、技术更新或环境差异而存在不适用的情况。
用户在参考本博客内容进行部署操作前,应当充分了解相关技术风险,并建议在测试环境中进行充分验证和测试,确认无误后再考虑在生产环境中使用。生产环境部署前,请务必进行数据备份,并制定相应的回滚方案。
用户因使用本博客内容进行部署操作而产生的任何损失、数据丢失、系统故障、安全风险或其他问题,均由用户自行承担全部责任。轩辕镜像官方不对因使用本博客内容而产生的任何直接或间接损失承担责任。
本免责声明的最终解释权归轩辕镜像官方所有。
