CVE-2026-18401

Denial of Service
Affects
jackson-core
in
Jackson
No items found.
Versions
>=2.15.0 <=2.18.5, >=2.19.0 <2.21.1
Exclamation circle icon
Patch Available

This Vulnerability has been fixed in the Never-Ending Support (NES) version offered by HeroDevs.

Overview

jackson-core is the core streaming package of the FasterXML Jackson suite. It provides the low-level, incremental JSON parser and generator APIs (including the non-blocking/async parser) that jackson-databind and the wider Jackson ecosystem are built on, and is one of the most widely used JSON libraries for Java.

A Denial of Service (DoS) vulnerability (CVE-2026-18401) has been identified in jackson-core, which allows attackers to exhaust memory and processing resources by sending an arbitrarily long numeric literal to the non-blocking (asynchronous) JSON parser, which never enforces the configured number-length limit.

Per OWASP: The Denial of Service (DoS) attack is focused on making a resource (site, application, server) unavailable for the purpose it was designed. There are many ways to make a service unavailable for legitimate users by manipulating network packets, programming, logical, or resources handling vulnerabilities, among others.

This issue affects multiple versions of jackson-core, from 2.15.0 up to and including 2.21.0.

Details

Module Info

Vulnerability Info

This Medium-severity vulnerability is found in the com.fasterxml.jackson.core:jackson-core package in multiple 2.x versions of jackson-core. To bound the resources a single document can consume, Jackson exposes StreamReadConstraints.maxNumberLength (default 1000 characters), and the standard blocking parsers enforce it by calling validateIntegerLength(...) and validateFPLength(...) whenever a numeric token is recorded. The non-blocking (asynchronous) parser, obtained from JsonFactory.createNonBlockingByteArrayParser() or createNonBlockingByteBufferParser(), never performs this validation: on every async number path the parser assigns the accumulated digit count directly to its internal length fields and completes the token, so the configured limit is silently skipped.

_intLength = len;   // assigned directly; validateIntegerLength(len) is never called
...
return _valueComplete(JsonToken.VALUE_NUMBER_INT);

Because no length check ever runs on this path, a single numeric literal with millions of digits is accepted and buffered in full, growing the parser's internal text buffer without bound and exhausting JVM heap memory. If the application then calls getBigIntegerValue() or getDecimalValue() on the token, converting the oversized literal costs quadratic CPU time, compounding the denial of service. The non-blocking parser is the API used by reactive and streaming stacks such as Spring WebFlux, so any service that feeds untrusted JSON through it is exposed; the blocking parsers enforce the limit and are not affected by this issue. HeroDevs NES for Jackson had backported StreamReadConstraints to its 2.13.x and 2.14.x lines, so all three NES lines carried the same bypass and all three received the fix.

This vulnerability was introduced in 2023 with jackson-core 2.15.0.

Mitigation

Only recent versions of Jackson Core are community-supported. The affected 2.13.x, 2.14.x, and 2.15.x lines are End-of-Life and will not receive public updates to address this issue.

Users of the affected components should apply one of the following mitigations:

  • Upgrade jackson-core to a currently supported release that contains the fix, such as 2.18.6 or later.
  • Leverage a commercial support partner like HeroDevs for post-EOL security support.

Credits

Vulnerability Details
Severity
Level
CVSS Assessment
Low
>=0 <4
Medium
>=4 <6
High
>=6 <8
Critical
>=8 <10
Medium
ID
CVE-2026-18401
PROJECT Affected
jackson-core
Versions Affected
>=2.15.0 <=2.18.5, >=2.19.0 <2.21.1
NES Versions Affected
Published date
August 12, 2026
≈ Fix date
July 1, 2026
Category
Denial of Service
Vex Document
Download VEXHow do I use it?
Sign up for the latest vulnerability alerts fixed in
NES for Jackson
Rss feed icon
Subscribe via RSS
or

By submitting the form I acknowledge receipt of our Privacy Policy.

Thanks for signing up for our Newsletter! We look forward to connecting with you.
Oops! Something went wrong while submitting the form.