【漏洞真实影响分析】Apache Kafka Connect 模块 JNDI 注入(CVE-2023-25194)

系列简介:漏洞真实影响分析是墨菲安全实验室针对热点漏洞的分析系列文章,帮助企业开发者和安全从业者理清漏洞影响面、梳理真实影响场景,提升安全应急响应和漏洞治理工作效率。
漏洞概述
Apache Kafka Connect 服务在 2.3.0 至 3.3.2 版本中,由于连接时支持使用基于 JNDI 认证的 SASL JAAS 配置,导致配置在被攻击者可控的情况下,可能通过 JNDI 注入执行任意代码。
此漏洞不影响 Kafka server(broker),Kafka Connect 服务通常用于在云平台中提供 Kafka 数据迁移、数据同步的管道能力,其默认 HTTP API 开放于 8083 端口。
因此建议对基于 Kafka Connect 提供的 Kafka 数据管道服务进行排查,判断是否存在配置可控的情况,对于受影响的服务应将 kafka-clients 升级至 3.4.0 及以上版本。
漏洞原理
Apache Kafka Connect 是 Kafka 中用于和其他数据系统传输数据的服务,其独立运行版本可以在 Kafka 发布包中通过bin/connect-standalone.sh
启动,默认会在 8083 端口开启 HTTP REST API 服务,可对连接器(Connector)的配置进行操作。

连接器(Connector)是用于连接其他数据源的模块,从 2.3.0 版本开始,为了增加连接器的可重用性和可扩展性,用户可修改 kafka 客户端的 SASL JAAS(授权服务) 配置或 SASL-based 安全协议。3.0.0 版本之后,Kafka Connect 标准化了 Kafka 与其他数据系统的集成,用户可方便地对 Kafka Connect 集群中的连接器属性进行配置。
将连接器中的 Kafka 客户端sasl.jaas.config
属性值设置为 com.sun.security.auth.module.JndiLoginModule(通过 producer.override.sasl.jaas.config
, consumer.override.sasl.jaas.config
或 admin.override.sasl.jaas.config
属性进行配置)时,如果连接器连接到攻击者可控的 LDAP 服务器时容易受到反序列化攻击。
为修复此漏洞,从 3.4.0 版本开始,添加了 org.apache.kafka.disallowed.login.modules 系统属性用于禁用 SASL JAAS 配置中不安全的登录模块,并且默认禁用 com.sun.security.auth.module.JndiLoginModule。

Aiven 云数据平台攻击场景案例
Aiven 是位于芬兰的数据库即服务(DBaaS)公司,提供了包括 Kafka、MySQL、ClickHouse 等在内的云数据服务。

其在 Kafka 中就提供了 Connect 服务,用于将数据通过不同的数据源导入导出 Kafka。
在创建 Connector 连接器时,可以自定义启动配置。

安全研究人员 jarij 发现可以通过database.history.producer.sasl.jaas.config
设置客户端的sasl.jaas.config
属性,从而开启 JNDI 登录验证模块,并结合user.provider.url
属性通过 LDAP 服务实现注入,又通过 Scala 和 CommonsCollections7 作为 gadget 构造了利用链,最终实现代码执行。
漏洞在报告给 Aiven 公司后,已经在 2022 年 5 月修复。
风险场景
从危害上看,能够导致任意代码执行,属于高风险。
从业务场景上看,受漏洞影响的通常是基于 Kafka Connect 提供的:
数据管道服务(数据迁移、同步)
Kafka 相关的测试服务(用于对 broker 的测试)
因此主要是云平台类的服务,而大部分 Kafka 的使用场景不受影响。
从利用条件上,漏洞要成功用于执行任意代码,需要同时满足:
攻击者可以控制连接器(Connector)的配置
Kafka 服务能够访问攻击者控制的 LDAP 服务(通常需要能访问互联网)
基于远程 LDAP 引用注入需要 java 版本小于 11.0.1、8u191、7u201、6u211,本地则需要其 classpath 中加载了可以用于构造利用链的类
在一般情况下利用成本是较高的。
因此在漏洞响应排查上,应重点关注基于 Kafka 的云平台服务、在功能上关注其配置自定义功能。
建议将 kafka-clients 升级至 3.4.0 及以上版本,或通过限制自定义配置的参数临时规避该漏洞风险。
参考链接
https://www.oscs1024.com/hd/MPS-2023-3834
https://hackerone.com/reports/1529790
https://kafka.apache.org/documentation.html#connect
https://github.com/apache/kafka/commit/ae22ec1a0ea005664439c3f45111aa34390ecaa1
免费代码检测/情报预警
墨菲安全是一家为您提供专业的软件供应链安全管理的科技公司,能力包括代码安全检测、开源组件许可证合规管理、云原生容器安全检测、软件成分分析(SCA)等,丰富的安全工具助您打造完备的软件开发安全能力(DevSecOps)。
旗下安全研究团队墨菲安全实验室,专注于软件供应链安全相关领域的技术研究,关注的方向包括:开源软件安全、程序分析、威胁情报分析、企业安全治理等。公司核心团队来自百度、华为等企业,拥有超过十年的企业安全建设、安全产品研发及安全攻防经验。
免费代码安全检测工具: https://www.murphysec.com/?src=infoq
IDE 插件说明文档:https://www.murphysec.com/docs/guides/scan-scene/ide-plugin.html
免费情报订阅: https://www.oscs1024.com/cm/?src=infoq

评论