Kubeflow Dashboard /api/workgroup/env-info 未授权访问漏洞复现
Kubeflow Dashboard /api/workgroup/env-info 未授权访问漏洞复现
0x00 漏洞概述
Kubeflow 是 Google 推出的开源机器学习工具包,旨在让 Kubernetes 上的机器学习工作流变得简单、可移植和可扩展。Kubeflow Central Dashboard 是 Kubeflow 的核心管理界面,用于管理和监控机器学习工作流、实验和模型训练任务;按官方文档描述,它应为经过认证的 Web 界面,作为机器学习平台各组件 UI 的统一入口。
该系统 /api/workgroup/env-info 接口存在未授权访问漏洞:接口对未认证请求不返回 401,而是直接返回系统环境信息,攻击者无需任何认证即可获取集群配置、Kubeflow 版本等敏感数据,这些信息可能被进一步用于后续攻击。该漏洞评分为 6.0(中危),公开渠道未提供 CVE 编号,本文不作推测。
0x01 影响版本
- 产品:Kubeflow Central Dashboard
- 受影响接口:
/api/workgroup/env-info(GET) - 触发条件:未认证请求即可触发,无需任何 Cookie、令牌或请求头
- 受影响版本:公开渠道未提供权威版本信息,本文不作推测。官方仓库 v1.7.0 源码中该接口行为已确认存在,凡部署并对外暴露该接口的实例均在风险范围内。
- 资产识别特征:页面标题为「Kubeflow Central Dashboard」。
0x02 漏洞原理与利用链
从官方仓库 v1.7.0 源码转述(来源为公开仓库源码链接):Central Dashboard 后端在 server.ts 中将 /api/workgroup 路径挂载到工作组 API 路由,其中 api_workgroup.ts 定义了 /env-info 接口,其处理逻辑为:已认证请求返回完整 profile 环境信息,未认证请求则不拒绝访问,而是走基础环境信息分支,直接返回基础环境数据。
问题正出在这一分支设计上:未认证请求本应被拒绝,实现中却降级返回环境信息,导致该接口在未配置强制认证的部署中可被任意访问。泄露内容包括 isClusterAdmin(当前访问者是否为集群管理员)标记、platform 对象中的 kubeflowVersion 版本信息等集群配置数据——这类信息可直接用于识别目标环境版本与权限结构,为进一步攻击提供侦察素材。
利用链只有一步:未认证直接 GET 该接口。判定条件为响应状态码 200,响应体包含 isClusterAdmin 与 "platform":{"kubeflowVersion" 字段,且不包含 < 字符——最后一项用于排除返回 HTML 登录页的情况(未命中漏洞时接口可能被重定向至登录页面)。
0x03 复现过程
以下请求包为依据判定逻辑转述的示例(Host 以占位符示意;本漏洞无验证目标地址存档,无响应正文可引用):
GET /api/workgroup/env-info HTTP/1.1
Host: kubeflow-target.example请求不携带任何 Cookie、令牌或自定义请求头。命中时,响应状态码为 200,响应体为结构化环境信息数据,其中包含 isClusterAdmin 标记与 "platform":{"kubeflowVersion":...} 版本字段等集群配置内容;若响应为含 HTML 标签的页面(如登录页),则表明该实例未命中此问题。
该接口为只读信息接口,复现过程不修改任何数据,但返回的版本与配置信息可为后续攻击提供目标画像,验证仅应在获得明确授权的环境中进行。
0x04 检测与修复建议
检测建议:
1. 排查资产中是否存在对外暴露的 Kubeflow Central Dashboard(页面标题「Kubeflow Central Dashboard」),确认 /api/workgroup/env-info 是否可未认证访问;
2. 在访问日志中检索未携带认证凭证却命中该接口且返回 200 的记录;
3. 关注响应体同时包含 isClusterAdmin 与 kubeflowVersion 的未认证请求;
4. 对外暴露实例可直接发起一次未认证 GET 验证:返回 JSON 环境数据即命中,返回登录页或 401 则未命中。
修复建议:
1. 在所有受保护的资源上添加认证检查,未认证请求一律拒绝,移除对未认证请求降级返回环境信息的分支逻辑;
2. 使用会话管理验证用户权限,配置中间件进行统一的认证拦截;
3. 限制对 /api/workgroup/env-info 接口的访问权限;
4. 网络层面避免将 Kubeflow Dashboard 直接暴露于公网,通过服务网格与访问控制策略收敛入口。
0x05 总结
该漏洞源于接口对未认证请求的降级处理:本应拒绝的请求被返回了基础环境信息,单个无认证 GET 请求即可读取 Kubeflow 版本与集群配置。单独看泄露面有限(中危),但在真实攻击链中,这类环境信息往往被用于挑选后续利用路径,且攻击零交互、零痕迹成本。建议使用单位排查 Dashboard 的公网暴露面,落实统一认证拦截,并对该接口的历史访问做回溯审计。
参考资料:

Wayyt 8小时前
最新评论