CVE-2026-68494

Denial of Service
Affects
jackson-core
in
Jackson
No items found.
Versions
>=2.9.0 <2.18.8, >=2.19.0 <2.21.4
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-68494) has been identified in jackson-core, which allows attackers to exhaust memory by streaming an unterminated numeric literal to the non-blocking (asynchronous) JSON parser in many small chunks, bypassing the configured number-length limit. It is the result of an incomplete fix for CVE-2026-18401, which enforced the limit when a numeric value completes but not while it is still being streamed.

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.9.0 up to and including 2.18.7, and from 2.19.0 up to and including 2.21.3.

Details

Module Info

Vulnerability Info

This High-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). The fix for CVE-2026-18401 wired this limit into the non-blocking (asynchronous) parser, obtained from JsonFactory.createNonBlockingByteArrayParser() or createNonBlockingByteBufferParser(), but only at the points where a numeric value is decided, that is, when a terminator byte, a decimal point, an exponent marker, or the declared end of input arrives. It missed the streaming-suspension exits on the integer path: when the parser runs out of fed input while still reading digits, it saves the accumulated digits and yields NOT_AVAILABLE without ever validating their length.

if (_inputPtr >= _inputEnd) {
    _minorState = MINOR_NUMBER_INTEGER_DIGITS;
    _textBuffer.setCurrentLength(outPtr);
    // no length validation before suspending on the integer path
    return (_currToken = JsonToken.NOT_AVAILABLE);
}

An attacker who feeds digit-only input in many small chunks and never sends a terminator keeps the parser on exactly these exits indefinitely, so the number-length check is never reached. The accumulated digits are only stopped by the much larger maxStringLength constraint (20 MiB by default) instead of the 1000-character maxNumberLength (roughly a 20,000-fold amplification), growing the parser's internal text buffer to tens of megabytes of heap per connection, which multiplied across concurrent attacker connections exhausts JVM memory. 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 incrementally is exposed; the blocking parsers and fully-buffered async input 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 2017 with jackson-core 2.9.0, when the non-blocking parser was added with no number-length limit on its streaming integer path.

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.8 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
High
ID
CVE-2026-68494
PROJECT Affected
jackson-core
Versions Affected
>=2.9.0 <2.18.8, >=2.19.0 <2.21.4
NES Versions Affected
Published date
August 14, 2026
≈ Fix date
May 28, 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.