Description
UTF8DataInputJsonParser._reportInvalidToken() in FasterXML jackson-core builds the offending-token text for its error message by appending Java identifier characters to a StringBuilder in a loop that has no upper bound. Unlike the three sibling parser implementations, including UTF8StreamJsonParser, it never consults ErrorReportConfiguration.getMaxErrorTokenLength() (default 256). A malformed token supplied to a parser created through JsonFactory.createParser(DataInput) is therefore accumulated in full. No StreamReadConstraints setting mitigates this: maxDocumentLength cannot be applied to DataInput sources at all, and maxStringLength does not cover this path because the accumulation bypasses ReadConstrainedTextBuffer. The reporter measured a 20,000,109-character exception message from a 20-million-character malformed token on the DataInput path, against 367 characters for identical input on the InputStream path. Scaling the payload drives the StringBuilder, which also incurs byte-to-char expansion and internal array doubling, to many times the raw payload size and can trigger OutOfMemoryError for the whole JVM. UTF8DataInputJsonParser was introduced in 2.8.0 together with createParser(DataInput); releases before 2.8.0 do not contain the affected class.
Published: 2026-09-23
Score: 7.5 High
EPSS: < 1% Very Low
KEV: No
Impact: Denial of Service via unbounded memory usage
Action: Immediate Patch
AI Analysis

Impact

The vulnerability resides in the UTF8DataInputJsonParser implementation within jackson-core. When parsing DataInput streams, an error message is built by repeatedly appending Java identifier characters to a StringBuilder with an unchecked loop. The built token is not subject to the error report configuration limit of 256 characters, causing the StringBuilder to grow indefinitely. This leads to an enormous exception message and excessive memory consumption, which can trigger an OutOfMemoryError and collapse the entire JVM. The flaw results in a denial of service condition; it does not provide direct code execution or data disclosure.

Affected Systems

An affected product is FasterXML jackson-core. All releases that include the DataInput parser, from 2.8.0 onward through the 2.8.x to 2.17.x, 2.19.x, 2.20.x, and 3.0.x branches, lack the fix. Consumers should avoid these lines and migrate to one of the maintained releases. Fixed versions are 2.18.11, 2.21.7, 2.22.3 for the com.fasterxml.jackson.core lineage, or 3.1.7 and 3.2.3 in the tools.jackson.core lineage.

Risk and Exploitability

The CVSS score of 7.5 indicates a high severity. No EPSS score is available, and the vulnerability is not listed in the CISA KEV catalog, implying that active exploitation is not currently known or widespread. However, the flaw is exploitable by supplying an oversized malformed token through JsonFactory.createParser(DataInput). The attacker must have the ability to provide input to the parser, which could be remote or local depending on the application context. Because no configuration setting mitigates the issue, a malicious payload can readily consume all available heap memory, leading to service disruption. The lack of active exploit code reduces immediate threat, but the high‑severity nature and the permanent denial of service potential warrant timely remediation.

Generated by OpenCVE AI on September 23, 2026 at 15:20 UTC.

Remediation

Vendor Solution

Upgrade to com.fasterxml.jackson.core:jackson-core 2.18.11, 2.21.7 or 2.22.3, or to tools.jackson.core:jackson-core 3.1.7 or 3.2.3. The 2.8.x through 2.17.x, 2.19.x, 2.20.x and 3.0.x lines received no fix on their own branch and are no longer maintained upstream; consumers of those lines must move forward to a maintained release.


Vendor Workaround

No StreamReadConstraints or ErrorReportConfiguration setting mitigates this issue on the affected code path. Where possible, avoid JsonFactory.createParser(DataInput) for attacker-supplied content and use createParser(InputStream), createParser(Reader) or a byte-array overload instead; those parser implementations enforce maxErrorTokenLength correctly. Otherwise, bound input size ahead of the parser and cap JVM heap so that a single request cannot exhaust process memory.


OpenCVE Recommended Actions

  • Upgrade jackson-core to a fixed release such as com.fasterxml.jackson.core:jackson-core 2.18.11 or newer, or to tools.jackson.core:jackson-core 3.1.7 or newer.
  • If upgrading is not immediately possible, avoid using JsonFactory.createParser(DataInput) for attacker‑supplied content; instead use createParser(InputStream), createParser(Reader), or a byte‑array overload, which enforce maxErrorTokenLength correctly.
  • In environments where changing the parser usage is not feasible, bound the input size before invoking the parser and constrain the JVM heap size so that a single request cannot exhaust the entire process memory.

Generated by OpenCVE AI on September 23, 2026 at 15:20 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-7hhh-6rmp-j9qf jackson-core: UTF8DataInputJsonParser._reportInvalidToken() missing maxErrorTokenLength limit -> unbounded StringBuilder growth (DoS)
History

Wed, 23 Sep 2026 15:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Wed, 23 Sep 2026 12:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-1050
References
Metrics threat_severity

None

threat_severity

Important


Wed, 23 Sep 2026 03:45:00 +0000

Type Values Removed Values Added
First Time appeared Fasterxml
Fasterxml jackson-core
Vendors & Products Fasterxml
Fasterxml jackson-core

Wed, 23 Sep 2026 02:30:00 +0000

Type Values Removed Values Added
Description UTF8DataInputJsonParser._reportInvalidToken() in FasterXML jackson-core builds the offending-token text for its error message by appending Java identifier characters to a StringBuilder in a loop that has no upper bound. Unlike the three sibling parser implementations, including UTF8StreamJsonParser, it never consults ErrorReportConfiguration.getMaxErrorTokenLength() (default 256). A malformed token supplied to a parser created through JsonFactory.createParser(DataInput) is therefore accumulated in full. No StreamReadConstraints setting mitigates this: maxDocumentLength cannot be applied to DataInput sources at all, and maxStringLength does not cover this path because the accumulation bypasses ReadConstrainedTextBuffer. The reporter measured a 20,000,109-character exception message from a 20-million-character malformed token on the DataInput path, against 367 characters for identical input on the InputStream path. Scaling the payload drives the StringBuilder, which also incurs byte-to-char expansion and internal array doubling, to many times the raw payload size and can trigger OutOfMemoryError for the whole JVM. UTF8DataInputJsonParser was introduced in 2.8.0 together with createParser(DataInput); releases before 2.8.0 do not contain the affected class.
Title jackson-core: UTF8DataInputJsonParser._reportInvalidToken() does not honor maxErrorTokenLength, allowing unbounded StringBuilder growth
Weaknesses CWE-400
CWE-770
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

Fasterxml Jackson-core
cve-icon MITRE

Status: PUBLISHED

Assigner: HeroDevs

Published:

Updated: 2026-09-23T14:00:42.979Z

Reserved: 2026-09-11T18:31:50.311Z

Link: CVE-2026-89425

cve-icon Vulnrichment

Updated: 2026-09-23T14:00:19.734Z

cve-icon NVD

Status : Deferred

Published: 2026-09-23T03:17:04.357

Modified: 2026-09-24T20:43:32.537

Link: CVE-2026-89425

cve-icon Redhat

Severity : Important

Publid Date: 2026-09-23T02:06:10Z

Links: CVE-2026-89425 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-09-23T15:30:07Z

Weaknesses
  • CWE-1050

    Excessive Platform Resource Consumption within a Loop

  • CWE-400

    Uncontrolled Resource Consumption

  • CWE-770

    Allocation of Resources Without Limits or Throttling