🔴 【深度分析】严重安全漏洞: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 上进行授权检查。

临时缓解措施(如无法立即升级)

  1. 修改路由器中间件顺序:将 middleware.StripSlashes 放置在 ABAC 中间件之前,使 URL 在到达 ABAC 时已去掉尾部斜杠。(需自行评估代码库兼容性,可能破坏其他功能)
  2. 配置反向代理(如 Nginx):在反向代理层统一去掉所有尾部斜杠后再转发到后端,避免后端直接暴露该漏洞。
    location / {
        rewrite ^(.*)/$ $1 permanent;   # 或使用proxy_pass 时添加前缀
        proxy_pass http://backend;
    }
    
  3. 启用 WAF 规则:对包含尾部斜杠的敏感 API 请求进行拦截或告警。
  4. 限制网络访问:若无法修补,建议将 BaSyx 服务部署在不信任网络不可达的位置,或增加认证网关。

监控与检测

  • 审计日志中搜索大量带尾部斜杠的 HTTP 请求,特别是针对 /shells//submodels/ 等已知端点。
  • 检查是否存在未授权操作记录(如匿名用户创建/删除资源)。

参考资料


声明:本文基于 NVD 公布的现有信息进行分析,未对未公开的技术细节进行编造。所有分析均来源于官方漏洞描述及合理推断。