修复 Apache Kafka 中的远程代码执行漏洞CVE-2023-25194

文章目录

  • 前言
  • 一、Log4Shell connection
  • 二、Disclosure
  • Updates, mitigations


前言

Possible RCE and denial-of-service issue discovered in Kafka Connect

在 Kafka Connect 中发现可能的 RCE 和拒绝服务问题。

更新 阿帕奇软件基金会 (ASF) 已解决了一个漏洞,该漏洞可被利用来使用 Kafka Connect 发起远程代码执行 (RCE) 攻击。

该关键漏洞于 2 月 8 日公布,被追踪为 CVE-2023-25194。Apache Kafka Connect 是 Apache Kafka 的一个免费开源组件,是系统、数据库和键值存储之间数据集成的中心枢纽。

ASF 声称,超过 80% 的财富 100 强企业都在使用 Kafka 平台,包括每 10 家银行中的约 7 家。

UPDATED The Apache Software Foundation (ASF) has resolved a vulnerability that can be exploited to launch remote code execution (RCE) attacks using Kafka Connect.

Announced on February 8, the critical flaw is tracked as CVE-2023-25194. It was discovered in Apache Kafka Connect, a free, open source component of Apache Kafka that operates as a central hub for data integration between systems, databases, and key-value stores.

The ASF claims that more than 80% of Fortune 100 organizations use the Kafka platform, including approximately seven out of every 10 banks.

According to Apache’s mailing list note, the security flaw was discovered by bug bounty hunter Jari Jääskelä, who reported the issue via Aiven’s HackerOne bug bounty program and earned a $5,000 bug bounty reward.

根据阿帕奇邮件列表说明,该安全漏洞是由漏洞赏金猎人Jari Jääskelä发现的,他通过Aiven的HackerOne漏洞赏金计划报告了该问题,并获得了5000美元的漏洞赏金奖励。

The vulnerability can only be triggered when there is access to a Kafka Connect worker – a logical work unit component – and the user can create or modify worker connectors with an arbitrary Kafka client SASL JAAS config and a SASL-based security protocol.

只有在访问 Kafka Connect Worker(逻辑工作单元组件),并且用户可以使用任意 Kafka 客户端 SASL JAAS 配置和基于 SASL 的安全协议创建或修改 Worker 连接器时,才会触发该漏洞。

在这里插入图片描述

https://nvd.nist.gov/vuln/detail/CVE-2023-25194

https://kafka.apache.org/cve-list


提示:以下是本篇文章正文内容,下面案例可供参考

一、Log4Shell connection

The vulnerability involves the Lightweight Directory Access Protocol (LDAP) and Java Naming and Directory Interface (JNDI) endpoints, as was the case with ‘Log4Shell’, the landmark vulnerability discovered in ubiquitous Java logging library Apache Log4j in 2021. JNDI is also involved in another, newly disclosed critical vulnerability in Apache Sling JCR Base.

该漏洞涉及轻量级目录访问协议(LDAP)和 Java 命名与目录接口(JNDI)端点,就像 2021 年在无处不在的 Java 日志库 Apache Log4j 中发现的标志性漏洞 "Log4Shell "一样。Apache Sling JCR Base 中新披露的另一个关键漏洞也涉及 JNDI。

With the Kafka bug, an authenticated attacker could configure a specific connector property via either the Aiven API or the Kafka Connect REST API, forcing a worker to connect to an attacker-controlled LDAP server.

“The server will connect to the attacker’s LDAP server and it deserializes the LDAP response, which the attacker can use to execute java deserialization gadget chains on the Kafka Connect server,” the advisory reads. “Attacker[s] can execute commands on the server and access other resources on the network.”

When each prerequisite exists, Apache says it would be possible to perform JNDI requests, potentially leading to the execution of remote code or denial-of-service attacks.

利用 Kafka 漏洞,经过身份验证的攻击者可以通过 Aiven API 或 Kafka Connect REST API 配置特定连接器属性,从而迫使 Worker 连接到攻击者控制的 LDAP 服务器。

"服务器将连接到攻击者的 LDAP 服务器,并对 LDAP 响应进行反序列化,攻击者可利用该响应在 Kafka Connect 服务器上执行 java 反序列化小工具链,"该公告写道。"攻击者可以在服务器上执行命令,并访问网络上的其他资源。

阿帕奇表示,当每个前提条件都存在时,就有可能执行 JNDI 请求,从而可能导致执行远程代码或拒绝服务攻击。

二、Disclosure

Josep Prat, open source engineering director at Aiven, said Aiven’s bug bounty program bolstered “the security posture of the overall open source ecosystem” as well as its own.

“The bounty program at Aiven applies to both proprietary software as well as any of the open source projects used by it,” he told The Daily Swig.

“Since running our bounty program in 2020, 25% of the reports are on open source projects, of which 80% are on projects not owned by Aiven but part of the our dependency chain, such as projects owned by the Apache Software Foundation.”

Prat said if bug reports are “deemed to affect upstream projects, we will reach out to the security team of the said project and report the possible vulnerability that was discovered.

“In this particular instance, though, the vulnerability was initially assessed to only impact Apache Kafka service providers (and not upstream) rather than being a deficiency of the project itself. Hence, in accordance with the process, Aiven accepted and the bounty was paid to the reporter.”

Prat said the issue was then promptly reported to the Kafka security team and resolved with the help of Aiven engineers.

Aiven公司开源工程总监Josep Prat说,Aiven公司的漏洞悬赏计划不仅增强了自身的实力,而且还 “加强了整个开源生态系统的安全态势”。

"他告诉《The Daily Swig》:"Aiven的漏洞悬赏计划既适用于专有软件,也适用于其使用的任何开源项目。

“自2020年启动我们的悬赏计划以来,25%的报告涉及开源项目,其中80%涉及非爱文所有但属于我们依赖链的项目,如阿帕奇软件基金会(Apache Software Foundation)所有的项目。”

Prat说,如果错误报告 “被认为会影响上游项目,我们将与上述项目的安全团队联系,并报告可能发现的漏洞”。

“不过,在这个特殊的例子中,漏洞最初被评估为只影响 Apache Kafka 服务提供商(而不是上游),而不是项目本身的缺陷。因此,按照流程,Aiven 接受并向报告者支付了赏金。”

Prat说,该问题随后被迅速报告给了Kafka安全团队,并在Aiven工程师的帮助下得到了解决。

Updates, mitigations

The report was first submitted to Aiven on April 4, 2022. Apache Kafka versions 2.3.0-3.3.2 were found to be impacted, and the vulnerability was fixed in version 3.4.0.

The ASF notes that since Kafka 3.0.0, users have been able to specify the connector configuration properties used in the attack chain. A new property has been added that disables problematic login module usage in the SASL JAAS configuration in version 3.4.0, alongside additional security measures.

该报告于2022年4月4日首次提交给Aiven。Apache Kafka的2.3.0-3.3.2版本被发现受到影响,该漏洞已在3.4.0版本中得到修复。

ASF 指出,自 Kafka 3.0.0 起,用户可以指定攻击链中使用的连接器配置属性。在 3.4.0 版中,除了额外的安全措施外,还添加了一个新属性,用于禁止在 SASL JAAS 配置中使用有问题的登录模块。

The ASF said: “We advise the Kafka Connect users to validate connector configurations and only allow trusted JNDI configurations. Also, examine connector dependencies for vulnerable versions and either upgrade their connectors, upgrading that specific dependency, or removing the connectors as options for remediation.”

Jääskelä also submitted a second critical vulnerability report concerning Apache Kafka in the same month.

The Aiven JDBC sink, including the SQLite JDBC driver, could be abused with an unprotected Jolokia bridge to execute RCE on Kafka Connect servers. The bug bounty hunter was awarded $5,000 for this report too, and the security issue has since been resolved.

ASF 说:“我们建议 Kafka Connect 用户验证连接器配置,只允许可信的 JNDI 配置。同时,检查连接器依赖的易受攻击版本,并将升级连接器、升级特定依赖或移除连接器作为补救选项。”

同月,Jääskelä 还提交了第二份有关 Apache Kafka 的重大漏洞报告。

包括 SQLite JDBC 驱动程序在内的 Aiven JDBC sink 可能会被未受保护的 Jolokia 桥滥用,从而在 Kafka Connect 服务器上执行 RCE。该漏洞赏金猎人也因这份报告获得了 5,000 美元的奖励,该安全问题后来也得到了解决。

We advise all Kafka users to promptly upgrade to a version of snappy-java (>=1.1.10.1) to mitigate this vulnerability. The latest version (1.1.10.1, as of July 5, 2023) of snappy-java is backward compatible with all affected versions of Kafka. The affected library jar for snappy-java should be replaced with this newer version.
This vulnerability allows any user who can produce data to the broker to exploit the vulnerability, potentially causing an Out-of-Memory (OOM) condition, leading to Denial-of-Service(DoS) on the Kafka broker. It could be exploited by sending a malicious payload in the record which is compressed using snappy. On receiving the record, the broker will try to de-compress the record to perform record validation and it will delegate decompression to snappy-java library. The vulnerability in the snappy-java library may cause allocation of an unexpected amount of heap memory, causing an OOM on the broker. Any configured quota will not be able to prevent this because a single record can exploit this vulnerability.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/203873.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

enum常用方法 - Java

六、enum常用方法 0、准备工作1、name()2、ordinal()3、values()4、valueOf()5、compareTo()6、toString() 说明:使用关键字enum时,会隐式 继承 Enum类,这样我们就可以使用 Enum 类相关的方法。 0、准备工作 enum Season2 {SPRING("…

富必达API:一站式无代码开发集成电商平台、CRM和营销系统

一站式无代码开发的连接解决方案 电子商务、客户服务系统以及其它商业应用,是现代企业运营的重要部分。然而,将这些系统进行有效的整合往往需要复杂的API开发,这对很多企业来说是一个巨大的挑战。富必达API以其一站式的无代码开发解决方案&a…

一键上传,无限容量!打造高效图床工具,利用Electron和Gitee搭建自己的私人云存储空间

说在前面 平时写文章或写代码的时候,都少不了需要将本地图片转成在线图片链接,大家都是使用什么工具进行转换的呢?相信很多人都有自己的图床工具,今天来给大家介绍一下,怎么基于Gitee和Electron来开发一个便捷的图床工…

Docker本地部署Firefox火狐浏览器并远程访问

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,…

上市公司数字化转型及同群效应数据集合(四种测算方法)

数据简介:当今世界处于高速发展的信息时代中,数字革命的产生催生出大量数字技术和数字信息。在数字经济时代,数字化转型赋予了企业新的发展动能,数字化转型已经成为诸多企业高质量发展的重要路径。是否需要进行数字化转型、能否及…

windows启动后直接进入指定程序并且不显示欢迎界面和windows桌面

windows启动后直接进入指定程序并且不显示欢迎界面和windows桌面 前言开机进入指定程序方法问题 浅尝GINA和Credential Providers关闭欢迎屏幕 前言 由于系统需求需要做到电脑开机后显示完windows加载页面就直接进入自己系统的界面,并且不显示登录欢迎页面&#xf…

IDE1007:当前上下文中不存在名称“xxx“

这种在Halcon中直接导出的代码不能直接放程序中,应该在控件中比如一个按钮中,就不会出错了。

Docker安装可视化工具Portainer

目录 Portainer简介 Portainer安装 Portainer简介 Portainer是一款开源的容器管理平台,支持多种容器技术,如Docker、Kubernetes和Swarm等。它提供了一个易于使用的Web UI界面,可用于管理和监控容器和集群。Portainer旨在使容器管理更加简单…

【celery踩坑】celery定时和周期任务全部不执行

一、背景 有一天,突然发现线上系统上的任务没有执行,状态一直是未完成。 看了一下celery的beat日志,发现周期任务和定时任务都不执行了。 重启项目,发现django_celery_beat_periodictask中,也只是执行前面几个周期或者…

C语言之“可变参数<stdarg.h>”

目录 前言 stdarg.h头文件 实例:遍历并求和所有传递给sum函数的额外实际参数 前言 有时我们会希望函数带有可变数量的参数就像printf(cosnt char* format ...)和scanf(cosnt char* format ...)那样除了有一个参数 …

【用unity实现100个游戏之17】从零开始制作一个类幸存者肉鸽(Roguelike)游戏6(附项目源码)

文章目录 本节最终效果前言开始游戏主角扣血和死亡游戏结束清屏效果赢得比赛角色选择界面每个角色有自己的特点,及初始属性不一样参考源码完结 本节最终效果 前言 本节紧跟着上一篇,主要实现不同游戏界面和不同角色选择。 开始游戏 简单绘制UI 修改…

Vue中的组件和插件

一、组件 组件是Vue中最核心的概念之一,它可以把一个页面拆分成多个独立的、可复用的部分。组件通常包含了自己的模板、样式和逻辑,用于封装一个特定的功能或界面。Vue的组件有单文件组件和普通组件两种类型,可以通过Vue.component或Vue.ext…

基于javaweb的宠物服务商城系统设计与开发

摘 要 最近几年以来,宠物在人们的日常生活中所占的地位越来越重要了,它们不仅仅是我们的朋友,也成为了我们家庭中的一份子。21世纪,信息技术飞速发展,计算机行业日新月异,极大地带动了信息的流动&#xff…

DS1302时钟保持芯片,让你很快读懂它

概述: DS1302是DALLAS公司制作的涓流充电时钟芯片。芯片有实时时钟日历功能,有31*8bits静态RAM,可以通过串行接口方式和处理器(stm32,ARM等)进行通信来读写RAM,有两种传送方式,单字节传送和多字节传送。内部…

OSG编程指南<十六>:OSG渲染到纹理RTT及三维纹理体渲染技术简介

1、渲染到纹理(RTT) 1.1 RTT介绍 RTT(Render to Texture)即渲染到纹理。在普通的图形渲染流程中,最终结果是渲染到帧缓存中,然后才会显示到屏幕上。而RTT则是将场景渲染到一张纹理上,并且在之后…

三.排序与分页

目录 一.排序数据二.分页 一.排序数据 1.排序规则 使用ORDER BY 子句排序 ASC(ascend)升序DESC(descend)降序 ORDER BY 子句在SELECT语句的结尾 2.单列排序 SELECT last_name, job_id, department_id, hire_date FROM e…

.net core 连接数据库,通过数据库生成Modell

1、安装EF Core Power Tools:打开Vs开发工具→扩展→管理扩展 2、(切记执行这步之前确保自己的代码不存在编写或者编译错误!)安装完成后在你需要创建数据库实体的项目文件夹上面单击右键,找到EF Core 工具(必须安装扩展之和才会有…

Git修改远程仓库名称

1、先直接在远程点仓库名,然后左侧菜单栏找settings-general,然后直接修改工程名,保存即可。 2、还是在settings-general下,下拉找到Advanced点击Expand展开,然后下拉到最底部 在Change path里填入新的项目名称&#x…

C语言猜素数(ZZULIOJ1292:猜素数)

题目描述 Lx给Xp出了一道难题,随便在0和1000000之间抽出两个数,估计在这两个数之间的素数的个数,如果猜测的结果和正确结果一样,Xp就可以得到Lx的一件礼物,你能猜对吗?编程实现一下吧! 输入&…

App测试中iOS和Android的差异

1、系统版本: iOS和Android系统版本的更新速度、使用人数比例以及功能的不同都可能导致应用程序在不同操作系统版本上的表现和兼容性存在区别。 例如,在iOS平台上,很多用户会更快地升级到最新版本的iOS系统,而在Android平台上&a…