攻击者可以使用基于 SASL JAAS 配置和 SASL 协议的任意 Kafka 客户端,在对 Kafka Connect worker 创建或修改连接器时,通过构造特殊的配置,进行 JNDI 注入。 影响范围:2.3.0 <= Apache Kafka <= 3.3.2 解决办法:升级到3.4版本

具体步骤:原本的版本是kafka_2.11-2.3.1,升级到了kafka_2.12-3.4 1下载kafka3.4并解压 2将原配置文件复制一份到3.4版本 3修改3.4版本的配置文件,停止原kafka,启动3.4版本

1下载kafka3.4并解压

下载地址https://kafka.apache.org/downloads 拷贝到linux目标机器上,tar -zxvf kafka_2.12-3.4 进行解压

2将原配置文件复制一份到3.4版本

主要是把config/service.properties 复制到3.4版本的config目录下 把鉴权的配置文件kafka_server_jaas.conf放到config目录下(请按照自己的配置文件修改)

修改3.4版本的kafka-server-start.sh server启动脚本的JVM参数进行修改 注意,我原本使用了kafka_server_jaas鉴权,请自行修改文件的相对路径

把export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"这一行,改为

export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G -Djava.security.auth.login.config=../config/kafka_server_jaas.conf"

3修改3.4版本的配置文件

由于kafka3.4做了升级,和低版本配置文件是不一致的。 目的是为了高版本兼容使用低版本的文件格式(万一高版本不适应,可以恢复到低版本)。如果数据量不大,可以直接写当前版本3.4,此处由于我是生产环境,而且是集群模式,所以使用的是2.3.1

#如果您是从 0.11.0.x 或以上版本升级,并且您没有覆盖消息格式,那么您只需要覆盖 inter-broker 协议版本即可。

inter.broker.protocol.version=CURRENT_KAFKA_VERSION(例如3.3,3.2等)

#例如我现在版本是2.3.1,就写2.3.1

inter.broker.protocol.version=2.3.1

重点来了,由于我使用的低版本设置鉴权类,有设置这个参数时,“authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer” ,这个参数在3.4版本是不需要的,直接注释就好,否则会报错。

#auth add properties

security.inter.broker.protocol=SASL_PLAINTEXT

sasl.enabled.mechanisms=PLAIN

sasl.mechanism.inter.broker.protocol=PLAIN

#authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer

allow.everyone.if.no.acl.found=true

super.users=xxx:xxx

如果是集群,注意Broker.id的配置项

先将低版本kafka停止,然后启动高版本kafka,再修改inter.broker.protocol.version=2.3.1为高版号,重新启动。至此,kafka漏洞升级完毕。

参考官网,会英文的可自行使用https://kafka.apache.org/documentation/#security_sasl

推荐阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: