内容提要
Kafka UI是一个流行的开源Web应用程序,用于管理和监控Apache Kafka集群。作者发现了Kafka UI中的三个远程代码执行(RCE)漏洞,并分享了他的发现。这些漏洞已在0.7.2版本中修复。作者建议用户及时升级到修复的版本。
延伸解读
默认配置下的安全风险
Kafka UI 在默认配置下不需要身份验证,这意味着任何能访问其 Web 界面的人都可以读取和写入 Kafka 数据。许多实例因此被部署在内网甚至暴露在互联网上,攻击者可能利用这一点作为进入内网的跳板。即使数据本身不敏感,这种未授权访问也可能导致更严重的后果,例如通过后续漏洞实现远程代码执行。
漏洞利用的共性条件
三个 RCE 漏洞的利用大多需要特定条件:CVE-2023-52251 要求集群中至少有一个包含消息的主题,但攻击者可通过 API 创建;CVE-2024-32030 和 CVE-2023-25194 则要求 dynamic.config.enabled 设置为 true,而该设置在许多教程中被建议开启。这些条件在真实环境中并不罕见,增加了漏洞的可利用性。
修复与缓解措施
所有漏洞已在 Kafka UI 0.7.2 版本中修复,用户应尽快升级。对于无法立即升级的情况,可考虑启用身份验证、限制网络访问、关闭 dynamic.config.enabled 以及使用 jdk.serialFilter 限制反序列化类。但需注意,这些缓解措施可能影响功能,需充分测试。
底层技术的安全启示
这些漏洞源于 Groovy 脚本、JMX 和 SASL JAAS 等 Java 特性被不当暴露给用户输入。尽管 JDK 已对 JMX 和 JNDI 攻击进行加固,但在特定条件下仍可被利用。这提醒开发者,在使用强大功能时应严格限制用户输入,并关注依赖库的安全更新。
Q&A
Kafka UI的主要功能是什么?
Kafka UI是一个开源Web应用程序,用于管理和监控Apache Kafka集群。
Kafka UI中发现了哪些远程代码执行漏洞?
发现了三个漏洞:CVE-2023-52251、CVE-2024-32030和CVE-2023-25194。
如何防止Kafka UI中的安全漏洞?
建议用户及时升级到0.7.2版本,并对用户输入进行严格限制。
CVE-2023-52251漏洞是如何被利用的?
攻击者可以通过Groovy脚本执行任意代码,利用消息过滤功能进行攻击。
Kafka UI的默认配置有什么安全隐患?
在默认配置下,Kafka UI不需要身份验证,导致许多实例未受保护。
Kafka UI的安全性依赖于什么?
Kafka UI的安全性依赖于对用户输入的严格限制,特别是在使用Groovy脚本和JMX等功能时。