Skip to content
Heist/ feed
Back to feed
Unrated

Apache Kafka: Denial of service in Kafka Streams and client deserializers via unbounded memory allocation

Type: advisorySources: Official CVE List

Several Kafka deserialization paths read a size or count field from input data and use it directly to allocate an array, collection, or byte buffer, with no check against the bytes actually available. A small crafted input can therefore declare a very large size and force a multi-gigabyte allocation. The affected paths are, in Kafka Streams, ProcessorRecordContext (header count), ChangedDeserializer (varint value length), CombinedKeySchema (foreign-key length, which could also produce a negative size), ProcessorMetadata (key length), and AssignmentInfo group-assignment decoding; and, in the clients library, ListDeserializer (used by ListSerde). Impact: An attacker can trigger the oversized allocation and raise an OutOfMemoryError that crashes the affected consumer or Kafka Streams thread; the broker and the rest of the cluster are unaffected. The reachable surface depends on the path: writing a crafted record to a Streams application's internal changelog or repartition topics, or committing crafted offset metadata to its consumer group (Streams internal paths); writing a crafted record to any topic that a consumer reads with ListSerde (ListDeserializer); or, as a member of a Streams consumer group, returning crafted assignment data when elected leader (AssignmentInfo). Because a crafted record remains in its topic, the error can recur on restart. The record size limit (max.message.bytes) does not help, because the allocation is driven by a size field rather than by the input'

Products
Apache Kafka
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-111551
Confirmed fixed CVEs
Not specified
Updated in this feed
2 Nov 2026, 13:21 UTC · Revision 1

Source evidence

Apache Kafka: Denial of service in Kafka Streams and client deserializers via unbounded memory allocation

core-cve · Original source

Published 28 Oct 2026, 16:45 UTC

Several Kafka deserialization paths read a size or count field from input data and use it directly to allocate an array, collection, or byte buffer, with no check against the bytes actually available. A small crafted input can therefore declare a very large size and force a multi-gigabyte allocation. The affected paths are, in Kafka Streams, ProcessorRecordContext (header count), ChangedDeserializer (varint value length), CombinedKeySchema (foreign-key length, which could also produce a negative size), ProcessorMetadata (key length), and AssignmentInfo group-assignment decoding; and, in the clients library, ListDeserializer (used by ListSerde). Impact: An attacker can trigger the oversized allocation and raise an OutOfMemoryError that crashes the affected consumer or Kafka Streams thread; the broker and the rest of the cluster are unaffected. The reachable surface depends on the path: writing a crafted record to a Streams application's internal changelog or repartition topics, or committing crafted offset metadata to its consumer group (Streams internal paths); writing a crafted record to any topic that a consumer reads with ListSerde (ListDeserializer); or, as a member of a Streams consumer group, returning crafted assignment data when elected leader (AssignmentInfo). Because a crafted record remains in its topic, the error can recur on restart. The record size limit (max.message.bytes) does not help, because the allocation is driven by a size field rather than by the input'

cve:CVE-2026-111551

Apache Kafka

Fixed versions: Not specified

Apache Kafka

Fixed versions: Not specified

Complete source record
{
  "id": "c884a9fd701a59df5255b2bd5cc40e68338c17569721236954825d13913bdf15",
  "url": "https://www.cve.org/CVERecord?id=CVE-2026-111551",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Apache Kafka: Denial of service in Kafka Streams and client deserializers via unbounded memory allocation",
    "summary": "Several Kafka deserialization paths read a size or count field from input data and use it directly to allocate an array, collection, or byte buffer, with no check against the bytes actually available. A small crafted input can therefore declare a very large size and force a multi-gigabyte allocation. The affected paths are, in Kafka Streams, ProcessorRecordContext (header count), ChangedDeserializer (varint value length), CombinedKeySchema (foreign-key length, which could also produce a negative size), ProcessorMetadata (key length), and AssignmentInfo group-assignment decoding; and, in the clients library, ListDeserializer (used by ListSerde). Impact: An attacker can trigger the oversized allocation and raise an OutOfMemoryError that crashes the affected consumer or Kafka Streams thread; the broker and the rest of the cluster are unaffected. The reachable surface depends on the path: writing a crafted record to a Streams application's internal changelog or repartition topics, or committing crafted offset metadata to its consumer group (Streams internal paths); writing a crafted record to any topic that a consumer reads with ListSerde (ListDeserializer); or, as a member of a Streams consumer group, returning crafted assignment data when elected leader (AssignmentInfo). Because a crafted record remains in its topic, the error can recur on restart. The record size limit (max.message.bytes) does not help, because the allocation is driven by a size field rather than by the input'",
    "evidence": "cve:CVE-2026-111551",
    "products": [
      {
        "name": {
          "value": "Apache Kafka",
          "evidence": "/containers/cna/affected/0/product"
        },
        "prerequisites": [],
        "fixed_versions": [],
        "affected_versions": []
      },
      {
        "name": {
          "value": "Apache Kafka",
          "evidence": "/containers/cna/affected/1/product"
        },
        "prerequisites": [],
        "fixed_versions": [],
        "affected_versions": []
      }
    ],
    "severity": "unknown",
    "structured": {
      "id": "CVE-2026-111551",
      "aliases": [
        "CVE-2026-111551"
      ],
      "metrics": [
        {
          "other": {
            "type": "Textual description of severity",
            "content": {
              "text": "important"
            }
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "GENERAL"
            }
          ]
        }
      ],
      "affected": [
        {
          "vendor": "Apache Software Foundation",
          "product": "Apache Kafka",
          "versions": [
            {
              "status": "affected",
              "version": "0.10.0.0",
              "versionType": "semver",
              "lessThanOrEqual": "4.1.2"
            },
            {
              "status": "affected",
              "version": "4.2.0",
              "versionType": "semver",
              "lessThanOrEqual": "4.2.1"
            },
            {
              "status": "affected",
              "version": "4.3.0",
              "versionType": "semver",
              "lessThanOrEqual": "4.3.1"
            }
          ],
          "packageURL": "pkg:maven/org.apache.kafka/kafka-streams",
          "packageName": "org.apache.kafka:kafka-streams",
          "collectionURL": "https://repo.maven.apache.org/maven2",
          "defaultStatus": "unaffected"
        },
        {
          "vendor": "Apache Software Foundation",
          "product": "Apache Kafka",
          "versions": [
            {
              "status": "affected",
              "version": "0.10.0.0",
              "versionType": "semver",
              "lessThanOrEqual": "4.1.2"
            },
            {
              "status": "affected",
              "version": "4.2.0",
              "versionType": "semver",
              "lessThanOrEqual": "4.2.1"
            },
            {
              "status": "affected",
              "version": "4.3.0",
              "versionType": "semver",
              "lessThanOrEqual": "4.3.1"
            }
          ],
          "packageURL": "pkg:maven/org.apache.kafka/kafka-clients",
          "packageName": "org.apache.kafka:kafka-clients",
          "collectionURL": "https://repo.maven.apache.org/maven2",
          "defaultStatus": "unaffected"
        }
      ],
      "modified": "2026-10-28T20:06:57.172Z",
      "provider": "cve",
      "references": [
        "https://kafka.apache.org/cve-list"
      ],
      "provider_metadata": {
        "adp": [
          {
            "title": "CVE Program Container",
            "references": [
              {
                "url": "http://www.openwall.com/lists/oss-security/2026/10/28/13"
              }
            ],
            "providerMetadata": {
              "orgId": "af854a3a-2127-422b-91ae-364da2661108",
              "shortName": "CVE",
              "dateUpdated": "2026-10-28T20:06:57.172Z"
            }
          }
        ],
        "cna": {
          "orgId": "f0158376-9dc2-43b6-827c-5f631a4d8d09",
          "shortName": "apache",
          "dateUpdated": "2026-10-28T16:45:25.163Z"
        }
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-111551",
        "evidence": "/cveMetadata/cveId"
      }
    ],
    "security_relevant": true,
    "severity_evidence": null
  },
  "source_id": "core-cve",
  "document_id": 484694,
  "published_at": "2026-10-28T16:45:25.163+00:00"
}