Skip to content
NewA calmer, faster ZeroHour

CVE-2026-111496

Integer overflow hang in Kafka Streams stream-time punctuation

CVSS
—
EPSS
—
Published
·
Modified
Analyze CVE-2026-111496 with Vani AIImpact, affected versions, exploitation status, mitigations and detection

Kafka Streams computes the next stream-time punctuation without an overflow check. A producer who can write a record with a timestamp at or near Long.MAX_VALUE to a source topic whose topology uses stream-time punctuation makes the next punctuation time negative. PunctuationQueue then loops on that time while holding a lock, stalling the StreamThread. The hang returns on restart because the record stays in the topic; only the Streams application is affected, not brokers. Brokers from Kafka 4.0.0 reject such timestamps by default, so this is reachable only on older brokers or where log.message.timestamp.after.max.ms has been relaxed.

What to do: Upgrade Kafka Streams to 4.2.2, 4.3.2, or 4.4.0. Keep log.message.timestamp.after.max.ms bounded on source topics and restrict write access to them.

ProductAffectedFixed in
Apache Kafka Streams—4.2.2, 4.3.2, and 4.4.0
Estimated exposure
No basis for an estimate.

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description · NVD

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.

Weakness
CWE-190, CWE-835

In the news

1 story