Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with CLUSTER_ACTION privilege
-
ExploitSend FetchSnapshotRequest with empty topics or empty partitions
-
ExecutionFaulty validation indexes missing element
-
ImpactUnhandled exception terminates controller (DoS)
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Use of incorrect operator
|
| Exploitation Conditions | Requires an authenticated principal with CLUSTER_ACTION authorization, a privileged cluster-level permission normally granted only to broker/controller identities - not to ordinary producers/consumers - so the practical attacker is a compromised or malicious broker or a holder of inter-broker credentials. The vulnerable code path is the KRaft |
| Impact | No official CVSS vector or EPSS score was supplied, and the vuln.today Decision label is 'monitor' - the lowest-urgency signal in this dataset. The flaw is confirmed by the Apache patch PR (#23185) and the Kafka CVE list, but there is no CISA KEV listing, no EPSS probability, and no exploit reference, so there is no indication of active or widespread exploitation. The impact is availability-only (controller process termination); there is no confidentiality or integrity consequence. Crucially, exploitation requires an authenticated principal holding CLUSTER_ACTION authorization, which is a privileged, cluster-level permission normally reserved for broker/controller identities rather than ordinary clients - this sharply limits the realistic attacker population to a compromised or malicious broker, or an actor who has already obtained inter-broker credentials. The code evidence places the bug in the KRaft |
| Exploit ScenarioDerived | An actor who already holds CLUSTER_ACTION authorization (for example a compromised or rogue broker, or a stolen inter-broker credential) sends a crafted FetchSnapshotRequest whose topics array is empty or whose topic contains no partitions. The incorrect boolean operator in the handler's validation lets the request reach code that indexes the empty topic list, throwing an unhandled exception that terminates the KRaft controller process and causes a denial of service. No public exploit was identified at time of analysis; only the vendor patch and advisory are referenced. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
Denial of service in Apache Kafka's KRaft controller affects releases 2.8.0 through 4.2.1 and 4.3.0 through 4.3.1, where a remote authenticated principal holding CLUSTER_ACTION authorization can terminate the controller process by sending a crafted FetchSnapshotRequest whose topics array is empty or whose single topic carries no partitions. The impact is availability-only: the controller dies, taking cluster metadata management down with it, but no data is exposed or altered (assessed CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:N/I:N/A:H). CLUSTER_ACTION is a cluster-level permission normally held by broker/controller identities rather than ordinary producers or consumers, so the realistic attacker is a compromised or malicious broker or a holder of inter-broker credentials. No public exploit has been identified at time of analysis, no CISA KEV entry exists, and the vuln.today decision label is 'monitor'.
RemediationAI
Vendor-released patch: upgrade to Apache Kafka 4.2.2, 4.3.2, or 4.4.0, all of which contain the corrected topic/partition validation (PR apache/kafka#23185) so malformed FetchSnapshotRequests are rejected with INVALID_REQUEST rather than crashing the controller; clusters on unsupported 4.1.x and earlier branches should move to 4.2.2 or later, and the advisory is at https://kafka.apache.org/cve-list. Until patching is possible, restrict CLUSTER_ACTION authorization to the minimum set of broker and controller principals, since the trigger requires that cluster-level permission - the trade-off is tighter ACL surface that must be validated against inter-broker and controller traffic or replication breaks. Where the KRaft migration is not yet complete, remaining on ZooKeeper mode avoids the Raft FetchSnapshot path entirely, but that forgoes KRaft features and is not a long-term substitute for upgrading. Monitor controller logs for unhandled exceptions or unexpected process restarts as a detection signal, and note that no vendor-documented hotfix or configuration flag is identified in the available sources beyond upgrading.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The flaw is a classic CWE-480 (use of an incorrect operator) in the KRaft Raft layer of Apache Kafka, specifically in KafkaRaftClient.handleFetchSnapshotRequest and the parallel handleFetchSnapshotResponse path in the raft module. The original guard read if (data.topics().size() != 1 && data.topics().get(0).partitions().size() != 1); because the two checks were joined with && instead of ||, a request with an empty topics list short-circuits past the size check evaluation logic and the code proceeds to call data.topics().get(0), indexing a non-existent element. The same faulty construct allowed a topic entry containing zero partitions to pass validation. The upstream fix (PR apache/kafka#23185) replaces both call sites with helper methods RaftUtil.hasValidTopicPartition(FetchSnapshotRequestData) and hasValidTopicPartition(FetchSnapshotResponseData), each asserting topics().size() 1 && topics().get(0).partitions().size() 1, and adds unit tests covering both the empty-topics and empty-partitions cases, which now return Errors.INVALID_REQUEST instead of reaching the indexing path. Because this code lives in the Raft/KRaft consensus implementation, ZooKeeper-mode deployments do not exercise the vulnerable path; only KRaft-based controllers are exposed. The unhandled exception during request handling propagates far enough to terminate the controller process.
Know when Apache Kafka gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
Network-reachable RPC (AV:N) with a reliable crafted-request trigger (AC:L); CLUSTER_ACTION is a privileged cluster permission so PR:H; no data impact, availability-only controller crash (A:H).
Primary rating from Vendor (apache).
DescriptionCVE.org
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.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
More in Apache Kafka
View allApache Kafka 4.1.0 and 4.1.1 accept forged JWT tokens without signature validation, allowing remote unauthenticated atta
Apache Kafka's NetworkClient component logs entire request and response payloads at DEBUG level, exposing sensitive auth
Improper authorization in Apache Kafka 4.0.0-4.3.0 arises from a discrepancy between the documented ACL requirement and
Memory exhaustion in the Apache Kafka broker lets an authenticated principal holding Write permission on a topic submit
Apache Kafka brokers that have an authorizer enabled will read a file or environment variable from the broker host and r
Kafka Connect workers leak plaintext secrets through the REST API's /connector-plugins/{connector-type}/config/validate
Authentication bypass in Apache Kafka Connect's isolated admin REST API allows unauthenticated network attackers to read
Network-reachable, unauthenticated deserialization flaws in Apache Kafka’s clients library and Kafka Streams can force m
Kafka Streams can be stalled indefinitely by a single record whose timestamp is at or near Long.MAX_VALUE, causing an in
Unauthenticated remote attackers can exhaust broker heap and trigger process-wide GC stalls on Apache Kafka by declaring
Heap exhaustion in Apache Kafka allows remote attackers to crash brokers by sending requests that declare an array eleme
Apache Kafka brokers can be driven into heap exhaustion by any authenticated client because the PushTelemetry (KIP-714)
EUVD-2026-112210
GHSA-34hc-fwhq-c7v8
CVE.org
Exploit-DB