Apache 软件基金会非常重视安全问题。由于 Apache ZooKeeper 项目的特定基础设施性质,我们长时间以来收到的报告不多,但这并不意味着我们没有对一些错误和漏洞感到担忧。如果您有任何疑虑或认为您已发现漏洞,建议您通过电子邮件地址 security@zookeeper.apache.org 与我们联系。在邮件中,请尝试提供问题的描述,最好提供重现步骤。请注意,此安全地址仅应用于未披露的漏洞。已知的公开问题应通过 jira 和邮件列表常规处理。请在公开披露任何安全问题之前,向项目安全地址报告。
ASF 安全团队维护一个页面,描述了如何处理漏洞,请访问他们的网页了解更多信息。
严重程度: 重要
受影响版本
描述
在 ZooKeeper Admin Server 中使用 IPAuthenticationProvider 时,可能存在通过欺骗进行的身份验证绕过——这仅影响在 ZooKeeper Admin Server 中实现的基于 IP 的身份验证。IPAuthenticationProvider 中客户端 IP 地址检测的默认配置(使用 HTTP 请求头)较弱,允许攻击者通过在请求头中欺骗客户端 IP 地址来绕过身份验证。默认配置会优先读取 X-Forwarded-For HTTP 头来获取客户端 IP 地址。X-Forwarded-For 请求头主要由代理服务器用于识别客户端,并且攻击者可以轻松欺骗该头部,伪造请求来自不同的 IP 地址。成功利用后,可以任意执行 Admin Server 命令,例如 snapshot 和 restore,这可能导致信息泄露或服务可用性问题。建议用户升级到版本 3.9.3,该版本修复了此问题。
致谢
4ra1n (报告者) Y4tacker (报告者)
参考资料
https://zookeeper.net.cn/ https://www.cve.org/CVERecord?id=CVE-2024-51504
严重程度: 严重
受影响版本
描述
由于缺少 ACL 检查,Apache ZooKeeper 在处理持久化 watchers 时存在信息泄露。它允许攻击者通过将持久化 watcher (addWatch 命令) 附加到攻击者已有权访问的父节点来监控子节点。ZooKeeper 服务器在触发持久化 watcher 时不会执行 ACL 检查,因此,触发 watch 事件的 znodes 的完整路径会暴露给 watcher 的所有者。重要的是要注意,此漏洞仅暴露路径,而不是 znode 的数据,但由于 znode 路径可能包含敏感信息(例如用户名或登录 ID),因此此问题可能很严重。
建议用户升级到修复此问题的版本 3.9.2 或 3.8.4。
致谢
周吉安(寒泉) zhoujian.zja@alibaba-inc.com (报告者)
参考资料
https://zookeeper.net.cn/ https://www.cve.org/CVERecord?id=CVE-2024-23944
严重程度: 严重
受影响版本
描述
Apache ZooKeeper 中通过用户控制的密钥进行授权绕过漏洞。如果在 ZooKeeper 中启用了 SASL Quorum Peer 身份验证 (quorum.auth.enableSasl=true),授权通过验证 SASL 身份验证 ID 中的实例部分是否在 zoo.cfg 服务器列表中列出。SASL 身份验证 ID 中的实例部分是可选的,如果缺失,例如 'eve@EXAMPLE.COM',则会跳过授权检查。结果,任意端点可以加入集群并开始向领导者传播伪造的更改,从而实质上赋予其对数据树的完整读写访问权限。Quorum Peer 身份验证默认情况下未启用。
建议用户升级到修复此问题的版本 3.9.1、3.8.3、3.7.2。
或者,确保集群的选举/Quorum 通信受到防火墙保护,这将缓解此问题。
有关正确的集群管理,请参阅文档了解更多详情。
致谢
Damien Diederen ddiederen@apache.org (报告者)
参考资料
https://www.cve.org/CVERecord?id=CVE-2023-44981
严重程度: 严重
厂商: The Apache Software Foundation
受影响版本: ZooKeeper 3.4.14 之前版本,ZooKeeper 3.5.0-alpha 到 3.5.4-beta。不受支持的 ZooKeeper 1.x 到 3.3.x 版本也可能受到影响。
描述: ZooKeeper 的 getACL() 命令在检索请求节点的 ACL 时不检查任何权限,并以明文形式返回 ACL Id 字段中包含的所有信息。DigestAuthenticationProvider 在 Id 字段中重载了用于用户身份验证的哈希值。因此,如果使用 Digest Authentication,未认证或无权限的用户通过 getACL() 请求将泄露未加盐的哈希值。
缓解措施: 使用 Digest 以外的身份验证方法(例如 Kerberos),或升级到 3.4.14 或更高版本(如果使用 3.5 分支,则升级到 3.5.5 或更高版本)。
致谢: 此问题由 Harrison Neal harrison@patchadvisor.com (PatchAdvisor, Inc.) 发现。
参考资料: https://issues.apache.org/jira/browse/ZOOKEEPER-1392
严重程度: 严重
厂商: The Apache Software Foundation
受影响版本: ZooKeeper 3.4.10 之前版本,ZooKeeper 3.5.0-alpha 到 3.5.3-beta。不受支持的 ZooKeeper 1.x 到 3.3.x 版本也可能受到影响。
描述: 当服务器尝试加入 Quorum 时,未强制执行身份验证/授权。结果,任意端点可以加入集群并开始向领导者传播伪造的更改。
缓解措施: 升级到 3.4.10 或更高版本(如果使用 3.5 分支,则升级到 3.5.4-beta 或更高版本)并启用 Quorum Peer 相互认证。
或者,确保集群的选举/Quorum 通信受到防火墙保护,这将缓解此问题。
有关正确的集群管理,请参阅文档了解更多详情。
致谢: 此问题由 Földi Tamás 和 Eugene Koontz 发现。
参考资料: https://issues.apache.org/jira/browse/ZOOKEEPER-1045 https://cwiki.apache.org/confluence/display/ZOOKEEPER/Server-Server+mutual+authentication https://zookeeper.net.cn/doc/current/zookeeperAdmin.html
严重程度: 中等
厂商: The Apache Software Foundation
受影响版本: ZooKeeper 3.4.0 到 3.4.9,ZooKeeper 3.5.0 到 3.5.2。不受支持的 ZooKeeper 1.x 到 3.3.x 版本也可能受到影响。
注意: 此时 3.5 分支仍处于测试阶段。
描述: 两个 four letter word 命令 "wchp/wchc" 对 CPU 密集型,如果被滥用,可能导致 ZooKeeper 服务器 CPU 利用率飙升,从而导致服务器无法服务合法的客户端请求。目前没有已知利用此漏洞的案例。
缓解措施: 这影响了客户端端口可公开访问的 ZooKeeper 集群,因此建议使用防火墙保护 ZooKeeper 集群。文档也已更新以澄清这一点。此外,提供了补丁 (ZOOKEEPER-2693) 以默认禁用 "wchp/wchc" 命令。- ZooKeeper 3.4.x 用户应升级到 3.4.10 或应用补丁。- ZooKeeper 3.5.x 用户应升级到 3.5.3 或应用补丁。
参考资料 [1] https://issues.apache.org/jira/browse/ZOOKEEPER-2693
严重程度: 中等
厂商: The Apache Software Foundation
受影响版本: ZooKeeper 3.4.0 到 3.4.8,ZooKeeper 3.5.0 到 3.5.2。不受支持的 ZooKeeper 1.x 到 3.3.x 版本也可能受到影响。
注意: 此时 3.5 分支仍处于 alpha 阶段。
描述: ZooKeeper C 客户端 shell "cli_st" 和 "cli_mt" 在使用 "cmd
缓解措施: 无论版本如何,重要的是使用功能齐全/受支持的 Java cli shell,而不是 C cli shell。
此补丁解决了此处报告的问题,但并未使客户端达到生产可用状态。社区目前没有计划使此客户端达到生产可用状态,并强烈建议用户迁移到 Java cli,仅将 C cli 用于演示目的。
致谢: 此问题由 Lyon Yang (@l0Op3r) 发现。
参考资料: Apache ZooKeeper 安全页面