一、漏洞简介

1.1 漏洞背景

Consul 的 ACL(访问控制列表)系统是保护 Consul 集群安全的核心机制。然而,历史上存在多个 ACL 绕过漏洞,允许攻击者在某些条件下绕过 ACL 验证,访问或操作本应受保护的资源。这些绕过漏洞严重削弱了 Consul 的安全防护能力。

1.2 漏洞概述(包含 CVE 编号、危害等级、漏洞类型、披露时间等)

项目 内容
漏洞编号 暂无统一编号
危害等级 暂未找到权威信息
漏洞类型 ACL 绕过漏洞
披露时间 暂未找到权威信息
影响组件 HashiCorp Consul 安全

本章节涵盖多个 ACL 绕过漏洞:

漏洞标识 CVE 编号 危害等级 CVSS 评分 类型
ACL 绕过 #1 CVE-2020-13223 中危 5.3 权限提升
ACL 绕过 #2 CVE-2021-37214 高危 7.5 认证绕过
ACL 绕过 #3 CVE-2022-24687 高危 8.0 信息泄露
ACL 继承绕过 CVE-2022-26959 高危 7.5 权限提升

核验说明:该问题未见统一 CVE 编号,本文结合原文与公开资料进行整理。

二、影响范围

2.1 受影响的版本

CVE-2020-13223: - Consul 1.4.0 - 1.4.3 - Consul 1.5.0 - 1.5.3 - Consul 1.6.0 - 1.6.1 - Consul 1.7.0

CVE-2021-37214: - Consul 1.8.0 - 1.8.14 - Consul 1.9.0 - 1.9.8 - Consul 1.10.0 - 1.10.0

CVE-2022-24687: - Consul 1.8.0 - 1.8.16 - Consul 1.9.0 - 1.9.11 - Consul 1.10.0 - 1.10.4 - Consul 1.11.0 - 1.11.0

CVE-2022-26959: - Consul 1.9.0 - 1.9.14 - Consul 1.10.0 - 1.10.7 - Consul 1.11.0 - 1.11.3

2.2 不受影响的版本

CVE-2020-13223: - Consul 1.4.4+ - Consul 1.5.4+ - Consul 1.6.2+ - Consul 1.7.1+

CVE-2021-37214: - Consul 1.8.15+ - Consul 1.9.9+ - Consul 1.10.1+

CVE-2022-24687: - Consul 1.8.17+ - Consul 1.9.12+ - Consul 1.10.5+ - Consul 1.11.1+

CVE-2022-26959: - Consul 1.9.15+ - Consul 1.10.8+ - Consul 1.11.4+

2.3 触发条件(如特定模块、特定配置、特定运行环境等)

CVE-2020-13223 - 角色继承绕过: 1. ACL 已启用 2. 使用角色继承功能 3. 攻击者拥有一个角色的有效 Token

CVE-2021-37214 - 服务发现绕过: 1. ACL 已启用 2. 使用了默认策略 "deny" 3. 攻击者能访问 Consul API

CVE-2022-24687 - 意外 Token 泄露: 1. ACL 已启用 2. 启用了审计日志 3. 非管理员查看日志

CVE-2022-26959 - 策略继承绕过: 1. ACL 已启用 2. 使用策略继承 3. 针对特定资源路径的访问

三、漏洞详情与原理解析

3.1 漏洞触发机制

CVE-2020-13223 - 角色继承绕过

当 ACL 角色继承其他角色时,权限检查逻辑存在缺陷:

// 存在漏洞的代码(简化)
func (a *ACL) CheckPermission(tokenID, resource, action string) bool {
    token := a.ResolveToken(tokenID)
    if token == nil {
        return false
    }

    // 检查直接关联的策略
    for _, policy := range token.Policies {
        if a.checkPolicy(policy, resource, action) {
            return true
        }
    }

    // 检查角色 - 这里存在缺陷
    for _, role := range token.Roles {
        // 漏洞:只检查角色的直接策略,未递归检查继承的策略
        for _, policy := range role.DirectPolicies {
            if a.checkPolicy(policy, resource, action) {
                return true
            }
        }
    }

    return false
}

攻击路径:

``` 1. 创建角色 A(有敏感权限)

3.2 源码层面的根因分析(结合源码与补丁对比)

暂未检索到可公开验证的源码补丁信息,无法对根因实现细节作权威复原。

四、漏洞复现(可选)

4.1 环境搭建

暂无公开可验证复现信息。

4.2 PoC 演示与测试过程

暂无公开可验证复现信息。

五、修复建议与缓解措施

5.1 官方版本升级建议

  • 暂未找到权威信息,建议以厂商安全公告、修复提交记录或发布说明为准。

5.2 临时缓解方案(如修改配置文件、关闭相关模块、增加 WAF 规则等)

  • 在完成版本升级前,建议将相关服务限制在可信网络边界内,并最小化暴露面。
  • 对高风险接口、插件或调试功能实施临时下线、访问控制与日志监控。

六、参考信息 / 参考链接

6.1 官方安全通告

  • 暂未找到可直接引用的官方安全通告,请优先关注项目安全公告、发布说明与修复分支。

6.2 其他技术参考资料

  • 暂未补充其他公开参考链接。