CVE-2026-114349: Apache Kafka: Denial of service via unbounded memory allocation when decoding compressed record batches
CVE-2026-114349 key facts
- CISA KEV
- Not listed (catalogue checked )
- Highest advisory rating
- Medium
- CVSS base score
- 6.5 (Red Hat)
- CVSS vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H· base score 6.5, scored by CISA-ADPAttack vector: network. Attack complexity: low. Privileges required: low. User interaction: none. Scope: unchanged. Confidentiality impact: none. Integrity impact: none. Availability impact: high.- Weakness
- CWE-789 Memory allocation with excessive size value
- CWE-400 Uncontrolled Resource Consumption
- CWE-1284 Improper validation of specified quantity in input
- CISA SSVC
- Exploitation: none observed. Automatable: no. Technical impact: partial. CISA, .
- Fixed releases
- Apache: 2.5.0, 4.0.0
- Red Hat: 4.2.2, 4.3.2, 4.4.0
- Assigned by
- apache (CNA)
- CVE record published
- Listed by VulniPulse
- Record changed
Ratings, versions and fixes are quoted from the vendor advisories that cover only CVE-2026-114349; each belongs to its advisory, not to every product listed. How records are collected and checked.
Description
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. 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 compression.type and records are re-encoded) and any consumer that fetches the record, denying service. On brokers started with -XX:+ExitOnOutOfMemoryError, a common hardening, a single crafted request terminates the broker JVM. More seriously, a crafted record is accepted at ingest and written to disk; when the log-cleaner later reads it on a compacted topic, the OutOfMemoryError (an Error, not an Exception) terminates the cleaner thread, which is not restarted. With the default of a single cleaner thread, log compaction then stops for the entire broker, including the internal __consumer_offsets and __transaction_state topics, and the condition persists across restarts until the offending record is removed. The impact is availability only; no data is disclosed or altered. Mitigation: Upgrade to Apache Kafka 4.2.2, 4.3.2, or 4.4.0, and set max.decompressed.message.bytes (at the broker and/or topic level) to a bounded value appropriate for your workload. Upgrading alone is not sufficient: for backward compatibility this configuration defaults to an effectively unlimited value (about 2 GiB), so a broker remains exposed until the limit is set. Choose a value at or slightly above the largest legitimate decompressed record your applications produce, and comfortably below the broker heap divided by the number of request-handler and cleaner threads. Until you can upgrade and configure the limit, restrict Write access to trusted producers; quotas and max.message.bytes do not mitigate this issue. Resolution: From Apache Kafka 4.2.2, 4.3.2, and 4.4.0: the broker validates a record's declared decompressed body size against max.decompressed.message.bytes before allocating, on the produce-validation, log-compaction, and timestamp-lookup paths, and rejects oversized or negative sizes with InvalidRecordException. Operators must set this configuration to a bounded value to be protected, as its default is effectively unlimited.
Text from the CVE.org record (apache).
How do I fix CVE-2026-114349?
Upgrade to a fixed release named by the vendor:
- Apache: 2.5.0, 4.0.0
- Red Hat: 4.2.2, 4.3.2, 4.4.0
- 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. (Apache)
- 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. (Apache)
Vendor advisories for CVE-2026-114349
Apache
1 advisory- Advisory severityUnrated
Advisory [CVE-2026-114349] Apache Kafka: Denial of service via unbounded memory allocation when decoding compressed record batches
CVE-2026-114349Source published Source updated
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. Impact: An authenticated principal with Write on a topic can crash broker request-handler threads (reached when a batch's codec differs…
- Affected products in this advisory
- Apache Kafka
- Source-reported affected versions
- Apache Kafka 0.11.0.0 before 2.5.0
- Apache Kafka 0.11.0.0 before 4.0.0
- Apache Kafka 2.4.0 through 4.1.2
- Apache Kafka 4.2.0 through 4.2.1
1 more entries in the full advisory.
- Source-reported fixed versions
- 2.5.0
- 4.0.0
- Mitigation guidance
- 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 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.
- Mitigation: Upgrade to Apache Kafka 4.2.2, 4.3.2, or 4.4.0, and set max.decompressed.message.bytes (at the broker and/or topic level) to a bounded value appropriate for your workload.
- Upgrading alone is not sufficient: for backward compatibility this configuration defaults to an effectively unlimited value (about 2 GiB), so a broker remains exposed until the limit is set.
- Workarounds
- Until you can upgrade and configure the limit, restrict Write access to trusted producers; quotas and max.message.bytes do not mitigate this issue.
Red Hat
1 advisory- Advisory severityMedium6.5
Medium [CVE-2026-114349] Denial of Service via excessive memory allocation during record decompression
CVE-2026-114349Source published Source updated
Denial of Service via excessive memory allocation during record decompression. Red Hat rates this moderate (CVSS 6.5). Weakness: CWE-770.
- Related products — impact not confirmed
- No product details extracted. Check the source bulletin.
- Source-reported affected versions
- < 4.2.2
- < 4.3.2
- < 4.4.0
- Source-reported fixed versions
- 4.2.2
- 4.3.2
- 4.4.0
- Mitigation guidance
- No mitigation guidance extracted; consult the source.
References
- CVE-2026-114349 recordCVE.org
- CVE-2026-114349 detailNVD
- kafka.apache.org/cve-listvendor-advisory
- lists.apache.org/thread/hdy56hrd1h9btf30jb1noswsx32l17dqmailing-list
Timeline
- CVE record published
- First vendor advisory listed by VulniPulse
- CVE record last updated
More Apache advisories
CVE-2026-112375Oct 28, 2026Apache Kafka: Unauthorized principal can read arbitrary broker filesCVE-2026-116593Oct 28, 2026Apache Kafka: Kafka Connect configuration provider values exposedCVE-2026-115644Oct 28, 2026Apache Kafka: Connect Admin REST API Authentication Bypass via Unapplied REST ExtensionsCVE-2026-111551Oct 28, 2026Apache Kafka: Denial of service in Kafka Streams and client deserializersCVE-2026-111496Oct 28, 2026Apache Kafka: Kafka Streams StreamThread hang from integer overflow in stream-timeCVE-2026-111115Oct 28, 2026Apache Kafka: Broker OutOfMemoryError
Get an email when Apache publishes the next one.
See Apache's last 90 days of advisories first. Then choose one product with live alerts free for life, or a free month of real-time alerts on everything with the severity, the fixed version and the vendor's link (card needed, then US$15/month; we email you before the first charge).
iPhone and Android apps · New on the App Store
Get alerts for new CVEs on your phone.
Choose a whole vendor or a precise platform, then receive matching security advisories by phone notification, email, or both. Coverage follows 34 official vendor sources and 160+ reviewed platform categories.