Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain producer write access to source topic
-
DeliveryPublish record with timestamp near Long.MAX_VALUE
-
ExploitBroker stores future-dated record
-
ExecutionPunctuation arithmetic overflows to negative time
-
PersistStreamThread loops on lock indefinitely
-
ImpactStreams application unresponsive, recurs on restart
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Integer overflow checks
MITRE ATT&CK
1 technique across 1 tactic: Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Three concrete prerequisites must all hold: (1) the attacker has write/producer access to a source topic; (2) that topic feeds a Kafka Streams topology that schedules stream-time (not wall-clock) punctuation; and (3) a broker actually stores a record whose timestamp is at or near Long.MAX_VALUE. Condition (3) is the main limiter - Apache Kafka brokers from 4.0.0 reject timestamps more than one hour in the future by default via log.message.timestamp.after.max.ms, so the attack is only reachable against older brokers or deployments that have widened or disabled that bound. Impact is limited to availability of the Streams application; brokers and the broader cluster are unaffected. Authentication requirements are not confirmed from available data because no CVSS vector was provided, though the description states write access to a source topic is required. |
| Impact | No CVSS vector, EPSS score, KEV entry, or public PoC is present in the input, so quantitative exploitation signals are absent and cannot be compared against each other. The vuln.today decision label is 'monitor', the lowest urgency tier, which is consistent with an availability-only defect (CWE-190 integer overflow leading to an indefinite lock-holding loop) that affects a single Kafka Streams application rather than brokers or the cluster. Impact is a denial of service against the StreamThread, with no confidentiality or integrity effect. Exploitation is further gated: the attacker needs write access to a source topic whose topology uses stream-time punctuation, and the hostile timestamp must actually be stored by a broker - brokers from Apache Kafka 4.0.0 reject timestamps more than one hour in the future by default (log.message.timestamp.after.max.ms), so on default modern deployments the record never persists and the bug is not reachable. The realistic footprint is therefore older brokers, or deployments that relaxed that bound. Net assessment: this is a genuine but bounded availability issue - a real priority only for operators still on vulnerable Streams versions who also run older/relaxed brokers and expose write access to punctuation-using source topics; for everyone on default 4.0.0+ brokers the practical risk is low. No active exploitation is indicated, and no public exploit identified at time of analysis. |
| Exploit ScenarioDerived | An actor with producer (write) rights to a source topic feeding a Kafka Streams topology that schedules stream-time punctuation sends a single record carrying a timestamp at or near Long.MAX_VALUE. Stream time advances to that value, the next punctuation time overflows to a negative number, and PunctuationQueue re-queues and loops on it indefinitely while holding a lock, hanging the StreamThread; because the poison record persists in the topic, the hang recurs on restart. No public exploit code is identified at time of analysis, and the record only takes effect if a broker stores the future timestamp (older or relaxed-config brokers). |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
Kafka Streams can be stalled indefinitely by a single record whose timestamp is at or near Long.MAX_VALUE, causing an integer overflow that moves the next stream-time punctuation to a negative time and makes PunctuationQueue re-queue it in a lock-holding loop until the StreamThread stops. EUVD lists Apache Kafka 1.1.0 through 4.1.2, 4.2.0 through 4.2.1, and 4.3.0 through 4.3.1 as affected; only the Streams application is impacted, not the brokers or cluster, and the hang returns on restart while the record stays in the topic. Exploitation requires producer write access to a source topic feeding a stream-time-punctuation topology and a broker that stores the extreme timestamp-brokers from 4.0.0 reject timestamps more than one hour in the future by default-so reachability is limited to older brokers or relaxed bounds; the assessed vector is CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H, no EPSS score is present, no KEV entry is listed, and no public exploit identified at time of analysis, with priority monitor.
RemediationAI
Vendor-released patch: upgrade Kafka Streams to 4.2.2, 4.3.2, or 4.4.0 (vendor advisory: https://kafka.apache.org/cve-list). The fix computes the next punctuation time with overflow-checked arithmetic clamped to Long.MAX_VALUE and re-queues a rescheduled punctuation only when its time moves forward. As defense in depth, keep log.message.timestamp.after.max.ms bounded on source topics and restrict write access to source topics; brokers from Apache Kafka 4.0.0 reject timestamps more than one hour in the future by default, so older brokers or deployments that widened or disabled that bound remain reachable until upgraded or the bound is enforced.
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
Kafka Streams is the client-side stream-processing library in Apache Kafka, and its stream-time clock is derived from record timestamps rather than wall-clock time. The vulnerable PunctuationSchedule.next() computes the next punctuation time as timestamp + (intervalsMissed + 1) * interval with no overflow check, which is CWE-190 (Integer Overflow or Wraparound). 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 negative time and loops on it indefinitely while holding a lock, stalling the StreamThread. The CPE is cpe:2.3:a:apache_software_foundation:apache_kafka:*:*:*:*:*:*:*:* and the affected component is the Streams application library; brokers and the cluster are not affected. Resolution in 4.2.2, 4.3.2, and 4.4.0 uses overflow-checked arithmetic clamped to Long.MAX_VALUE and re-queues a rescheduled punctuation only when its time moves forward. Tags include integer overflow and buffer overflow, but the described mechanism is integer overflow in punctuation scheduling; the trigger is the extreme record timestamp, and authentication requirements are not confirmed beyond the assessed PR:L and the stated write access to a source topic.
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
Requires topic write access (PR:L) over the network (AV:N); reachability depends on broker timestamp config beyond attacker control (AC:H); availability-only DoS so C:N/I:N/A:H.
Primary rating from Vendor (apache).
DescriptionCVE.org
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.
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 (log.message.timestamp.after.max.ms, one hour), so it is reachable only on older brokers or where that bound has been relaxed.
Mitigation:
Upgrade Kafka Streams to 4.2.2, 4.3.2, or 4.4.0. As defense in depth, keep log.message.timestamp.after.max.ms bounded on source topics and restrict write access to them.
Resolution:
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 Long.MAX_VALUE), and a rescheduled punctuation is re-queued only when its time moves forward.
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
Integer overflow occurs when an arithmetic operation produces a result that exceeds the maximum value a given integer type can store.
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
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)
Apache Kafka brokers that run SASL/OAUTHBEARER with the default DefaultJwtValidator and leave sasl.oauthbearer.jwks.endp
EUVD-2026-112171
GHSA-f6x4-cq8q-x8cq
CVE.org
Exploit-DB