流行的开源事件流平台 Apache Kafka 中新发现的一个漏洞可能允许攻击者在未经授权的情况下访问敏感信息。该漏洞被追踪为 CVE-2024-31141,影响了多种 Apache Kafka 客户端版本,可能会对依赖该平台进行关键数据操作的数千家公司造成影响。
该漏洞源于 Apache Kafka 客户端处理配置数据的方式。根据官方安全公告,“Apache Kafka 客户端接受用于自定义行为的配置数据,并包含 ConfigProvider 插件,以便操作这些配置”。这种机制虽然旨在提高灵活性,但却无意中为攻击者打开了一扇门。
该公告进一步解释说:“Apache Kafka 还提供了 FileConfigProvider、DirectoryConfigProvider 和 EnvVarConfigProvider 实现,其中包括从磁盘或环境变量读取数据的功能。在 Apache Kafka 客户端配置可由不可信任方指定的应用中,攻击者可使用这些 ConfigProviders 读取磁盘和环境变量中的任意内容。”
从本质上讲,这意味着在某些配置中,恶意行为者可以利用这一漏洞访问敏感文件和环境变量。在 SaaS 产品等环境中,这一点尤其令人担忧,该公告指出:“在 Apache Kafka Connect 中,这一漏洞可能会被用于从 REST API 访问升级到文件系统/环境访问,这可能是不可取的。”
Apache Kafka 项目敦促用户立即采取行动降低风险。他们建议将 kafka-clients 升级到 3.8.0 或更高版本,并设置 JVM 系统属性 “org.apache.kafka.automatic.config.provider=none”。
不过,该公告还提醒 Kafka Broker、Kafka MirrorMaker 2.0、Kafka Streams 和 Kafka 命令行工具的用户不要设置该系统属性。此外,建议使用特定 ConfigProvider 实现的 Kafka Connect 用户实施 “allowlist.pattern ”和 “allowed.paths ”来限制访问。