CVE-2023-25194 Apache Kafka Connect vulnerable to Deserialization of Untrusted Data

High 8.8 Published Updated

Authenticated attackers can achieve remote code execution or denial of service by configuring malicious SASL JAAS settings in Kafka Connect connectors.

Exploited in the wild
Not known
Login needed
Any signed-in user
Attackable
Over the internet
Victim action needed
Not needed
Fix
Available

What is CVE-2023-25194?

CVE-2023-25194 is a high-severity unsafe deserialization vulnerability in Apache Kafka Connect API, published on 7 Feb 2023. Any signed-in user can exploit it over the network, with no action from the victim.

Official description

A possible security vulnerability has been identified in Apache Kafka Connect API. This requires access to a Kafka Connect worker, and the ability to create/modify connectors on it with an arbitrary Kafka client SASL JAAS config and a SASL-based security protocol, which has been possible on Kafka Connect clusters since Apache Kafka Connect 2.3.0. When configuring the connector via the Kafka Connect REST API, an authenticated operator can set the `sasl.jaas.config` property for any of the connector's Kafka clients to "com.sun.security.auth.module.JndiLoginModule", which can be done via the `producer.override.sasl.jaas.config`, `consumer.override.sasl.jaas.config`, or `admin.override.sasl.jaas.config` properties. This will allow the server to connect to the attacker's LDAP server and deserialize the LDAP response, which the attacker can use to execute java deserialization gadget chains on the Kafka connect server. Attacker can cause unrestricted deserialization of untrusted data (or) RCE vulnerability when there are gadgets in the classpath.

Since Apache Kafka 3.0.0, users are allowed to specify these properties in connector configurations for Kafka Connect clusters running with out-of-the-box configurations. Before Apache Kafka 3.0.0, users may not specify these properties unless the Kafka Connect cluster has been reconfigured with a connector client override policy that permits them.

Since Apache Kafka 3.4.0, we have added a system property ("-Dorg.apache.kafka.disallowed.login.modules") to disable the problematic login modules usage in SASL JAAS configuration. Also by default "com.sun.security.auth.module.JndiLoginModule" is disabled in Apache Kafka Connect 3.4.0.

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. Finally, in addition to leveraging the "org.apache.kafka.disallowed.login.modules" system property, Kafka Connect users can also implement their own connector client config override policy, which can be used to control which Kafka client properties can be overridden directly in a connector config and which cannot.

Weakness: CWE-502

Which versions are affected by CVE-2023-25194?

2 open source packages ship an affected version, including org.apache.kafka:connect. It affects 1 product.

PackageAffectedFixed in
org.apache.kafka:connect MavenFrom 2.3.03.4.0
org.apache.kafka:connect MavenFrom 2.3.03.4.0

Products include Apache Kafka Connect.

How do I fix CVE-2023-25194?

Upgrade org.apache.kafka:connect to 3.4.0 or later.

Upgrade, and only deserialise data from trusted sources or with an allow-list of types. More about Unsafe deserialization.

Is CVE-2023-25194 being exploited?

It is not confirmed as exploited in the wild, but public exploit code for CVE-2023-25194 exists.

Public exploit code: 1 Metasploit module, 1 Nuclei template and 3 proofs of concept on GitHub.

Sources

Also known as CLSA-2024-1733097627, GHSA-26f8-x7cc-wqpc.

Is CVE-2023-25194 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free