一、漏洞简介¶
1.1 漏洞背景¶
etcd 的 gRPC API 层存在授权检查缺陷,导致多个 API 可以在未授权的情况下被调用。这些漏洞源于同一底层问题,影响多个 API 端点。
1.2 漏洞概述(包含 CVE 编号、危害等级、漏洞类型、披露时间等)¶
| 项目 | 内容 |
|---|---|
| 漏洞编号 | 暂无统一编号 |
| 危害等级 | 暂未找到权威信息 |
| 漏洞类型 | 多个 API 授权绕过漏洞 |
| 披露时间 | 暂未找到权威信息 |
| 影响组件 | etcd 安全 |
| 项目 | 内容 |
|---|---|
| CVE 编号 | 待分配(GHSA-q8m4-xhhv-38mg) |
| 危害等级 | 中等 |
| CVSS 评分 | 中危 |
| 漏洞类型 | 授权绕过 |
核验说明:该问题未见统一 CVE 编号,本文结合原文与公开资料进行整理。
二、影响范围¶
2.1 受影响的版本¶
- etcd < 3.4.42
- etcd < 3.5.28
- etcd < 3.6.9
2.2 不受影响的版本¶
- etcd >= 3.4.42
- etcd >= 3.5.28
- etcd >= 3.6.9
2.3 触发条件(如特定模块、特定配置、特定运行环境等)¶
- etcd 集群启用了认证
- gRPC API 暴露给不可信或部分可信的客户端
三、漏洞详情与原理解析¶
3.1 漏洞触发机制¶
未授权用户可以调用以下 API:
| API | 潜在影响 |
|---|---|
| MemberList | 获取集群拓扑、成员 ID 和端点信息 |
| Alarm | 触发告警,可能导致操作中断或 DoS |
| Lease APIs | 干扰 TTL 键和租约所有权 |
| Compact | 永久删除历史版本,影响 watch/审计/恢复 |
3.2 源码层面的根因分析(结合源码与补丁对比)¶
// gRPC API 层的授权检查缺陷(简化示意)
func (s *EtcdServer) MemberList(ctx context.Context, r *pb.MemberListRequest) (*pb.MemberListResponse, error) {
// 问题:缺少授权检查
// 应该在这里验证用户是否有权限调用此 API
return s.raftHandler.MemberList(ctx, r)
}
func (s *EtcdServer) Alarm(ctx context.Context, r *pb.AlarmRequest) (*pb.AlarmResponse, error) {
// 同样缺少授权检查
return s.raftHandler.Alarm(ctx, r)
}
修复补丁:
func (s *EtcdServer) MemberList(ctx context.Context, r *pb.MemberListRequest) (*pb.MemberListResponse, error) {
// 添加授权检查
if err := s.authStore.IsAdminPermitted(ctx); err != nil {
return nil, err
}
return s.raftHandler.MemberList(ctx, r)
}
四、漏洞复现(可选)¶
4.1 环境搭建¶
# 启动启用认证的 etcd
etcd --listen-client-urls http://localhost:2379 &
etcdctl user add root
etcdctl auth enable
4.2 PoC 演示与测试过程¶
# 未授权用户调用 MemberList
etcdctl --endpoints=http://localhost:2379 member list
# 漏洞版本:成功返回成员列表
# 修复版本:返回权限错误
# 未授权触发 Alarm
etcdctl --endpoints=http://localhost:2379 alarm activate
五、修复建议与缓解措施¶
5.1 官方版本升级建议¶
升级到以下版本之一: - etcd 3.6.9 - etcd 3.5.28 - etcd 3.4.42
5.2 临时缓解方案(如修改配置文件、关闭相关模块、增加 WAF 规则等)¶
网络层隔离:
# 限制只有可信组件可以访问 etcd
iptables -A INPUT -p tcp --dport 2379 -s 10.0.0.0/8 -j ACCEPT
iptables -A INPUT -p tcp --dport 2379 -j DROP
mTLS 认证:
etcd --client-cert-auth \
--trusted-ca-file /path/to/ca.crt
六、参考信息 / 参考链接¶
6.1 官方安全通告¶
6.2 其他技术参考资料¶
- 报告者:Isaac David, bugbunny.ai, Asim Viladi Oglu Manizada, Alex Schapiro, Ahmed Allam, Luke Francis, OLU-DEVX