CVE-2026-106554
Published:October 22, 2026
Updated:October 23, 2026
Two CBOR-parsing issues in jackson-dataformats-binary's CBOR module: an unbounded run of CBOR tags drives quadratic-time "TagList" growth (CPU/GC-exhaustion DoS, PoC-proven), and the configured "StreamReadConstraints.maxStringLength" limit is not enforced for CBOR text-string values (a documented-guard gap that defeats a protection users rely on). Reporter: apvxlab (AppViewX security research). PoC executed against "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:2.18.2"; both are present in current 2.x and 3.x ("tools.jackson.dataformat.cbor") HEAD. Distinct from the Avro and Smile/Protobuf advisories for this repo. --- ## 1. Quadratic CPU/GC DoS from an unbounded chain of CBOR tags (PoC-proven) File: "cbor/src/main/java/.../cbor/CBORParser.java" (tag handling → "TagList"). CBOR permits a data item to be preceded by any number of semantic tags. The CBOR parser accumulates them in a "TagList" whose backing array grows by a fixed increment (+8), not by doubling, and re-scans/copies on each growth. An attacker sends a value preceded by a long run of tag bytes; the fixed-increment growth makes accumulating N tags O(N²) in time (plus GC pressure), with no cap on the number of stacked tags. PoC (executed, JDK 17): feeding a CBOR stream consisting of a long run of tag bytes (e.g. tag "0xC0"+) before a trivial value forces quadratic CPU/GC; parse time grows super-linearly with the tag count, pinning a request thread with no configurable limit. ## 2. "StreamReadConstraints.maxStringLength" not enforced for CBOR string values (guard gap) File: "cbor/src/main/java/.../cbor/CBORParser.java" (text-string value decoding). --Applications rely on "StreamReadConstraints.maxStringLength" (Jackson's default protection against oversized strings) to bound untrusted input. The CBOR text-string value decoding path does not call "_streamReadConstraints.validateStringLength(...)", so a CBOR string value can exceed the configured "maxStringLength" limit without being rejected — the protection a deployment configured is silently not applied to CBOR strings.-- --- Impact. (1) Algorithmic-complexity denial of service (CWE-407): a modest input of stacked tags consumes quadratic CPU/GC, pinning a request thread; concurrent requests exhaust the pool. (2) Protection bypass (CWE-693): a configured "maxStringLength" does not constrain CBOR string values, so applications that believe they are protected against oversized strings are not, for the CBOR format. Fix. (1) Grow "TagList" by doubling and/or cap the number of stacked tags ("StreamReadConstraints"-style). (2) Enforce "StreamReadConstraints.validateStringLength(...)" on the CBOR text-string value path, as the JSON/other parsers do.
Affected Packages
https://github.com/FasterXML/jackson-dataformats-binary.git (GITHUB):
Affected version(s) >=jackson-dataformats-binary-3.2.0 <jackson-dataformats-binary-3.2.4Fix Suggestion:
Update to version jackson-dataformats-binary-3.2.4https://github.com/FasterXML/jackson-dataformats-binary.git (GITHUB):
Affected version(s) >=jackson-dataformats-binary-3.0.0-rc1 <jackson-dataformats-binary-3.1.8Fix Suggestion:
Update to version jackson-dataformats-binary-3.1.8https://github.com/FasterXML/jackson-dataformats-binary.git (GITHUB):
Affected version(s) >=jackson-dataformats-binary-2.22.0 <jackson-dataformats-binary-2.22.4Fix Suggestion:
Update to version jackson-dataformats-binary-2.22.4https://github.com/FasterXML/jackson-dataformats-binary.git (GITHUB):
Affected version(s) >=jackson-dataformats-binary-2.19.0-rc2 <jackson-dataformats-binary-2.21.8Fix Suggestion:
Update to version jackson-dataformats-binary-2.21.8https://github.com/FasterXML/jackson-dataformats-binary.git (GITHUB):
Affected version(s) >=jackson-dataformats-binary-2.15.0-rc1 <jackson-dataformats-binary-2.18.12Fix Suggestion:
Update to version jackson-dataformats-binary-2.18.12com.fasterxml.jackson.dataformat:jackson-dataformat-cbor (JAVA):
Affected version(s) >=2.19.0-rc2 <2.21.8Fix Suggestion:
Update to version 2.21.8com.fasterxml.jackson.dataformat:jackson-dataformat-cbor (JAVA):
Affected version(s) >=2.22.0 <2.22.4Fix Suggestion:
Update to version 2.22.4tools.jackson.dataformat:jackson-dataformat-cbor (JAVA):
Affected version(s) >=3.2.0 <3.2.4Fix Suggestion:
Update to version 3.2.4com.fasterxml.jackson.dataformat:jackson-dataformat-cbor (JAVA):
Affected version(s) >=2.15.0 <2.18.12Fix Suggestion:
Update to version 2.18.12tools.jackson.dataformat:jackson-dataformat-cbor (JAVA):
Affected version(s) >=3.0.0-rc1 <3.1.8Fix Suggestion:
Update to version 3.1.8com.fasterxml.jackson.dataformat:jackson-dataformat-cbor (JAVA):
Affected version(s) >=2.15.0-rc1 <2.18.12Fix Suggestion:
Update to version 2.18.12com.fasterxml.jackson.dataformat:jackson-dataformat-cbor (JAVA):
Affected version(s) >=2.19.0 <2.21.8Fix Suggestion:
Update to version 2.21.8Related Resources (3)
Do you need more information?
Contact UsCVSS v4
Base Score:
8.7
Attack Vector
NETWORK
Attack Complexity
LOW
Attack Requirements
NONE
Privileges Required
NONE
User Interaction
NONE
Vulnerable System Confidentiality
NONE
Vulnerable System Integrity
NONE
Vulnerable System Availability
HIGH
Subsequent System Confidentiality
NONE
Subsequent System Integrity
NONE
Subsequent System Availability
NONE
CVSS v3
Base Score:
7.5
Attack Vector
NETWORK
Attack Complexity
LOW
Privileges Required
NONE
User Interaction
NONE
Scope
UNCHANGED
Confidentiality
NONE
Integrity
NONE
Availability
HIGH
Weakness Type (CWE)
Inefficient Algorithmic Complexity