🔴 严重 | CVE-2026-15704 — In Eclipse BaSyx Go Components versions up to and ...
🔴 【深度分析】严重安全漏洞:CVE-2026-15704
CVSS 评分: 严重(9.8)🔴 状态: Received 发布时间: 2026-07-24
🔍 技术细节速览
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2026-15704 |
| CVSS 评分 | 9.8 🔴 |
| 严重程度 | 严重 |
| CVSS 向量 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE 分类 | CWE-180,CWE-284,CWE-863 |
| 发布时间 | 2026-07-24 |
| 最后更新 | 2026-07-24 |
| 状态 | Received |
| 数据来源 | emo@eclipse.org |
好的,我将根据您提供的 NVD 数据生成一篇专业的漏洞深度分析文章。
CVE-2026-15704 深度分析:Eclipse BaSyx Go 组件 ABAC 授权绕过漏洞
CVSS 评分:9.8(严重)
CVSS 向量: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
危害等级: 极高,可导致完全权限丧失与数据泄露
漏洞概述
Eclipse BaSyx Go Components 是一个用于工业自动化领域的开源组件集合,实现了资产管理壳(Asset Administration Shell, AAS)相关的 RESTful 服务。在版本 1.0.0 及之前,当启用基于属性的访问控制(ABAC)中间件时,存在一个授权绕过漏洞。
漏洞根源在于 ABAC 中间件的路由校验逻辑与底层 HTTP 路由器(使用 Chi 框架)对尾部斜杠(trailing slash)的处理不一致。攻击者通过在受保护 API 路径后添加一个斜杠(例如 /shells/),可以使 ABAC 中间件无法匹配到相应的路由规则而跳过授权检查,随后 HTTP 路由器自动去除斜杠并将请求转发至原本需要保护的处理程序,导致 未授权访问任意 API 端点。该漏洞可被网络侧未认证或未授权攻击者利用,实现任意资源的读取、创建、修改、删除及上传操作,严重威胁系统安全。
受影响组件与版本
| 受影响软件 | 版本范围 | 说明 |
|---|---|---|
| Eclipse BaSyx Go Components | ≤ 1.0.0 | 所有启用 ABAC 功能的部署 |
| 涉及的服务组件 | — | AAS Repository、Submodel Repository、AAS Registry、Submodel Registry、Concept Description Repository、Discovery Service、AAS Environment upload 等 |
修复版本: v1.0.1(已发布)
漏洞原理分析
技术细节
1. 路由器配置与中间件顺序
在 BaSyx Go 的共享路由器配置中,使用了 Chi 框架的 middleware.StripSlashes 中间件。该中间件的作用是自动去除请求 URL 末尾的斜杠,并将请求重定向到对应的无斜杠路由。例如,用户请求 GET /shells/,经过 StripSlashes 处理后,实际被路由到 GET /shells 的处理函数。
然而,ABAC 授权中间件的放置顺序在 StripSlashes 之前。这意味着 ABAC 中间件首先接收到 原始 URL(带尾部斜杠),然后尝试在其中查找匹配的授权规则。
2. ABAC 规则匹配的缺陷
ABAC 中间件内部维护了一套基于 HTTP 方法+路径的授权规则表。通常规则条目定义为不带尾部斜杠的形式(如 /shells)。当攻击者发送带斜杠的请求时,ABAC 中间件会尝试匹配 /shells/,但找不到对应的规则。根据代码逻辑(NVD 描述指出:“If ABAC route lookup did not find a matching slash-suffixed route, the request was passed onward”),中间件在此情况下 未拒绝请求,而是直接放行,将请求继续传递给后续 HTTP 路由器。
随后,StripSlashes 中间件剥离尾部斜杠,将请求正确映射到受保护的 GET /shells 处理程序。该处理程序被错误地执行,但未经过任何 ABAC 授权过滤。
3. 攻击向量
攻击者只需在任意受保护 API 路径末尾添加一个 / 即可绕过授权检查。例如:
/shells/→ 绕过 ABAC,执行原本需要授权的操作/submodels/→ 类似绕过/aas/→ 同理
由于该漏洞不要求认证(AV:N,PR:N),且攻击复杂度低(AC:L),利用条件宽松,攻击者可直接构造特制 HTTP 请求。
CWE 映射
- CWE-180(Incorrect Behavior Order: Validate before Canonicalize):授权检查在 URL 规范化(去除尾部斜杠)之前执行,导致验证时使用原始 URL,而实际执行时使用规范化 URL,二者不一致。
- CWE-284(Improper Access Control):授权绕过导致访问控制失效。
- CWE-863(Incorrect Authorization):授权判定逻辑存在缺陷。
影响评估
| 评估维度 | 描述 |
|---|---|
| 攻击向量 (AV:N) | 远程网络攻击,无需物理接触 |
| 攻击复杂度 (AC:L) | 仅需在 URL 末尾添加一个斜杠,无需特殊工具或知识 |
| 权限要求 (PR:N) | 无需任何身份认证 |
| 用户交互 (UI:N) | 不需要用户参与 |
| 影响范围 | 机密性、完整性、可用性完全丧失(C:H/I:H/A:H) |
| 实际威胁 | 攻击者可枚举所有 API 路径,读取或篡改资产壳信息、配置、上传恶意文件等。在工业自动化场景中,可能导致流程中断或数据失窃 |
利用条件
- 目标服务部署了 Eclipse BaSyx Go Components 1.0.0 或更早版本
- 启用了 ABAC 中间件(否则授权功能本就不存在,但漏洞本身是 ABAC 的绕过)
- 网络可达(通常暴露于内网或公网)
潜在后果
- 未授权读取所有 AAS 实例、子模型、寄存器数据
- 增删改任意 AAS 对象
- 上传恶意附件或覆盖合法文件
- 在认证缺失的情况下执行管理员级别的操作
修复建议
官方补丁
升级至 Eclipse BaSyx Go Components v1.0.1。该版本修复了尾部斜杠处理顺序问题,确保 ABAC 中间件在规范化后的 URL 上进行授权检查。
临时缓解措施(如无法立即升级)
- 修改路由器中间件顺序:将
middleware.StripSlashes放置在 ABAC 中间件之前,使 URL 在到达 ABAC 时已去掉尾部斜杠。(需自行评估代码库兼容性,可能破坏其他功能) - 配置反向代理(如 Nginx):在反向代理层统一去掉所有尾部斜杠后再转发到后端,避免后端直接暴露该漏洞。
location / { rewrite ^(.*)/$ $1 permanent; # 或使用proxy_pass 时添加前缀 proxy_pass http://backend; } - 启用 WAF 规则:对包含尾部斜杠的敏感 API 请求进行拦截或告警。
- 限制网络访问:若无法修补,建议将 BaSyx 服务部署在不信任网络不可达的位置,或增加认证网关。
监控与检测
- 审计日志中搜索大量带尾部斜杠的 HTTP 请求,特别是针对
/shells/、/submodels/等已知端点。 - 检查是否存在未授权操作记录(如匿名用户创建/删除资源)。
参考资料
- CVE 官方页面:https://nvd.nist.gov/vuln/detail/CVE-2026-15704
- CWE-180 (Incorrect Behavior Order: Validate before Canonicalize):https://cwe.mitre.org/data/definitions/180.html
- CWE-284 (Improper Access Control):https://cwe.mitre.org/data/definitions/284.html
- CWE-863 (Incorrect Authorization):https://cwe.mitre.org/data/definitions/863.html
- Eclipse BaSyx 官方安全公告:待厂商发布(建议关注 https://projects.eclipse.org/projects/iot.basyx)
- Chi 框架中间件文档:
middleware.StripSlashes说明:https://github.com/go-chi/chi
声明:本文基于 NVD 公布的现有信息进行分析,未对未公开的技术细节进行编造。所有分析均来源于官方漏洞描述及合理推断。