CVE-2026-89425 jackson-core: UTF8DataInputJsonParser._reportInvalidToken() missing maxErrorTokenLength limit -> unbounded StringBuilder growth (DoS)
Attackers can cause JVM OutOfMemoryError via unbounded StringBuilder growth in jackson-core when parsing malformed tokens from DataInput sources.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Over the internet
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2026-89425?
CVE-2026-89425 is a high-severity denial of service vulnerability in FasterXML jackson-core, published on 23 Sep 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.
Official 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.
Which versions are affected by CVE-2026-89425?
10 open source packages ship an affected version, including com.fasterxml.jackson.core:jackson-core and tools.jackson.core:jackson-core.
| Package | Affected | Fixed in |
|---|---|---|
com.fasterxml.jackson.core:jackson-core Maven | From 2.19.0 | 2.21.7 |
com.fasterxml.jackson.core:jackson-core Maven | From 2.19.0 | 2.21.7 |
com.fasterxml.jackson.core:jackson-core Maven | From 2.22.0 | 2.22.3 |
com.fasterxml.jackson.core:jackson-core Maven | From 2.22.0 | 2.22.3 |
com.fasterxml.jackson.core:jackson-core Maven | From 2.8.0 | 2.18.11 |
com.fasterxml.jackson.core:jackson-core Maven | From 2.8.0 | 2.18.11 |
4 more packages
tools.jackson.core:jackson-core Maven | From 3.0.0 | 3.1.7 |
tools.jackson.core:jackson-core Maven | From 3.0.0 | 3.1.7 |
tools.jackson.core:jackson-core Maven | From 3.2.0 | 3.2.3 |
tools.jackson.core:jackson-core Maven | From 3.2.0 | 3.2.3 |
How do I fix CVE-2026-89425?
Upgrade com.fasterxml.jackson.core:jackson-core to a fixed version for your release line: 2.21.7, 2.22.3 or 2.18.11.
Upgrade, then put limits on request size, rate and nesting depth so one client cannot exhaust the service. More about Denial of service.
Is CVE-2026-89425 being exploited?
It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-89425 exists.
Sources
Also known as CLEANSTART-2026-BS92319, CLEANSTART-2026-EJ84635, CLEANSTART-2026-EO55339, CLEANSTART-2026-FJ64827, CLEANSTART-2026-GL73276, CLEANSTART-2026-IN74238 and 118 more.