In Spring for Apache Kafka, missing header validation in DeadLetterPublishingRecovererFactory enables denial of service via a poison-pill loop

MEDIUM | AUGUST 20, 2026 | CVE-2026-59317

Description

DeadLetterPublishingRecovererFactory reads the retry_topic-original-timestamp header from an inbound ConsumerRecord and passes its raw bytes directly to new BigInteger(header.value()) with no length or format validation. A Kafka producer with write access to a topic consumed by a @RetryableTopic listener can attach a malformed header (e.g. a zero-length byte array), causing a NumberFormatException in the destination resolver during recovery. This aborts dead-letter publication, the error handler seeks back to the failed offset, and the cycle repeats indefinitely, stalling partition consumption.

Affected Spring Products and Versions

Spring for Apache Kafka:

  • 4.1.0 - 4.1.0
  • 4.0.0 - 4.0.6
  • 3.0.0 - 3.3.16
  • 2.9.0 - 2.9.14
  • 2.8.12 and earlier

Mitigation

Users of affected versions should upgrade to the corresponding fixed version.
Fix versionAvailability
4.1.1OSS
4.1.0.1Enterprise Support Only
4.0.7OSS
4.0.6.1Enterprise Support Only
3.3.17Enterprise Support Only
2.9.15Enterprise Support Only
2.8.13Enterprise Support Only

No further mitigation steps are necessary.

History

  • 2026-08-20: Initial vulnerability report published.

Get ahead

VMware offers training and certification to turbo-charge your progress.

Learn more

Get support

Tanzu Spring offers support and binaries for OpenJDK™, Spring, and Apache Tomcat® in one simple subscription.

Learn more

Upcoming events

Check out all the upcoming events in the Spring community.

View all