威胁动态

CVE-2026-102895 — GPUStack 让未认证攻击者冒充管理员:解析与对策(CVSS 9.8,已在 2.2.0 修复,已被利用)

CVE-2026-102895 让未认证攻击者可冒充管理员(pip gpustack 2.2.0 之前,CVSS 9.8)。已报告在野利用,并已列入 CISA KEV。已在 2.2.0 修复。

发布于 2026-11-10 更新于 2026-11-10 最后核实 2026-11-10 3 分钟阅读
本页目录

这是一篇针对 GPUStack(在 GPU 集群上运行 AI 模型并配置 GPU 实例的开源管理器)中漏洞的解析:未认证的一方可以冒充管理员。本文以防御视角,说明发生什么、谁受影响以及如何应对,不涉及攻击步骤。

公告摘要
CVE
CVE-2026-102895(GitHub 公告 GHSA-gj9m-f8ph-pmhr)
严重度
CVSS v3.1 9.8(Critical)。公告、CVE 记录和 NVD 的数值相同
类型
认证不当(CWE-287)。公告还列出了通过欺骗绕过认证(CWE-290)和来源验证错误(CWE-346)
前提条件
无需认证;能通过网络到达 GPUStack 即可。据公告,默认设置即受影响
受影响版本
pip gpustack 2.2.0 之前
修复
gpustack 2.2.0
日期
公告:2026年7月31日 / CVE 记录:2026年11月4日
利用情况
公告报告了在野利用。2026年11月9日列入 CISA KEV(期限11月12日)
9.8
CVSS v3.1
无需认证
攻击者所需条件
2.2.0
修复版本
11月12日
KEV 期限

放任不管的风险

据公告,未认证的一方可以更改用户、模型和 worker 设置,并创建可从任何来源地址使用的管理员 API 密钥。worker 和云服务商的凭据可被读取,与仅限管理员的功能结合,会导致 worker 主机上的代码执行。公告称已观察到在野利用。CISA 对这一 KEV 条目标注需要取证分诊。

这是什么样的漏洞

在默认设置下(force_auth_localhost 为 false),GPUStack 会把来自同一台机器(loopback)的请求当作内置管理员。这本是为了在本地使用时省去认证的麻烦。问题在于,判断「是不是同一台机器」的依据可以被外部影响。

据公告,有两条无需认证就能成为管理员的路径。第一条是同一主机上的反向代理:一旦代理转发到 GPUStack,即使是外部请求,在 GPUStack 看来也来自 loopback。这是常见的自托管布局,不需要任何请求头或凭据。第二条是请求转发头;公告称,客户端提供的值可以让请求看起来像来自 loopback。本站不描述如何利用。

修复前(2.2.0 之前)

  • loopback 来源无需认证即成为管理员
  • 在同一主机的反向代理之后,外部流量看起来像 loopback
  • 转发头可以伪造来源

2.2.0 中的变化

  • 移除了把 loopback 当作管理员的路径
  • 加强了对客户端 IP 和转发头的处理
  • 只接受来自已认证的可信网关的真实客户端 IP 头

影响范围

项目内容
产品GPUStack(开源 GPU 集群管理器)
受影响的软件包pip gpustack
受影响版本2.2.0 之前(公告和 CVE 记录)
修复版本2.2.0
现实中的危害公告:已观察到针对 v2.1.1 的在野利用
可能发生的事所有管理员操作(更改用户、模型、worker)、创建管理员 API 密钥、读取 worker 和云服务商凭据、worker 上的代码执行(据公告和 KEV)
  • 据公告,默认设置即受影响。
  • 公告只列出了 pip 软件包 gpustack。如果您以其他方式安装(例如容器镜像),请向供应商确认版本信息。

如何确认自己是否受影响

1

确认 GPUStack 的版本

查看已安装的 gpustack 版本。2.2.0 之前的版本受影响。如果有生产、预发布和开发环境,请逐一检查(资产清点清单)。

2

确认外部能否到达

确认 GPUStack 的端口或其前面的反向代理,能否从互联网等不可信范围到达。据公告,这个缺陷可以通过同一主机的反向代理起作用,所以位于代理之后并不能说明安全。

3

检查 force_auth_localhost 设置

确认 force_auth_localhost 是否为 true。据公告,默认值为 false,这会使存在漏洞的路径保持开放。

今天该做什么

1

更新到 2.2.0(最优先)

把 gpustack 更新到 2.2.0 或更高版本。KEV 期限为2026年11月12日。

2

在此之前,收窄入口

公告列出的临时办法如下,它们都不能代替更新。

  • 把 force_auth_localhost 设为 true,使 loopback 请求也需要认证。
  • 确保反向代理或网关不会让外部流量看起来像 loopback,并在边缘剥离客户端提供的 X-GPUStack-Real-IP 头。
  • 让 API 远离不可信网络,置于 VPN 或边缘认证之后。
3

更新后,审计管理员 API 密钥

据公告,创建出来的管理员 API 密钥此后可以从任何来源地址使用。更新不会移除它,所以请列出现有的 API 密钥,并删除创建者或创建时间您不认识的密钥。尤其要查看更新之前创建的密钥。

4

撤销并重新签发凭据

公告称 worker 凭据和云服务商的密钥可能被读取。请撤销并重新签发您在 GPUStack 中登记的内容:worker 连接信息、云服务商密钥、模型下载令牌等。作为本站的补充建议,即使没有发现被滥用的痕迹也请重新签发。请参阅漏洞修复实务手册和安全基础:.env 与 API 密钥。

5

检查设置和 worker

检查不熟悉的自定义后端、用户和模型设置。在 worker 上,检查不熟悉的进程和对外连接。由于已确认存在利用,请把任何不熟悉的配置都视为可能的入侵迹象。如果发现可疑之处,请隔离该 worker,并考虑重建。

利用情况

  • 公告称,已观察到针对 v2.1.1 部署的在野利用。该利用归功于一位第三方报告者。
  • CISA 于2026年11月9日把它列入 KEV(已确认存在利用的漏洞目录;版本 2026.11.09),期限为11月12日。勒索软件活动中的使用情况列为未知,取证分诊列为需要。
  • NVD 记录的状态为 Analyzed。CVSS v3.1 为 9.8,与公告和 CVE 记录相同。
  • 公告记载了数位独立报告这一漏洞的报告者。

本站的观点:不要因为是内部网络或在代理之后,就不做认证

这与其说是编码上的失误,不如说是设计假设有缺陷。「来自本机的请求就是我」这种想法,在前面放上反向代理的瞬间就崩溃了。同一主机上的反向代理,还是添加 HTTPS 和对外发布服务时被广泛使用的方式,所以让人觉得受到保护的部署,反而成了入口。

AI 平台的管理控制台把模型运行时、GPU 资源和云端凭据集中在一处。如果它接受未认证的请求,损害就不会止于一台机器,而会通过云端凭据向外扩散。请用认证来保护管理控制台和管理 API,而不是靠位置或来源地址。设计上信任转发头时,也会出现同类问题(XFF 伪造与可信代理)。更新之后,只有清理了已创建的 API 密钥和可能被读取的凭据,工作才算完成。

信息来源

最后确认:2026年11月10日。

延伸阅读

FAQ

QCVE-2026-102895 是什么?
A

这是 GPUStack 中的漏洞,GPUStack 是在 GPU 集群上运行 AI 模型的管理器。据公告,在默认设置下,来源看起来是同一台机器(loopback)的请求会被当作内置管理员。在同一主机的反向代理之后,外部请求看起来也是这样,所以未认证的一方可以执行管理员操作。CVSS v3.1 评分为 9.8。

Q哪些版本受影响,修复版本是什么?
A

pip 软件包 gpustack 2.2.0 之前的版本。修复版本是 2.2.0;据公告,它移除了把 loopback 来源当作管理员的路径,并加强了对客户端 IP 和转发头的处理。公告只把 pip 软件包 gpustack 列为受影响对象。如果您以其他方式安装(例如容器镜像),请向供应商确认版本信息。

Q有没有被利用?
A

有。公告称,已观察到针对 v2.1.1 部署的在野利用。CISA 于2026年11月9日把它列入 KEV,期限为11月12日。KEV 将勒索软件活动中的使用情况列为未知。

Q暂时无法更新,有临时办法吗?
A

公告列出三项。把 force_auth_localhost 设为 true,使 loopback 请求也需要认证。确保反向代理或网关不会让外部流量看起来像 loopback,并在边缘剥离客户端提供的 X-GPUStack-Real-IP 头。让 API 远离不可信网络,置于 VPN 或边缘认证之后。这些都不能代替更新。

Q只更新就够了吗?
A

不够。已列出的影响包括创建管理员 API 密钥,以及读取 worker 和云服务商的凭据。据公告,创建出来的 API 密钥此后可以从任何来源地址使用。更新不会移除它们,所以请审计 API 密钥,并撤销、重新签发凭据。

Q放在代理后面就安全吗?
A

不安全。代理的部署方式本身就是触发条件。据公告,在同一主机的反向代理之后,外部请求会显示为来自 loopback。不要因为是内部网络或在代理之后,就让管理控制台或管理 API 不经认证。