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

news/2024/11/2 2:28:08/

系列简介:
漏洞真实影响分析是墨菲安全实验室针对热点漏洞的分析系列文章,帮助企业开发者和安全从业者理清漏洞影响面、梳理真实影响场景,提升安全应急响应和漏洞治理工作效率。

漏洞概述

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)的配置进行操作。

1.png

连接器(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。

2.png

Aiven云数据平台攻击场景案例

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

3.png

其在 Kafka 中就提供了 Connect 服务,用于将数据通过不同的数据源导入导出 Kafka。

在创建 Connector 连接器时,可以自定义启动配置。

4.png

安全研究人员 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=j

IDE插件说明文档:https://www.murphysec.com/docs/guides/scan-scene/ide-plugin.html

免费情报订阅: https://www.oscs1024.com/cm/?src=j

情报订阅.png


http://www.ppmy.cn/news/24588.html

相关文章

【新】华为OD机试 - 交换字符(Python)| 刷完获取OD招聘渠道

交换字符 题目 给定一个字符串 S 变化规则: 交换字符串中任意两个不同位置的字符 M S 都是小写字符组成 1 <= S.length <= 1000 输入 一串小写字母组成的字符串 输出 按照要求变换得到最小字符串 示例一 输入 abcdef输出 abcdef示例二 输入 bcdefa输出 acde…

量化选股——基于动量因子的行业风格轮动策略(第1部分—因子测算)

文章目录动量因子与行业轮动概述动量因子的理解投资视角下的行业轮动现象投资者视角与奈特不确定性动量因子在行业风格上的效果测算动量因子效果测算流程概述1. 行业选择&#xff1a;申万一级行业2. 动量因子选择&#xff1a;阿隆指标&#xff08;Aroon&#xff09;3. 测算方法…

Spring Boot HTTP 400排查

背景 前段时间朋友咨询他们公司某个HTTP接口偶现400错误&#xff0c;有没有什么好的分析方法和解决方案&#xff0c;使用的是Spring Cloud体系。最近有时间总结下这个问题的处理过程。 为了分析问题&#xff0c;笔者使用 Spring Boot 3.0.2还原报错场景进行讲解。 问题分析 …

R语言读取Excel表格数据并绘制多系列柱状图、条形图

本文介绍基于R语言中的readxl包与ggplot2包&#xff0c;读取Excel表格文件数据&#xff0c;并绘制具有多个系列的柱状图、条形图的方法。 首先&#xff0c;我们配置一下所需用到的R语言readxl包与ggplot2包&#xff1b;其中&#xff0c;readxl包是用来读取Excel表格文件数据的&…

基于VS调试分析 + 堆栈观察问题代码段

文章目录问题代码段1 —— 阶乘之和问题代码段2 —— 越界的危害① 发现问题② 分析问题③ 思考问题【⭐堆栈原理⭐】④ 解决问题【DeBug与Release】&#x1f468;程序员与测试人员&#x1f469;✒总结与提炼问题代码段1 —— 阶乘之和 先来看一道C语言中比较基础的题目&#x…

Linux(Linux各目录结构详解)

我们知道Linux系统是一个文件系统&#xff0c;它的文件系统就类似windows系统下的磁盘文件系统。 我们连接上一台linux系统的服务器。 输入命令 &#xff1a; ls / 我们可以看到 linux系统的根目录下有这些目录 bin boot data dev etc hbr home lib lib64 lostfoun…

分享微信点餐小程序搭建步骤_微信点餐功能怎么做

线下餐饮实体店都开始摸索发展网上订餐服务。最多人选择的是入驻外卖平台&#xff0c;但抽成高&#xff0c;推广还要另买流量等问题&#xff0c;也让不少商家入不敷出。在这种情况下&#xff0c;建立自己的微信订餐小程序&#xff0c;做自己的私域流量是另一种捷径。那么&#…

ArcGIS API for JavaScript 4.15系列(5)——Dojo中的query查询器

1、前言 在之前的博客中&#xff0c;我们一直通过dom.byId方法来获取dom元素。但在实际开发过程中&#xff0c;单凭id获取dom元素是无法满足开发需求的&#xff0c;例如根据css样式名称获取对应的dom元素集合、获取某个div下所有的超链接<a>元素等。Dojo中提供了dojo/qu…