CVE-2026-104016 Details
Description
ProtobufParser parses length-prefixed protobuf string and bytes fields by checking (_inputPtr + len) <= _inputEnd and then, on the fast path, calling _finishShortText(len). Both use 32-bit signed integer arithmetic. When an attacker supplies a varint decoding to a length near Integer.MAX_VALUE, _inputPtr + len overflows to a negative value, the bounds check passes, and _finishShortText(len) reaches TextBuffer.expandCurrentSegment(len), which performs Arrays.copyOf with no cap and throws OutOfMemoryError: Requested array size exceeds VM limit. The JVM refuses arrays larger than Integer.MAX_VALUE - 8 before consulting available heap, so -Xmx tuning does not mitigate the issue. StreamReadConstraints.maxStringLength and maxDocumentLength do not gate this path: a 33-byte payload is far below any document-length cap and the string-length check does not fire before the allocation. This was confirmed empirically against shipping artifacts with maxStringLength, maxDocumentLength and maxNestingDepth all configured. A February 2026 hardening commit added the equivalent overflow guard to the packed-array-length and message-length paths but left the string-length call sites unguarded. No privileges or user interaction beyond the ability to submit data for parsing are required.
A denial-of-service vulnerability has been identified in the Jackson dataformat Protobuf library, specifically in versions 2.22.0 through 2.22.3, 2.6.0 through 2.18.11, and 2.19.0 through 2.21.7, as well as in the 3.x series up to 3.2.3. The issue arises in the ProtobufParser component, which processes length-prefixed Protobuf string and bytes fields. The vulnerability is rooted in the use of 32-bit signed integer arithmetic, allowing an attacker to exploit varint decoding to create a length value that causes an overflow. This overflow bypasses the bounds check, leading to an unbounded array allocation that triggers an OutOfMemoryError, causing a denial-of-service condition. Notably, this vulnerability is not mitigated by the JVM's heap size limitations or by Jackson's StreamReadConstraints, which do not effectively control the problematic allocation path.
Users can upgrade to Jackson Protobuf versions 2.22.4, 2.18.12, 2.21.8, or 3.2.4 to address this vulnerability.
Metrics
CVSS 4.0 Severity and Vector Strings:
CVSS 3.x Severity and Vector Strings:
No data available for CVSS Version 2.0 on this CVE.
Volerion
Assessed Oct 28, 2026CISA-ADP
Assessed Nov 4, 2026References to Advisories, Solutions, and Tools
By selecting these links, you will be leaving this site. These are references gathered from the official CVE record and are not endorsed by Volerion.
| URL | Source(s) | Tag(s) |
|---|---|---|
| https://github.com/FasterXML/jackson-dataformats-binary/security/advisories/GHSA-c2rq-mcfv-jw29 | HeroDevs | AdvisoryExploitRemedyVendor |
Weakness Enumeration
| CWE-ID | CWE Name | Source |
|---|---|---|
| CWE-190 | Integer Overflow or Wraparound | HeroDevs |
Affected Products
| Product | Versions |
|---|---|
| FasterXML Jackson-dataformat-protobuf | >= 2.22.0, <= 2.22.3 (semver) >= 2.6.0, <= 2.18.11 (semver) >= 2.19.0, <= 2.21.7 (semver) |
CPE
Remediation
| |
| FasterXML Tools.jackson-dataformat-protobuf | >= 3.2.0, <= 3.2.3 (semver) >= 3.0.0, <= 3.1.7 (semver) |
CPE
Remediation
| |
Change History
2 change records found show changes
| Date | Action | Recorded By |
|---|---|---|
| Nov 4, 2026 | CVE Modified | CISA-ADP |
| Oct 28, 2026 | New CVE Received | HeroDevs |
Volerion