Description
ProtobufParser._readStringKey() reads the length prefix of a protobuf map entry's string key into an attacker-controlled int and then checks (_inputPtr + len) <= _inputEnd using signed arithmetic. For values near Integer.MAX_VALUE the addition overflows to a negative value and the check passes even when the input contains no key data. The parser then calls _finishShortText(len), which expands the text buffer to the declared length via TextBuffer.expandCurrentSegment and Arrays.copyOf, throwing OutOfMemoryError: Requested array size exceeds VM limit.



An 8-byte malformed message containing a map entry with a declared key length of 0x7FFFFFFF is sufficient. Configured StreamReadConstraints, including maxStringLength, maxNameLength, maxDocumentLength and maxNestingDepth, do not prevent the failure. Applications running with -XX:+ExitOnOutOfMemoryError terminate the JVM.



This is the same integer-overflow pattern addressed for other call sites in the remediation associated with CVE-2026-104016 and CVE-2026-104017; the map-key call site was corrected on the 3.x branches only, leaving the corresponding 2.x branches unguarded. Release lines 2.18, 2.19 and 2.20 do not contain _readStringKey() and are not affected by this vector. No privileges or user interaction beyond the ability to submit data for parsing are required. The 3.0 release line and 3.1.0-3.1.5 / 3.2.0-3.2.1 do not contain _readStringKey() and are therefore not affected; the method first appears in 3.1.6 and 3.2.2, mirroring its introduction at 2.21.6 on the 2.x side.
Published: 2026-10-28
Score: 7.5 High
EPSS: n/a
KEV: No
Impact: Denial of Service via OutOfMemoryError
Action: Patch Immediately
AI Analysis

Impact

The vulnerability is an integer overflow in ProtobufParser._readStringKey() that causes the parser to incorrectly accept a declared string key length up to 2,147,483,647 bytes. When the sum of the current input pointer and this length overflows to a negative number, the bounds check passes even though no key data exists. The parser then attempts to allocate a text buffer of the declared size, which triggers an OutOfMemoryError. Applications that do not handle this exception can crash, and systems configured with -XX:+ExitOnOutOfMemoryError will terminate the entire JVM. This leads to a denial of service that can be triggered by any attacker able to supply malicious Protobuf data.

Affected Systems

The flaw exists in FasterXML’s jackson-dataformat-protobuf library. The vulnerable code path was introduced on the 2.x branch with version 2.21.6 and on the 3.x branches starting with 3.1.6 and 3.2.2. Versions 2.18–2.20, 3.0, and 3.1.0–3.1.5/3.2.0–3.2.1 are not affected. Clients using 2.21.6 or later, or 3.1.6+ / 3.2.2+, must be reviewed.

Risk and Exploitability

With a CVSS score of 7.5 the vulnerability is classified as high severity. No exploit probability score is available, and the issue is not listed in CISA’s KEV catalog. An attacker can exploit it remotely simply by submitting a crafted Protobuf message containing a map entry with a key length of 0x7FFFFFFF. No special privileges or interaction are required beyond providing input to the parser. Because standard StreamReadConstraints do not prevent the overflow, the sole safeguards are an updated library, application logic, or JVM configuration changes.

Generated by OpenCVE AI on October 28, 2026 at 01:28 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade jackson-dataformat-protobuf to the latest patch release that removes the vulnerable _readStringKey() call.
  • If an upgrade is not immediately possible, isolate the Untrusted Protobuf parsing logic in a separate sandboxed process or reject Protobuf payloads from untrusted sources entirely.
  • Reconfigure the JVM to avoid exiting on OutOfMemoryError (e.g., remove –XX:+ExitOnOutOfMemoryError) and enable logging and monitoring for OutOfMemoryError events to detect potential abuse.

Generated by OpenCVE AI on October 28, 2026 at 01:28 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 28 Oct 2026 00:45:00 +0000

Type Values Removed Values Added
Description ProtobufParser._readStringKey() reads the length prefix of a protobuf map entry's string key into an attacker-controlled int and then checks (_inputPtr + len) <= _inputEnd using signed arithmetic. For values near Integer.MAX_VALUE the addition overflows to a negative value and the check passes even when the input contains no key data. The parser then calls _finishShortText(len), which expands the text buffer to the declared length via TextBuffer.expandCurrentSegment and Arrays.copyOf, throwing OutOfMemoryError: Requested array size exceeds VM limit. An 8-byte malformed message containing a map entry with a declared key length of 0x7FFFFFFF is sufficient. Configured StreamReadConstraints, including maxStringLength, maxNameLength, maxDocumentLength and maxNestingDepth, do not prevent the failure. Applications running with -XX:+ExitOnOutOfMemoryError terminate the JVM. This is the same integer-overflow pattern addressed for other call sites in the remediation associated with CVE-2026-104016 and CVE-2026-104017; the map-key call site was corrected on the 3.x branches only, leaving the corresponding 2.x branches unguarded. Release lines 2.18, 2.19 and 2.20 do not contain _readStringKey() and are not affected by this vector. No privileges or user interaction beyond the ability to submit data for parsing are required. The 3.0 release line and 3.1.0-3.1.5 / 3.2.0-3.2.1 do not contain _readStringKey() and are therefore not affected; the method first appears in 3.1.6 and 3.2.2, mirroring its introduction at 2.21.6 on the 2.x side.
Title jackson-dataformat-protobuf: integer overflow in ProtobufParser._readStringKey() allows OutOfMemoryError from an 8-byte payload
Weaknesses CWE-190
References
Metrics cvssV3_1

{'score': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: HeroDevs

Published:

Updated: 2026-10-28T00:02:32.462Z

Reserved: 2026-10-14T16:51:08.427Z

Link: CVE-2026-110747

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-28T01:16:55.017

Modified: 2026-10-28T01:16:55.017

Link: CVE-2026-110747

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-28T01:30:14Z

Weaknesses
  • CWE-190

    Integer Overflow or Wraparound