Below are some useful resources.
Contributions welcome!
We do a Pull Request contributions workflow on GitHub. New users are always welcome!
This is the multi-page printable view of this section. Click here to print.
Below are some useful resources.
We do a Pull Request contributions workflow on GitHub. New users are always welcome!
The following books cover Apache Kafka and/or the subject of event streaming in general.
The following academic papers and publications cover Apache Kafka and/or the subject of event streaming in general.
We have a few mailing lists hosted by Apache:
For all Apache mailing lists, you must confirm your subscription by replying to an email. See the Apache Mailing Lists page for more information.
Prior to the move to Apache we had a Google group we used for discussion. Archives can be found here. After that we were in Apache Incubator which has its own archives for user, dev, and commit lists.
This page lists all security vulnerabilities fixed in released versions of Apache Kafka.
This page does not list security advisories for dependencies of Kafka. If your security scanner warns that there is an advisory for a dependency of Kafka, please see this documentation. You can find the current development versions of various dependencies here. You can find a list of advisories that have been confirmed not to apply to Kafka here. You are invited to contribute version updates or (motivated) suppressions.
When a broker decodes a compressed record batch, the per-record decoder reads a declared body size from the decompressed stream and allocates a buffer of that size before validating it against the bytes available or any configured limit. The size is attacker-controlled, and the batch CRC does not constrain it, so a small (around 90-byte), CRC-valid compressed produce request can declare a body size of up to about 2 GiB and force the broker to attempt that allocation, raising OutOfMemoryError. The record size limit (max.message.bytes), the request size limit, and client/broker quotas bound only the compressed wire size, not the declared decompressed size.
Credit: Peyton Kennedy (reporter), Trung Nguyen (CyStack) (reporter), Bartłomiej Dmitruk (Striga) (reporter), 임성민 (reporter), Mike Read (GitHub: Michael-JRead) (reporter), Salman Aljardan (reporter), Yuchao Zhang (reporter), Yu Bao (PayPal Cyber Security Team) (reporter), Vamsi K (reporter), Srinivas Akhil Mallela (remediation developer)
References: CVE-2026-114349
Versions affected | 0.11.0.0 through 4.1.2, 4.2.0 through 4.2.1, 4.3.0 through 4.3.1 |
Fixed versions | 4.2.2, 4.3.2, 4.4.0 |
Impact | An authenticated principal with Write on a topic can crash broker request-handler threads (reached when a batch’s codec differs from the topic’s |
Advice | Mitigation: Upgrade to Apache Kafka 4.2.2, 4.3.2, or 4.4.0, and set From Apache Kafka 4.2.2, 4.3.2, and 4.4.0: the broker validates a record’s declared decompressed body size against |
Issue announced | 28 Oct 2026 |
An authenticated Kafka principal with no authorization grants (not even ALTER_CONFIGS) can make a broker read a file or an environment variable from the broker host and return its contents. An IncrementalAlterConfigs (or AlterConfigs) request targeting a BROKER resource reaches the broker’s configuration validation before any authorization check is applied to that path. Validation resolves configuration variables such as ${file:/path:key} or ${env:VAR} using a ConfigProvider named in the request, and this resolution bypasses the org.apache.kafka.automatic.config.providers allowlist that was added as the mitigation for CVE-2024-31141. An arbitrary ConfigProvider (for example FileConfigProvider or EnvVarConfigProvider) is therefore instantiated and the referenced file or environment variable is read, and a type-validation error returns the resolved content to the caller.
Credit: Arthur Chan (Ada Logics and Anthropic Research) (reporter), OpenAI Codex Security - Amy Burnett and Khai Tran (reporter), Mickael Maison (remediation developer), Manikumar Reddy (remediation developer), Chia-Ping Tsai (remediation developer)
References: CVE-2026-112375
Versions affected | 3.2.0 through 4.1.2, 4.2.0 through 4.2.1, 4.3.0 through 4.3.1 |
Fixed versions | 4.2.2, 4.3.2, 4.4.0 |
Impact | On a cluster with an authorizer enabled, an authenticated principal with no authorization grants can read the contents of files accessible to the broker process, and the broker’s environment variables, exposing credentials, keystores, or other secrets, defeating the CVE-2024-31141 allowlist. The read is bounded by the broker process’s file permissions. The brokers and the cluster remain available; the issue is disclosure of file and environment-variable contents. Clusters with no authorizer configured are not affected in practice, because every principal already holds ALTER_CONFIGS there. |
Advice | Mitigation: Upgrade to Apache Kafka 4.2.2, 4.3.2, or 4.4.0. As defense in depth, run brokers under a least-privileged operating-system account so that sensitive files are not readable by the broker process. From Apache Kafka 4.2.2, 4.3.2, and 4.4.0: broker configuration changes are authorized (ALTER_CONFIGS on the cluster) before the configuration is validated, and configuration-variable resolution enforces the config-providers allowlist. |
Issue announced | 28 Oct 2026 |
Several Kafka deserialization paths read a size or count field from input data and use it directly to allocate an array, collection, or byte buffer, with no check against the bytes actually available. A small crafted input can therefore declare a very large size and force a multi-gigabyte allocation. The affected paths are, in Kafka Streams, ProcessorRecordContext (header count), ChangedDeserializer (varint value length), CombinedKeySchema (foreign-key length, which could also produce a negative size), ProcessorMetadata (key length), and AssignmentInfo group-assignment decoding; and, in the clients library, ListDeserializer (used by ListSerde).
Credit: Peyton Kennedy (reporter), Bartłomiej Dmitruk (Striga) (reporter), Mike Read (GitHub: Michael-JRead) (reporter), Matthias J. Sax (remediation developer), Lucy Liu (remediation developer)
References: CVE-2026-111551
Versions affected | 0.10.0.0 through 4.1.2, 4.2.0 through 4.2.1, 4.3.0 through 4.3.1 |
Fixed versions | 4.2.2, 4.3.2, 4.4.0 |
Impact | An attacker can trigger the oversized allocation and raise an |
Advice | Mitigation: Upgrade to Apache Kafka 4.2.2, 4.3.2, or 4.4.0. Where authorization is enabled, restrict write access to each application’s internal topics and consumer group to its own principal, and restrict who can produce to topics that are consumed with From Apache Kafka 4.2.2, 4.3.2, and 4.4.0: these deserialization paths validate the declared size against the remaining input before allocating and reject input that fails the check. |
Issue announced | 28 Oct 2026 |
Apache Kafka’s code-generated readers for flexible protocol versions read a tagged-field count declared by the sender and retain a RawTaggedField object for each unknown field. That count was bounded only by the outer request-frame size (socket.request.max.bytes); it was not checked against the remaining buffer bytes or capped. Because each entry can be encoded in as little as two bytes (unknown tag 0, size 0), a modest request can declare tens of millions of tagged fields and force one object allocation per declared field. Flexible request headers (header version 2, used by flexible APIs such as ApiVersions v3) are parsed this way, so the amplification applies to the request header itself.
Credit: Mufeed VH (finder), Vivek R (finder), Shay Elkin (remediation developer)
References: CVE-2026-111115
Versions affected | 2.4.0 through 4.1.2, 4.2.0 through 4.2.1, 4.3.0 through 4.3.1 |
Fixed versions | 4.2.2, 4.3.2, 4.4.0 |
Impact | The flexible request header is parsed on the network thread before authorization, request dispatch, and request-time quota accounting. A client can send a request of a few tens of megabytes whose header declares about 20 million tagged fields, forcing roughly that many |
Advice | Mitigation: Upgrade to Apache Kafka 4.2.2, 4.3.2, or 4.4.0. Until then, lowering From Apache Kafka 4.2.2, 4.3.2, and 4.4.0: generated readers bounds-check the tagged-field count for flexible-versioned messages, rejecting a negative count, a count exceeding the remaining buffer bytes, or a count exceeding a fixed maximum (10,000), before any per-field allocation. |
Issue announced | 28 Oct 2026 |
Apache Kafka’s code-generated protocol readers pre-size an array’s collection from the element count declared by the sender. That count is checked only against the bytes remaining in the request buffer, which assumes about one byte per element; because most elements need several bytes, a request can declare far more elements than the buffer holds and still pass. For a keyed array the reader then allocates an ImplicitLinkedHashCollection of capacity (2 * count + 1), so a request of a few tens of megabytes can force a heap allocation several times larger before any element is read. The pattern is emitted into every generated reader, so it affects all Kafka API types with an array field.
Credit: Mike Read (GitHub: Michael-JRead) (reporter), Izzy Harker (remediation developer), Alyssa Huang (remediation developer), Truc Nguyen (remediation developer)
References: CVE-2026-111108
Versions affected | 3.3.0 through 4.1.2, 4.2.0 through 4.2.1, 4.3.0 through 4.3.1 |
Fixed versions | 4.2.2, 4.3.2, 4.4.0 |
Impact | Request parsing happens before any authorization check. On a listener that does not require authentication (for example PLAINTEXT), an unauthenticated attacker can send a few concurrent requests that each declare a very large array length and allocate many times their wire size in broker heap, crashing the broker with an |
Advice | Mitigation: Upgrade to Apache Kafka 4.2.2, 4.3.2, or 4.4.0. Until then, lowering From Apache Kafka 4.2.2, 4.3.2, and 4.4.0: generated readers cap the initial array pre-allocation at |
Issue announced | 28 Oct 2026 |
A Kafka broker using SASL/OAUTHBEARER with the default validator (sasl.oauthbearer.jwt.validator.class=DefaultJwtValidator) selects its implementation from configuration. When sasl.oauthbearer.jwks.endpoint.url is set, the validator verifies the JWT signature. When that URL is unset (the default) and no verification key resolver is supplied, DefaultJwtValidator silently falls back to ClientJwtValidator, which does not verify the JWT signature, algorithm, or issuer — and the broker starts with no warning or error. This is the residual of CVE-2026-33557, whose fix restored signature verification only on the path where the JWKS endpoint URL is set.
Credit: San Zhang (reporter), Kaixuan Li (reporter), Evan Zhou (remediation developer)
References: CVE-2026-110985
Versions affected | 4.1.0 through 4.1.2, 4.2.0 through 4.2.1, 4.3.0 |
Fixed versions | 4.2.2, 4.3.1, 4.4.0 |
Impact | A broker in this state accepts any structurally valid JWT, including |
Advice | Mitigation (all affected versions, no upgrade required): Set From Apache Kafka 4.2.2, 4.3.1, and 4.4.0: a broker that would fall back to the non-verifying |
Issue announced | 28 Oct 2026 |
Apache Kafka Connect has the /connector-plugins/{connector-type}/config/validate endpoint on its REST API to validate connector configurations. Apache Kafka Connect also supports Configuration Providers, which allow the values of sensitive configuration to be hidden and resolved only at runtime.
An attacker with access to the validate endpoint can use it to resolve and return plaintext values via any of the configuration providers installed on a Connect worker.
Credit: Hyunwoo Kim (reporter), Sudhanshu Chauhan (RedHunt Labs) (reporter), Bartłomiej Dmitruk (Striga) (reporter), Andrew MacPherson (reporter), Mickael Maison (remediation developer)
References: CVE-2026-116593
Versions affected | 2.4.0 through 4.2.1, 4.3.0 through 4.3.1 |
Fixed versions | 4.2.2, 4.3.2, 4.4.0 |
Impact | This issue could result in exposing sensitive configuration values (such as externalized secrets) that are normally hidden by Connect configuration providers. |
Advice | Users are recommended to upgrade to 4.2.2, 4.3.2, 4.4.0, or above, which fix this issue. |
Issue announced | 28 Oct 2026 |
The broker-side PushTelemetry API (KIP-714) validates only the compressed size of a client’s metrics payload against telemetry.max.bytes (default 1 MB) before decompressing it. ClientTelemetryUtils.decompress() then decompresses the payload with no limit on the decompressed output size, growing a heap buffer until the compressed input is exhausted. A small, highly compressible payload (for example gzip-compressed zeros) can therefore expand to hundreds of megabytes of broker heap.
Credit: Dawit Jeong (reporter), Apoorv Mittal (remediation developer), Andrew Schofield (remediation reviewer)
References: CVE-2026-111073
Versions affected | 3.7.0 through 4.1.2, 4.2.0 through 4.2.1, 4.3.0 |
Fixed versions | 4.2.2, 4.3.1, 4.4.0 |
Impact | An authenticated client can send a PushTelemetry request with a small compressed payload that decompresses to a very large size, consuming broker heap out of proportion to the request size. Repeated or concurrent requests can exhaust the broker heap and cause an |
Advice | Mitigation: Upgrade to Apache Kafka 4.2.2, 4.3.1, or 4.4.0. On affected versions there is no configuration that fully prevents the amplification, because From Apache Kafka 4.2.2, 4.3.1, and 4.4.0: |
Issue announced | 28 Oct 2026 |
A Kafka broker that authenticates clients with SASL/OAUTHBEARER using the bundled JWKS-backed validator always verifies the JWT signature, but two further checks are only performed when explicitly configured:
iss) claim is verified only when sasl.oauthbearer.expected.issuer is set. When it is unset, a validly-signed token carrying the expected audience is accepted regardless of which issuer minted it.aud) claim is required only when sasl.oauthbearer.expected.audience is set. When it is unset, a validly-signed token that omits the aud claim is accepted. (A token that carries an aud claim is still rejected when no expected audience is configured.)Both options default to unset and have been documented as optional (Importance LOW) since KIP-768 (3.1.0).
Credit: Kai Aizen (SnailSploit) (reporter), Evan Zhou (remediation developer)
References: CVE-2026-110952
Versions affected | 3.1.0 through 4.3.2 |
Fixed versions | 4.4.0 |
Impact | The exposure is realizable mainly in deployments whose JWKS endpoint serves signing keys for more than one issuer (a multi-tenant identity provider, an aggregated/shared JWKS, or shared signing keys): a token minted for a different issuer, or a token lacking an audience, may be accepted to authenticate — potentially as a higher-privileged principal. In a single-issuer deployment where the provider controls the |
Advice | Mitigation (all affected versions, no upgrade required): Set both From Apache Kafka 4.4.0: a broker configured with a JWKS endpoint fails to start unless both |
Issue announced | 28 Oct 2026 |
Apache Kafka Connect contains an authentication bypass vulnerability affecting the admin REST API when admin.listeners is configured with a separate listener from the main listeners property.
When operators isolate the admin REST API by explicitly configuring the admin.listeners property, REST extensions specified via rest.extension.classes (such as BasicAuthSecurityRestExtension) are not registered or applied to the admin resource configuration.
While the primary REST API listener (configured via listeners) enforces configured authentication and authorization filters, endpoints mounted under the separate admin listener (/admin/loggers) fail to inherit or instantiate these extension filters. As a result, the admin logger endpoint accepts unauthenticated read and write requests even when security extensions are active on the main listener.
Credit: Bartłomiej Dmitruk (Striga) (reporter), Mickael Maison (remediation developer)
References: CVE-2026-115644
Versions affected | 2.4.0 through 4.2.1, 4.3.0 through 4.3.1 |
Fixed versions | 4.2.2, 4.3.2, 4.4.0 |
Impact | An unauthenticated attacker with network access to the admin listener can:
|
Advice | Mitigation: Users who cannot upgrade immediately can remove the From Apache Kafka 4.2.2, 4.3.2, and 4.4.0: the REST extensions specified via |
Issue announced | 28 Oct 2026 |
Kafka Streams derives its stream-time clock from record timestamps. PunctuationSchedule.next() computed the next punctuation time as timestamp + (intervalsMissed + 1) * interval with no overflow check. A record with a timestamp at or near Long.MAX_VALUE advances stream time to that value, so the next stream-time punctuation overflows to a negative time. PunctuationQueue then re-queues that time and loops on it indefinitely while holding a lock, stalling the StreamThread.
Credit: Mike Read (GitHub: Michael-JRead) (reporter), Matthias J. Sax (remediation developer)
References: CVE-2026-111496
Versions affected | 1.1.0 through 4.1.2, 4.2.0 through 4.2.1, 4.3.0 through 4.3.1 |
Fixed versions | 4.2.2, 4.3.2, 4.4.0 |
Impact | A single record is enough. The affected StreamThread stops processing, and because the record stays in the topic the hang returns on restart; an application whose partitions are all affected becomes unresponsive. Only the Streams application is affected, not the brokers or the cluster. Triggering it needs write access to a source topic whose topology uses stream-time punctuation, and a broker that stores the record: brokers from Apache Kafka 4.0.0 reject such a timestamp by default ( |
Advice | Mitigation: Upgrade Kafka Streams to 4.2.2, 4.3.2, or 4.4.0. As defense in depth, keep From Apache Kafka 4.2.2, 4.3.2, and 4.4.0: the next punctuation time is computed with overflow-checked arithmetic (clamped to |
Issue announced | 28 Oct 2026 |
Incorrect operator (CWE-480) in the FetchSnapshot RPC handler in Apache Kafka from 2.8.0 before 4.2.2, and from 4.3.0 before 4.3.2, on all platforms allows an authenticated attacker with CLUSTER_ACTION privilege to cause a denial of service (controller process termination) via a crafted FetchSnapshotRequest with an empty topics array or a topic with no partitions.
Users are recommended to upgrade to version 4.2.2, 4.3.2, or 4.4.0, which fix this issue. Users on unsupported branches (4.1.x and earlier) should upgrade to 4.2.2 or later.
Credit: Mike Read (GitHub: Michael-JRead) (reporter), Kevin Wu (remediation developer)
References: apache/kafka#23185, CVE-2026-83525
Versions affected | 2.8.0 through 4.2.1, 4.3.0 through 4.3.1 |
Fixed versions | 4.2.2, 4.3.2, 4.4.0 |
Impact | An authenticated attacker with CLUSTER_ACTION privilege can cause a denial of service (KRaft controller process termination) by sending a crafted FetchSnapshotRequest with an empty topics array or a topic with no partitions. |
Advice | Users are recommended to upgrade to 4.2.2, 4.3.2, or 4.4.0, which fix this issue. Users on unsupported branches (4.1.x and earlier) should upgrade to 4.2.2 or later. |
Issue announced | 28 Oct 2026 |
The implementation of the CONSUMER_GROUP_DESCRIBE (69) API validates the DESCRIBE operation on the GROUP resource instead of the READ operation as documented in the official Kafka documentation and KIP-848. This discrepancy can result in misconfigured Access Control Lists (ACLs) and unintended security postures, like granting READ permission to users who should not be able to join/sync groups, or allowing users without READ permission (but with DESCRIBE permission) to access sensitive group metadata.
The correct permission for CONSUMER_GROUP_DESCRIBE API is DESCRIBE GROUP so the current implementation is correct. However, the Kafka documentation as well as KIP-848 have been updated to reflect the correct permission. We advise the Kafka users to review existing group ACLs to ensure the principle of least privilege.
Versions affected | 4.0.0 - 4.3.0 |
Fixed versions | 4.0.0 - 4.3.0 |
Impact | This improper authorization can result in misconfigured ACLs and unintended security postures, like granting READ permission to users who should not be able to join/sync groups, or allowing users without READ permission (but with DESCRIBE permission) to access sensitive group metadata. |
Advice | Kafka users using 4.0.0 - 4.3.0 are advised to review existing group ACLs to ensure the principle of least privilege. |
Issue announced | 2 Jun 2026 |
The NetworkClient component will output entire requests and responses information in the DEBUG log level in the logs. By default, the log level is set to INFO level. If the DEBUG level is enabled, the sensitive information will be exposed via the requests and responses output log. The entire lists of impacted requests and responses are:
Versions affected | Apache Kafka Clients (kafka-clients) 0.11.0 through 3.9.1, 4.0.0 |
Fixed versions | 3.9.2, 4.0.1, 4.1.0 |
Impact | Sensitive information exposure through network client log output |
Advice | Kafka users are advised to use INFO log level or higher for NetworkClient class or upgrade to 3.9.2, 4.0.1, 4.1.0, or later to address this vulnerability. |
Issue announced | 17 Apr 2026 |
When sasl.enabled.mechanisms=OAUTHBEARER is configured on the server side, by default the broker property sasl.oauthbearer.jwt.validator.class is set to org.apache.kafka.common.security.oauthbearer.DefaultJwtValidator.
It accepts any JWT token without validating its signature, issuer, or audience. An attacker can generate a JWT token from any issuer with the preferred_username set to any user, and the broker will accept it.
Versions affected | 4.1.0 - 4.1.1 |
Fixed versions | 4.1.2, 4.2.0 |
Impact | An attacker can generate a JWT token from any issuer with the |
Advice | We advise the Kafka users using kafka v4.1.0 or v4.1.1 to set the config |
Issue announced | 17 Apr 2026 |
A race condition in the Apache Kafka Java producer client’s buffer pool management can cause messages to be silently delivered to incorrect topics.
When a produce batch expires due to delivery.timeout.ms while a network request containing that batch is still in flight, the batch’s ByteBuffer is prematurely deallocated and returned to the buffer pool. If a subsequent producer batch—potentially destined for a different topic—reuses this freed buffer before the original network request completes, the buffer contents may become corrupted. This can result in messages being delivered to unintended topics without any error being reported to the producer.
Data Confidentiality: Messages intended for one topic may be delivered to a different topic, potentially exposing sensitive data to consumers who have access to the destination topic but not the intended source topic.
Data Integrity: Consumers on the receiving topic may encounter unexpected or incompatible messages, leading to deserialization failures, processing errors, and corrupted downstream data.
Credit: Bharath Vissapragada (reporter), Donny Nadolny (finder, remediation developer)
References: KAFKA-19012, CVE-2026-35554
Versions affected | Apache Kafka Clients (kafka-clients) 2.8.0 through 3.9.1, 4.0.0 through 4.0.1, 4.1.0 through 4.1.1 |
Fixed versions | 3.9.2, 4.0.2, 4.1.2, 4.2.0 |
Impact | Kafka producer messages may be silently delivered to incorrect topics due to a buffer pool race condition, potentially exposing sensitive data to unintended consumers and causing data integrity issues. |
Advice | Kafka users are advised to upgrade to 3.9.2, 4.0.2, 4.1.2, 4.2.0, or later to address this vulnerability. |
Issue announced | 7 Apr 2026 |
In CVE-2023-25194, we announced the RCE/Denial of service attack via SASL JAAS JndiLoginModule configuration in Kafka Connect API. But not only Kafka Connect API is vulnerable to this attack, the Apache Kafka brokers also have this vulnerability. To exploit this vulnerability, the attacker needs to be able to connect to the Kafka cluster and have the AlterConfigs permission on the cluster resource.
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 3.4.0, and “com.sun.security.auth.module.JndiLoginModule,com.sun.security.auth.module.LdapLoginModule” is disabled by default in Apache Kafka 3.9.1/4.0.0.
Versions affected | 2.0.0 - 3.3.2 |
Fixed versions | 3.9.1, 4.0.0 |
Impact | Possible RCE/Denial of service attack via SASL JAAS JndiLoginModule configuration |
Advice | We advise all Kafka users to upgrade kafka to version >=3.9.1. |
Issue announced | 9 Jun 2025 |
A possible security vulnerability has been identified in Apache Kafka. This requires access to a alterConfig to the cluster resource, or 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 clusters since Apache Kafka 2.0.0 (Kafka Connect 2.3.0). When configuring the broker via config file or AlterConfig command, or connector via the Kafka 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.LdapLoginModule”, 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.9.1/4.0.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,com.sun.security.auth.module.LdapLoginModule” are disabled in Apache Kafka Connect 3.9.1/4.0.0.
Versions affected | 2.3.0 - 3.9.0 |
Fixed versions | 3.9.1, 4.0.0 |
Impact | Possible RCE attack via SASL JAAS LdapLoginModule configuration |
Advice | We advise all Kafka users to upgrade kafka to version >=3.9.1. |
Issue announced | 9 Jun 2025 |
A possible arbitrary file read and SSRF vulnerability has been identified in Apache Kafka Client. Apache Kafka Clients accept configuration data for setting the SASL/OAUTHBEARER connection with the brokers, including “sasl.oauthbearer.token.endpoint.url” and “sasl.oauthbearer.jwks.endpoint.url”. Apache Kafka allows clients to read an arbitrary file and return the content in the error log, or sending requests to an unintended location. In applications where Apache Kafka Clients configurations can be specified by an untrusted party, attackers may use the “sasl.oauthbearer.token.endpoint.url” and “sasl.oauthbearer.jwks.endpoint.url” configuration to read arbitrary contents of the disk and environment variables or make requests to an unintended location. In particular, this flaw may be used in Apache Kafka Connect to escalate from REST API access to filesystem/environment/URL access, which may be undesirable in certain environments, including SaaS products.
Since Apache Kafka 3.9.1/4.0.0, we have added a system property ("-Dorg.apache.kafka.sasl.oauthbearer.allowed.urls") to set the allowed urls in SASL JAAS configuration. In 3.9.1, it accepts all urls by default for backward compatibility. However in 4.0.0 and newer, the default value is empty list and users have to set the allowed urls explicitly.
Versions affected | 3.1.0 - 3.9.0 |
Fixed versions | 3.9.1, 4.0.0 |
Impact | Arbitrary file read and SSRF vulnerability |
Advice | We advise all Kafka users to upgrade kafka to version >=3.9.1 and set the JVM system property |
Issue announced | 9 Jun 2025 |
Apache Kafka’s implementation of the Salted Challenge Response Authentication Mechanism (SCRAM) did not fully adhere to the requirements of RFC 5802. Specifically, as per RFC 5802, the server must verify that the nonce sent by the client in the second message matches the nonce sent by the server in its first message. However, Kafka’s SCRAM implementation did not perform this validation.
This vulnerability is exploitable only when an attacker has plaintext access to the SCRAM authentication exchange. However, the usage of SCRAM over plaintext is strongly discouraged as it is considered an insecure practice. Apache Kafka recommends deploying SCRAM exclusively with TLS encryption to protect SCRAM exchanges from interception. Deployments using SCRAM with TLS are not affected by this issue.
Versions affected | 0.10.2.0 - 3.7.1, 3.8.0 |
Fixed versions | 3.7.2, 3.8.1, 3.9.0 |
Impact | SCRAM authentication vulnerable to replay attacks when used without encryption. |
Advice |
|
Issue announced | 18 Dec 2024 |
Apache Kafka Clients accept configuration data for customizing behavior, and includes ConfigProvider plugins in order to manipulate these configurations. Apache Kafka also provides FileConfigProvider, DirectoryConfigProvider, and EnvVarConfigProvider implementations which include the ability to read from disk or environment variables.
In applications where Apache Kafka Clients configurations can be specified by an untrusted party, attackers may use these ConfigProviders to read arbitrary contents of the disk and environment variables. In particular, this flaw may be used in Apache Kafka Connect to escalate from REST API access to filesystem/environment access, which may be undesirable in certain environments, including SaaS products.
Versions affected | 2.3.0 - 3.7.0 |
Fixed versions | 3.7.1, 3.8.0 |
Impact | Contents of disks and environment variables of applications using Kafka Clients may be leaked to untrusted parties. |
Advice |
|
Issue announced | 18 Nov 2024 |
While an Apache Kafka cluster is being migrated from ZooKeeper mode to KRaft mode, in some cases ACLs will not be correctly enforced. Two preconditions are needed to trigger the bug:
Versions affected | 3.5.0 - 3.6.1 |
Fixed versions | 3.6.2 |
Impact | The impact depends on the ACLs in use. If only ALLOW ACLs were configured during the migration, the impact would be limited to availability impact. if DENY ACLs were configured, the impact could include confidentiality and integrity impact depending on the ACLs configured, as the DENY ACLs might be ignored due to this vulnerability during the migration period. |
Advice | We advise all Kafka users using ACLs to only perform ZooKeeper to KRaft migrations when using Kafka 3.6.2 or above. |
Issue announced | 12 Apr 2024 |
This CVE identifies a vulnerability in snappy-java which could be used to cause an Out-of-Memory (OOM) condition, leading to Denial-of-Service(DoS) on the Kafka broker. The vulnerability allows any user who can producer data to the broker to exploit the vulnerability by sending a malicious payload in the record which is compressed using snappy. For more details on the vulnerability, please refer to the following link: snappy-java GitHub advisory.
Versions affected | 0.8.0 - 3.5.0 |
Fixed versions | 3.5.1 |
Impact | 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. |
Advice | 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. |
Issue announced | 5 Jul 2023 |
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 2.3.0. This will allow to perform JNDI requests that result in Denial of service/remote code execution.
Versions affected | Apache Kafka Connect API (connect-api,connect-runtime) : 2.3.0 - 3.3.2 |
Fixed versions | Apache Kafka Connect API (connect-api,connect-runtime) : 3.4.0 |
Impact | When configuring the connector via the Kafka Connect REST API, an authenticated operator can set the |
Advice | 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. |
Issue announced | 8 Feb 2023 |
This CVE identified a flaw where it allows the malicious unauthenticated clients to allocate large amounts of memory on brokers. This can lead to brokers hitting OutOfMemoryException and causing denial of service.
Versions affected | 2.8.0 - 2.8.1, 3.0.0 - 3.0.1, 3.1.0 - 3.1.1, 3.2.0 - 3.2.1 |
Fixed versions | 2.8.2, 3.0.2, 3.1.2, 3.2.3 |
Impact | Example scenarios in which attacker can cause OutOfMemoryError on brokers |
Issue announced | 19 Sep 2022 |
This CVE identified a flaw where it allows the attacker to provide a TopicConnectionFactoryBindingName configuration that will cause JMSSink to perform JNDI requests that result in remote code execution in a similar fashion to CVE-2021-4104.
Versions affected | All AK versions |
Fixed versions | In the absence of a new log4j 1.x release, one can remove JMSSink class from the log4j-1.2.17.jar artifact. |
Impact | When the attacker has write access to the Log4j configuration or if the configuration references an LDAP service the attacker has access to. The attacker can provide a configuration causing JMSSink to perform JNDI requests that result in remote code execution. |
Issue announced | 18 Jan 2022 |
This CVE identified a flaw where it allows a remote attacker to run SQL statements in the database if the deployed application is configured to use JDBCAppender with certain interpolation tokens.
Versions affected | All AK versions |
Fixed versions | In the absence of a new log4j 1.x release, one can remove JDBCAppender class from the log4j-1.2.17.jar artifact. |
Impact | This issue could result in a SQL injection attack when the application is configured to use JDBCAppender. |
Issue announced | 18 Jan 2022 |
This CVE identified a flaw where it allows an attacker to send a malicious request with serialized data to the component running log4j 1.x to be deserialized when the chainsaw component is run. Chainsaw is a standalone GUI for viewing log entries in log4j. An attacker not only needs to be able to generate malicious log entries, but also, have the necessary access and permissions to start chainsaw (or if it is already enabled by a customer / consumer of Apache Kafka).
Versions affected | All AK versions |
Fixed versions | In the absence of a new log4j 1.x release, one can remove Chainsaw from the log4j-1.2.17.jar artifact. |
Impact | When an attacker has the ability to start Chainsaw and is able to generate malicious log entries it allows deserialization of untrusted data. |
Issue announced | 18 Jan 2022 |
Some components in Apache Kafka use Log4j-v1.2.17 there is no dependence on Log4j v2.*. Check with the vendor of any connector plugin that includes a Log4J 2.x JAR file.
Users should NOT be impacted by this vulnerability
Versions affected | NA |
Fixed versions | NA |
Impact | NA |
Issue announced | 14 Dec 2021 |
Some components in Apache Kafka use Log4j-v1.2.17 there is no dependence on Log4j v2.*. Check with the vendor of any connector plugin that includes a Log4J 2.x JAR file.
Lookups feature was introduced in Log4j v2.x in order to allow specifying Log4j configuration parameters in arbitrary locations (even outside of the configuration files). Log4j v1.x does not offer the same functionality and thus is not vulnerable to CVE-2021-44228.
Users should NOT be impacted by this vulnerability
Versions affected | NA |
Fixed versions | NA |
Impact | NA |
Issue announced | 09 Dec 2021 |
The following components in Apache Kafka use Log4j-v1.2.17: broker, controller, zookeeper, connect, mirrormaker and tools. Clients may also be configured to use Log4j-v1.x.
Version 1.x of Log4J can be configured to use JMS Appender, which publishes log events to a JMS Topic. Log4j 1.x is vulnerable if the deployed application is configured to use JMSAppender.
Versions affected | All versions |
Fixed versions | In the absence of a new log4j 1.x release, one can remove JMSAppender from the log4j-1.2.17.jar artifact. Commands are listed in the page http://slf4j.org/log4shell.html. We also recommend that configuration files be protected against write access as stated in http://slf4j.org/log4shell.html. |
Impact | This issue could result in a remote code execution attack when the application is configured to use JMSAppender AND the attacker has access to directly modify the TopicBindingName or TopicConnectionFactoryBindingName configuration variables in property files which is typically an unlikely exploitation scenario. |
Issue announced | 09 Dec 2021 |
Some components in Apache Kafka use Arrays.equals to validate a password or key, which is vulnerable to timing attacks that make brute force attacks for such credentials more likely to be successful. Users should upgrade to 2.8.1 or higher, or 3.0.0 or higher where this vulnerability has been fixed.
Versions affected | 2.0.0, 2.0.1, 2.1.0, 2.1.1, 2.2.0, 2.2.1, 2.2.2, 2.3.0, 2.3.1, 2.4.0, 2.4.1, 2.5.0, 2.5.1, 2.6.0, 2.6.1, 2.6.2, 2.7.0, 2.7.1, 2.8.0. |
Fixed versions | 2.6.3, 2.7.2, 2.8.1, 3.0.0 and later |
Impact | This issue could result in privilege escalation. |
Issue announced | 21 Sep 2021 |
When Connect workers in Apache Kafka 2.0.0, 2.0.1, 2.1.0, 2.1.1, 2.2.0, 2.2.1, or 2.3.0 are configured with one or more config providers, and a connector is created/updated on that Connect cluster to use an externalized secret variable in a substring of a connector configuration property value (the externalized secret variable is not the whole configuration property value), then any client can issue a request to the same Connect cluster to obtain the connector’s task configurations and the response will contain the plaintext secret rather than the externalized secrets variable. Users should upgrade to 2.2.2 or higher, or 2.3.1 or higher where this vulnerability has been fixed.
Versions affected | 2.0.0, 2.0.1, 2.1.0, 2.1.1, 2.2.0, 2.2.1, 2.3.0 |
Fixed versions | 2.2.2, 2.3.1 and later |
Impact | This issue could result in exposing externalized connector secrets. |
Issue announced | 13 Jan 2020 |
In Apache Kafka versions between 0.11.0.0 and 2.1.0, it is possible to manually craft a Produce request which bypasses transaction/idempotent ACL validation. Only authenticated clients with Write permission on the respective topics are able to exploit this vulnerability. Users should upgrade to 2.1.1 or later where this vulnerability has been fixed.
Versions affected | 0.11.0.0 to 2.1.0 |
Fixed versions | 2.1.1 and later |
Impact | This issue could result in privilege escalation. |
Issue announced | 10 July 2019 |
Authenticated Kafka users may perform action reserved for the Broker via a manually created fetch request interfering with data replication, resulting in data loss.
Versions affected | 0.9.0.0 to 0.9.0.1, 0.10.0.0 to 0.10.2.1, 0.11.0.0 to 0.11.0.2, 1.0.0 |
Fixed versions | 0.10.2.2, 0.11.0.3, 1.0.1, 1.1.0 |
Impact | This issue could potentially lead to data loss. |
Issue announced | 26 July 2018 |
Authenticated Kafka clients may use impersonation via a manually crafted protocol message with SASL/PLAIN or SASL/SCRAM authentication when using the built-in PLAIN or SCRAM server implementations in Apache Kafka.
Versions affected | 0.10.0.0 to 0.10.2.1, 0.11.0.0 to 0.11.0.1 |
Fixed versions | 0.10.2.2, 0.11.0.2, 1.0.0 |
Impact | This issue could result in privilege escalation. |
Issue announced | 26 July 2018 |
Our code is kept in Apache GitHub repo. You can check it out like this:
git clone https://github.com/apache/kafka.git kafka
Information on contributing patches can be found here.
Official releases are available here.
The source code for the web site and documentation can be checked out from Apache GitHub repo:
git clone -b asf-site https://github.com/apache/kafka-site.git
We are happy to received patches for the website and documentation. We think documentation is a core part of the project and welcome any improvements, suggestions, or clarifications. The procedure of contributing to the documentation can also be found here.
To setup IDEs for development, following this guide on the wiki.
We are always very happy to have contributions, whether for trivial cleanups or big new features.
If you don’t know Java or Scala you can still contribute to the project. An important area is the clients. We want to have high quality, well documented clients for each programming language. These, as well as the surrounding ecosystem of integration tools that people use with Kafka®, are critical aspects of the project.
Nor is code the only way to contribute to the project. We strongly value documentation and gladly accept improvements to the documentation.
Reporting potential issues as JIRA tickets is more than welcome as a significant contribution to the project. But please be aware that JIRA tickets should not be used for FAQs: if you have a question or are simply not sure if it is really an issue or not, please contact us first before you create a new JIRA ticket. To create a new JIRA ticket, please follow the instructions in this page.
To submit a change for inclusion, please do the following:
docs so that changes to that can be done in the same PR as changes to the code. Website doc change instructions are given below.To submit a change for inclusion please do the following:
The easiest way to get started working with the code base is to pick up a really easy JIRA and work on that. This will help you get familiar with the code base, build system, review process, etc. We flag these kind of starter bugs here.
Please request a JIRA account using ASF’s Self-serve portal. After that you can assign yourself to the JIRA ticket you have started working on so others will notice.
If your work is considered a “major change” then you would need to initiate a Kafka Improvement Proposal (KIP) along with the JIRA ticket (more details can be found here). Please ask us to grant you the permission on wiki space in order to create a KIP wiki page.
Once you have gotten through the basic process of checking in code, you may want to move on to a more substantial project. We try to curate this kind of project as well, and you can find these here.
We are always interested in adding new contributors. What we look for is a series of contributions, good taste, and an ongoing interest in the project. Kafka PMC looks at the following guidelines for promoting new committers:
The Apache build infrastructure has provided two roles to make project management easier. These roles allow non-committers to perform some administrative actions like triaging pull requests or triggering builds. See the ASF documentation (note: you need to be logged in to the wiki):
In an effort to keep the Apache Kafka project running smoothly, and also to help contributors become committers, we have enabled these roles (See the Apache Kafka Infra config). To keep this process lightweight and fair, we keep the list of contributors full by specifying the top N non-committers (sorted by number of commits they have authored in the last 12 months), where N is the maximum size of that list (currently 10). Authorship is determined by git shortlog. The list will be updated as part of the major/minor release process, three to four times a year.
These guidelines are meant to encourage consistency and best practices amongst people working on the Kafka® code base. They should be observed unless there is a compelling reason to ignore them.
We are following the style guide given here (though not perfectly). Below are some specifics worth noting:
vals when possible.aMethodName.LikeThis not LIKE_THIS.vals or vars instead. If (later on) you require a custom setter (or getter) for a var named myVar then add a shadow var myVar_underlying and override the setter (def myVar_=) and the getter (def myVar = myVar_underlying).Option to null in scala APIs.Utils.delete(true) prefer Utils.delete(recursive=true).fileChannel.force() and fileChannel.size. This helps emphasize that you are calling the method for the side effect, which is changing some state, not just getting the return value.TRACE, DEBUG, INFO, WARN, ERROR, and FATAL, they should be used as follows.INFO is the level you should assume the software will be run in. INFO messages are things which are not bad but which the user will definitely want to know about every time they occur.TRACE and DEBUG are both things you turn on when something is wrong and you want to figure out what is going on. DEBUG should not be so fine grained that it will seriously effect the performance of the server. TRACE can be anything. Both DEBUG and TRACE statements should be wrapped in an if(logger.isDebugEnabled) check to avoid pasting together big strings all the time.WARN and ERROR indicate something that is bad. Use WARN if you aren’t totally sure it is bad, and ERROR if you are.FATAL only right before calling System.exit().kafka.utils.TestUtils, they make a lot of the below things easier to get right.TestUtils.System.currentTimeMillis) but instead to use the kafka.utils.Time. This is a trait that has a mock implementation allowing you to programmatically and deterministically cause the passage of time when you inject this mock clock instead of the system clock.TestUtils has helpers for this stuff (e.g. TestUtils.choosePort will find a free port for you).@threadsafe when they are supposed to be and @notthreadsafe when they aren’t to help track this stuff.There are a few things that need to be considered in client code that are not a major concern on the server side.
Kafka’s Streams API (aka Kafka Streams) uses a few more additional coding guidelines. All contributors should follow these the get a high quality and uniform code base. Some rules help to simplify PR reviews and thus make the life of all contributors easier.
final when possible. This holds for all class members, local variables, loop variables, and method parameters.{@code null}).docs/. Doc changes are not additional work (i.e., no follow up PRs) but part of the actual PR (can also be a sub-task).shouldNotAcceptNullAsTopicName()).@Test(expected = SomeException.class) only for single line tests../gradlew clean checkstyleMain checkstyleTest before opening/updating a PR.The project goal is to have 3 releases a year, which means a release every 4 months. Bugfix releases are made as needed for supported releases only. It is possible to verify every download by following these procedures and using these KEYS.
Kafka 4.4.0 includes a significant number of new features and fixes. For more information, please read our blog post, the detailed Upgrade Notes and the Release Notes.
Kafka 4.3.2 fixes around 60 issues since the 4.3.1 release, most notably two potential data loss issues in tiered storage size-retention (KAFKA-20732) and time index truncation (KAFKA-20979), along with dependency updates addressing published CVEs in jackson-databind, lz4-java, log4j and jetty. For more information, please read our blog post, the detailed Upgrade Notes and the Release Notes.
Kafka 4.2.2 fixes around 33 issues since the 4.2.1 release. For more information, please read our blog post, the detailed Upgrade Notes and the Release Notes.
Kafka 4.3.1 fixes around 15 issues since the 4.3.0 release, most notably a critical Kafka Streams RocksDB native memory leak (KAFKA-20616). For more information, please read our blog post, the detailed Upgrade Notes and the Release Notes.
Kafka 4.3.0 includes a significant number of new features and fixes. For more information, please read our blog post, the detailed Upgrade Notes and the Release Notes.
Kafka 4.2.1 fixes around 25 issues since the 4.2.0 release. For more information, please read our blog post, the detailed Upgrade Notes and the Release Notes.
Kafka 4.2.0 includes a significant number of new features and fixes. For more information, please read our blog post, the detailed Upgrade Notes and the Release Notes.
Kafka 4.1.2 fixes 30 issues since the 4.1.1 release. For more information, please read our blog post, the detailed Upgrade Notes and the Release Notes.
Kafka 4.1.1 fixes 18 issues since the 4.1.0 release. For more information, please read our blog post, the detailed Upgrade Notes and the Release Notes.
Kafka 4.1.0 includes a significant number of new features and fixes. For more information, please read our blog post and the detailed Release Notes.
Kafka 4.0.2 fixes 42 issues since the 4.0.1 release. For more information, please read our blog post, the detailed Upgrade Notes and the Release Notes.
Kafka 4.0.1 fixes 49 issues since the 4.0.0 release. For more information, please read our blog post, the detailed Upgrade Notes and the Release Notes.
Kafka 4.0.0 includes a significant number of new features and fixes. For more information, please read our blog post and the detailed Release Notes.
Kafka 3.9.2 fixes 35 issues since the 3.9.1 release. For more information, please read our blog post, the detailed Upgrade Notes and the Release Notes.
Kafka 3.9.1 fixes 66 issues since the 3.9.0 release. For more information, please read our blog post and the detailed Release Notes.
Kafka 3.9.0 includes a significant number of new features and fixes. For more information, please read our blog post and the detailed Release Notes.
Kafka 3.8.1 includes a significant number of new features and fixes. For more information, please read our blog post and the detailed Release Notes.
Kafka 3.8.0 includes a significant number of new features and fixes. For more information, please read our blog post and the detailed Release Notes.
Kafka 3.7.2 fixes 21 issues since the 3.7.1 release. For more information, please read our blog post and the detailed Release Notes.
Kafka 3.7.1 includes a significant number of new features and fixes. For more information, please read our blog post and the detailed Release Notes.
Kafka 3.7.0 includes a significant number of new features and fixes. For more information, please read our blog post and the detailed Release Notes.
Kafka 3.6.2 fixes 28 issues since the 3.6.1 release. For more information, please read the detailed Release Notes.
Kafka 3.6.1 fixes 30 issues since the 3.6.0 release. For more information, please read the detailed Release Notes.
Kafka 3.6.0 includes a significant number of new features and fixes. For more information, please read our blog post and the detailed Release Notes.
Kafka 3.5.2 contains security fixes and bug fixes. For more information, please read our blog post and the detailed Release Notes.
Kafka 3.5.1 is a security patch release. It contains security fixes and regression fixes. For more information, please read our blog post and the detailed Release Notes.
Kafka 3.5.0 includes a significant number of new features and fixes. For more information, please read our blog post and the detailed Release Notes.
Kafka 3.4.1 fixes 58 issues since the 3.4.0 release. For more information, please read the detailed Release Notes
Kafka 3.4.0 includes a significant number of new features and fixes. For more information, please read our blog post and the detailed Release Notes.
Kafka 3.3.2 fixes 20 issues since the 3.3.1 release. For more information, please read the detailed Release Notes
Kafka 3.3.1 includes a number of significant new features. Here is a summary of some notable changes:
For more information, please read the detailed 3.3.1 and 3.3.0 Release Notes.
A significant bug was found in the 3.3.0 release after artifacts were pushed to Apache and Maven central but prior to the release announcement. As a result, the decision was made to not announce 3.3.0 and instead release 3.3.1 with the fix. It is recommended that 3.3.0 not be used.
Kafka 3.2.3 fixes CVE-2022-34917 and 7 other issues since the 3.2.1 release. For more information, please read the detailed Release Notes.
A significant bug was found in the 3.2.2 release after artifacts were pushed to Maven central but prior to the release announcement. As a result the decision was taken to not announce 3.2.2 and release 3.2.3 with the fix. It is recommended that 3.2.2 not be used.
Kafka 3.2.1 fixes 13 issues since the 3.2.0 release. For more information, please read the detailed Release Notes.
Kafka 3.2.0 includes a number of significant new features. Here is a summary of some notable changes:
For more information, please read the detailed Release Notes.
Kafka 3.1.2 fixes CVE-2022-34917 and 4 other issues since the 3.1.1 release. For more information, please read the detailed Release Notes.
Kafka 3.1.1 fixes 29 issues since the 3.1.0 release. For more information, please read the detailed Release Notes.
Kafka 3.1.0 includes a number of significant new features. Here is a summary of some notable changes:
For more information, please read the detailed Release Notes.
Kafka 3.0.2 fixes CVE-2022-34917 and 10 other issues since the 3.0.1 release. For more information, please read the detailed Release Notes.
Kafka 3.0.1 fixes 29 issues since the 3.0.0 release. For more information, please read the detailed Release Notes.
Kafka 3.0.0 includes a number of significant new features. Here is a summary of some notable changes:
For more information, please read the detailed Release Notes.
Kafka 2.8.2 fixes CVE-2022-34917 and 11 other issues since the 2.8.1 release. For more information, please read the detailed Release Notes.
Kafka 2.8.1 fixes 49 issues since the 2.8.0 release. For more information, please read the detailed Release Notes.
Kafka 2.8.0 includes a number of significant new features. Here is a summary of some notable changes:
For more information, please read the detailed Release Notes.
Kafka 2.7.2 fixes 26 issues since the 2.7.1 release. For more information, please read the detailed Release Notes.
Kafka 2.7.1 fixes 45 issues since the 2.7.0 release. For more information, please read the detailed Release Notes.
Kafka 2.7.0 includes a number of significant new features. Here is a summary of some notable changes:
For more information, please read the detailed Release Notes.
Kafka 2.6.3 fixes 11 issues since the 2.6.2 release. For more information, please read the detailed Release Notes.
Kafka 2.6.2 fixes 35 issues since the 2.6.1 release. For more information, please read the detailed Release Notes.
Kafka 2.6.1 fixes 41 issues since the 2.6.0 release. For more information, please read the detailed Release Notes.
Kafka 2.6.0 includes a number of significant new features. Here is a summary of some notable changes:
client.dns.lookup configuration is now use_all_dns_ipsFor more information, please read the detailed Release Notes.
Kafka 2.5.1 fixes 72 issues since the 2.5.0 release. For more information, please read the detailed Release Notes.
Kafka 2.5.0 includes a number of significant new features. Here is a summary of some notable changes:
For more information, please read the detailed Release Notes.
For more information, please read the detailed Release Notes.
Kafka 2.4.0 includes a number of significant new features. Here is a summary of some notable changes:
For more information, please read the detailed Release Notes.
For more information, please read the detailed Release Notes.
Kafka 2.3.0 includes a number of significant new features. Here is a summary of some notable changes:
For more information, please read the detailed Release Notes.
Kafka 2.2.0 includes a number of significant new features. Here is a summary of some notable changes:
bin/kafka-topics.sh adds AdminClient supportgroup.id is null instead of empty stringclose(Duration)close(Duration)flatTransform() operator in Streams DSLAutoClosable to support try-with-resourceclient.id via ThreadMetadata-min, -avg and -max metrics will now output NaN as default valueFor more information, please read the detailed Release Notes.
Kafka 2.1.0 includes a number of significant new features. Here is a summary of some notable changes:
For more information, please read the detailed Release Notes.
Kafka 2.0.0 includes a number of significant new features. Here is a summary of some notable changes:
For more information, please read the detailed Release Notes.
Kafka 1.1.0 includes a number of significant new features. Here is a summary of some notable changes:
For more information, please read the detailed Release Notes.
Kafka 1.0.0 is no mere bump of the version number. The Apache Kafka Project Management Committee has packed a number of valuable enhancements into the release. Here is a summary of a few of them:
For more information, please read the detailed Release Notes.
Meetups focused on Kafka and the Kafka ecosystem are currently running virtually, online as well as live in the following locations:
Conference for anyone currently using or excited to learn about Kafka and real time data streaming.
The following podcasts cover Apache Kafka and event streaming topics.
by Confluent — episodes cover a variety of topics surrounding Apache Kafka, real-time data streaming, and the cloud.
by Tobias Macey — each new episode provides useful and informative insights into the projects, platforms, and practices that data engineers, team leaders, and data scientists need to know about to learn and grow in their career
by Jeff Meyerson — while this podcast is rather broad in scope, its data subcategory is useful for Kafka practitioners
by Hugh Evans — a newsletter and podcast that covers the latest news, trends, and best practices in the world of Apache Kafka and event streaming featuring guests from the Kafka community and beyond
The Apache Software Foundation takes security issues very seriously. Apache Kafka® specifically offers security features and is responsive to issues around its features. If you have any concern around Kafka Security or believe you have uncovered a vulnerability, we suggest that you get in touch via the e-mail address security@kafka.apache.org. In the message, try to provide a description of the issue and ideally a way of reproducing it. The security team will get back to you after assessing the description.
Note that this security address should be used only for undisclosed vulnerabilities. Dealing with fixed issues or general questions on how to use the security features should be handled regularly via the user and the dev lists. Please report any security problems to the project security address before disclosing it publicly.
The ASF Security team maintains a page with a description of how vulnerabilities are handled, check their Web page for more information.
For a list of security issues fixed in released versions of Apache Kafka, see CVE list.
Many organizations use ‘security scanning’ tools to detect components for which advisories exist. While we generally encourage using such tools, since they are an important way users are notified of risks, our experience is that they produce a lot of false positives: when a dependency of Kafka contains a vulnerability, it is likely Kafka is using it in a way that is not affected. As such, we do not consider the fact that an advisory has been published for a Kafka dependency sensitive. Only when additional analysis suggests Kafka may be affected by the problem, we ask you to report this finding privately through security@kafka.apache.org.
When handling such warnings, you can:
The name of a 3rd party non-Java client or connector may include the Kafka trademark, as long as it doesn’t cause confusion with product names from Apache Kafka and it doesn’t imply that it’s endorsed by Apache. Third parties may not use the trademark MirrorMaker without written consent from Apache. All use of Kafka and other Apache trademarks must comply with Apache’s trademark guidelines.
Third parties who use the Kafka mark in this way must include following disclaimer:
KAFKA is a registered trademark of The Apache Software Foundation and
has been licensed for use by [3rd party name]. [3rd party name] has no
affiliation with and is not endorsed by The Apache Software Foundation.
The following talks, with video recordings and slides available, achieved the best ratings by the community at the Kafka Summit conferences from 2018 onwards. Thanks to all the speakers for their hard work!