🔴 严重 | CVE-2026-63764 — lmdeploy's OpenAI-compatible API server contains a...
🟠 【深度分析】高危安全漏洞:CVE-2026-63764
CVSS 评分: 高危(7.7)🟠 状态: Awaiting Analysis 发布时间: 2026-07-21
🔍 技术细节速览
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2026-63764 |
| CVSS 评分 | 7.7 🟠 |
| 严重程度 | 高危 |
| CVSS 向量 | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:N/SC:H/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X |
| CWE 分类 | CWE-918 |
| 发布时间 | 2026-07-21 |
| 最后更新 | 2026-07-23 |
| 状态 | Awaiting Analysis |
| 数据来源 | disclosure@vulncheck.com |
⚠️ CVSS 评分:7.7(高危)
CVSS 向量(4.0):AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:N/SC:H/SI:N/SA:N
攻击路径:网络远程 | 复杂度:低 | 权限要求:无 | 用户交互:无
影响:对安全域的机密性产生高影响(SC:H),对受害者系统的机密性、完整性、可用性无直接危害。
漏洞概述
CVE-2026-63764 是 LMDeploy(一个用于大语言模型部署的高性能工具包)中存在的服务器端请求伪造(SSRF)漏洞,严重等级为高危。该漏洞存在于 connection.py 的 _load_http_url 函数中,由于在处理 HTTP 重定向时未重新验证目标主机的 IP 地址,导致攻击者可以诱使服务器向内部网络(如私有 IP 或云元数据端点)发起请求,进而泄露内部服务敏感信息。
漏洞影响 LMDeploy 至 0.14.0 版本,已在 Git 提交 03c3130 中修复。
受影响组件与版本
- 受影响项目:LMDeploy
- 受影响版本:≤ 0.14.0(含 0.14.0)
- 修复版本:commit
03c3130及之后版本(官方未发布包含该修复的新版本号,建议关注代码库更新) - 主要受影响模块:
connection.py中的_load_http_url函数,该函数用于处理chat completions接口中用户提交的image_url参数。
漏洞原理分析
技术成因
LMDeploy 在处理用户提供的远程图像 URL(image_url)时,会调用 _load_http_url 函数通过 HTTP 获取图像数据。该函数在发起请求前会执行私有 IP 防护检查,即验证原始 URL 解析后的 IP 地址是否属于私有地址段(如 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 或 127.0.0.0/8 等)。若原始 URL 指向公网地址,则允许请求。
然而,函数并未对 HTTP 重定向后的目标主机再次执行 IP 地址验证。攻击者可以:
- 在自己的公网服务器上部署一个 HTTP 响应,返回
3xx状态码并设置Location头指向内部地址(如127.0.0.1:8080、169.254.169.254(云元数据端点)或内网其他服务)。 - 将服务器地址作为
image_url提交给 LMDeploy 的chat completions端点。 - 服务端通过初始验证确认原始地址为公网 IP,随后发起请求并跟随重定向,最终访问到内部服务。
- 攻击者可以通过模型 pipeline 的返回内容(如错误信息、图像处理结果)获取内部服务的响应数据,导致信息泄露。
攻击向量
- 攻击入口:
/chat/completions等对外开放的 API 端点,允许未授权用户提交image_url。 - 利用条件:无需认证(CVSS PR:N),无需用户交互(CVSS UI:N),攻击复杂度低(CVSS AC:L),无需攻击者具备网络特殊位置(CVSS AT:N)。
- 潜在目标:云环境中的元数据 API(如 AWS
169.254.169.254、GCPmetadata.google.internal)、内网 Web 服务、敏感管理接口等。
代码逻辑细节(基于公开信息推断)
根据漏洞描述,关键缺陷在于:
def _load_http_url(url):
# 检查原始 URL 的 IP 地址
if is_private_ip(resolve_host(url)):
raise SSRFGuardException("Private IP not allowed")
# 发起请求并允许重定向
response = requests.get(url, allow_redirects=True)
# 未对重定向后的最终 URL 再次进行 IP 检查
这种仅检查首跳地址的方式是经典的不完整 SSRF 防护模式,攻击者通过中间人重定向即可绕过。
影响评估
| 评估维度 | 分析结果 |
|---|---|
| 攻击复杂度 | 低 - 只需部署一个简单的重定向服务器,无需特殊知识或工具 |
| 所需权限 | 无 - 攻击者无需身份认证 |
| 用户交互 | 无 - 攻击完全自动化 |
| 影响范围 | 可能涉及内部网络中的多个敏感服务 |
| 机密性影响 | 高 - 可通过 SSRF 读取云元数据(如云平台凭证、内部网络拓扑)或内网 web 服务的敏感文档 |
| 完整性影响 | 无(直接危害) - 攻击者不能修改服务器数据 |
| 可用性影响 | 无(直接危害) - 不导致拒绝服务 |
| 安全域影响 | 高 - 破坏了边界安全,使内部网络暴露给外部攻击者 |
该漏洞的核心威胁在于 突破网络隔离。在云原生环境中,LMDeploy 实例通常具有访问云元数据端点(169.254.169.254)的权限,攻击者利用此 SSRF 可窃取云服务提供商临时凭据(如 AWS 的 role-credentials),进而横向移动至整个云账号。
修复建议
官方修复
- Git 提交:
03c3130 - 修复方式:在跟随 HTTP 重定向后,对最终的
LocationURL 重新进行私有 IP 检查,或限制跟随重定向的域名/IP 范围。 - 建议:立即更新代码至包含该提交的版本。若官方发布新版本,请升级至 ≥ 修复版本号的发行版。
临时缓解措施(无法立即升级时)
限制出站网络:
- 在 LMDeploy 服务器所在网络边界(如防火墙、NAT 网关)禁止服务器访问私有 IP 地址范围(
10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,127.0.0.0/8,169.254.0.0/16等)。 - 仅允许访问明确授权的公网资源。
- 在 LMDeploy 服务器所在网络边界(如防火墙、NAT 网关)禁止服务器访问私有 IP 地址范围(
修改配置禁用
image_url功能:- 如果业务不需要远端图像加载,可修改 API 逻辑,拒绝处理
image_url参数,或仅支持本地 base64 编码的图像数据。
- 如果业务不需要远端图像加载,可修改 API 逻辑,拒绝处理
添加重定向验证:
- 在代码中补全以下逻辑(示例伪代码):
response = requests.get(url, allow_redirects=False) while response.status_code in (301, 302, 303, 307, 308): new_url = response.headers['Location'] if is_private_ip(resolve_host(new_url)): raise SSRFGuardException("Redirect to private IP blocked") response = requests.get(new_url, allow_redirects=False)
- 在代码中补全以下逻辑(示例伪代码):
Web 应用防火墙(WAF)规则:
- 添加规则检测
image_url参数中的重定向特征(如Location头指向内网地址的响应),但鉴于请求由服务器端发起,WAF 可能需要部署在出站方向。
- 添加规则检测
参考资料
- CVE 详情:https://nvd.nist.gov/vuln/detail/CVE-2026-63764
- CWE-918:Server-Side Request Forgery (SSRF) — https://cwe.mitre.org/data/definitions/918.html
- LMDeploy 项目:https://github.com/InternLM/lmdeploy
- 修复 commit:
03c3130(请查阅项目 Git 历史) - 安全公告来源:disclosure@vulncheck.com
⚠️ 现有信息不足以确定:本分析未获得源代码的具体实现,部分代码片段为基于漏洞描述的合理推演。建议安全团队直接审查
connection.py中_load_http_url函数的实际逻辑以确认细节。
撰写日期:2026-07-22
分析基于 NVD 披露数据及 CVSS 4.0 向量