Skip to content

CVE-2026-89407 (High) detected in jackson-core-2.19.1.jar #444

Description

@mend-bolt-for-github

CVE-2026-89407 - High Severity Vulnerability

Vulnerable Library - jackson-core-2.19.1.jar

Core Jackson processing abstractions (aka Streaming API), implementation for JSON

Library home page: https://github.com/FasterXML/jackson-core

Sample Path to Dependency File: /pom.xml

Path to vulnerable library: /home/wss-scanner/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.19.1/jackson-core-2.19.1.jar

Dependency Hierarchy:

  • webjars-locator-core-0.59.jar (Root Library)
    • ❌ jackson-core-2.19.1.jar (Vulnerable Library)

Found in HEAD commit: 270465e4bf74e87253e9245ca2e1fc7ed83b0cbb

Found in base branch: master

Vulnerability Details

NumberInput.looksLikeValidNumber() in FasterXML jackson-core pre-validates "stringified numbers" with two regular expressions: PATTERN_FLOAT ([+-]?[0-9][.]?[0-9]+([eE][+-]?[0-9]+)?), present since 2.17.0, and PATTERN_FLOAT_TRAILING_DOT, added in 2.17.2. PATTERN_FLOAT places adjacent quantifiers over the same character class -- an optional [0-9] run, an optional dot, then a required [0-9]+ run -- so input that ultimately fails to match forces Java's backtracking engine to retry every possible split point of the digit run. 
Matching cost therefore grows with the square of the input length. 
An attacker who can supply JSON that an application deserializes into a numeric target type reaches this method through jackson-databind's default String-to-number coercion (StdDeserializer and NumberDeserializers for BigDecimal, BigInteger, Double and Float). 
Because StreamReadConstraints.maxStringLength defaults to 20,000,000 characters, no constraint bounds the input before it reaches the regex. 
Testing by the reporter confirmed O(n^2) growth across five consecutive input-size doublings, with a single 160,000-character string consuming roughly 74 seconds in one call; a small number of concurrent requests of ordinary body size can therefore exhaust a server's request-handling thread pool. 
The affected method does not exist before 2.17.0, so 2.16.x and earlier releases are not affected. 
The fix replaces both regular expressions with a hand-rolled single-pass scan.
Mend Note: The description of this vulnerability differs from MITRE.

Publish Date: 2026-09-22

URL: CVE-2026-89407

CVSS 3 Score Details (7.5)

Base Score Metrics:

  • Exploitability Metrics:
    • Attack Vector: Network
    • Attack Complexity: Low
    • Privileges Required: None
    • User Interaction: None
    • Scope: Unchanged
  • Impact Metrics:
    • Confidentiality Impact: None
    • Integrity Impact: None
    • Availability Impact: High

For more information on CVSS3 Scores, click here.

Suggested Fix

Type: Upgrade version

Release Date: 2026-09-22

Fix Resolution: com.fasterxml.jackson.core:jackson-core:2.18.11,com.fasterxml.jackson.core:jackson-core:2.21.7,com.fasterxml.jackson.core:jackson-core:2.22.3,tools.jackson.core:jackson-core:3.1.7,tools.jackson.core:jackson-core:3.2.2,https://github.com/FasterXML/jackson-core.git - jackson-core-2.22.3,https://github.com/FasterXML/jackson-core.git - jackson-core-2.18.11,https://github.com/FasterXML/jackson-core.git - jackson-core-3.1.7,https://github.com/FasterXML/jackson-core.git - jackson-core-3.2.2,https://github.com/FasterXML/jackson-core.git - jackson-core-2.21.7


Step up your Open Source Security Game with Mend here

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions