CVE-2026-59990: Jawn: Uncontrolled nesting depth in JSON parser

Published Sep 23, 2026
·
Updated

Jawn is an open source JSON parser. Prior to 1.7.0, Jawn parse methods accept arbitrarily deep JSON array and object nesting without a depth limit, allowing a remote attacker who can submit untrusted JSON to grow parser contexts until the JVM heap is exhausted. The resulting java.lang.OutOfMemoryError is a fatal Scala error that is not ordinarily handled by scala.util.Try or cats.effect.IO, causing denial of service. This issue is fixed in version 1.7.0.

Other sources

The Jawn parser before 1.6.1 is vulnerable to a denial of service attack via untrusted input.

Impact

A remote attacker who can submit JSON to any jawn-backed parse method can exhaust JVM heap and trigger java.lang.OutOfMemoryError. This is treated by Scala as a fatal error and not typically handled by scala.util.Try or cats.effect.IO.

Patches

Version 1.6.1 introduces a configurable nesting-depth limit (Parser#maxDepth, default 4096). Inputs deeper than the limit fail with a recoverable ParseException instead of exhausting heap.

Users who require deeper nesting may override maxDepth on a Parser subclass.

Workarounds

- Enforce an input size limit small enough that the resulting context stack cannot exhaust heap, (e.g. http4s EntityLimiter). - Pre-scan untrusted input and reject documents whose maximum delimiter nesting exceeds a threshold before handing them to jawn.

GitHub

Affected Software

3 affected componentsFixes available
Jawn Jawn<1.7.0
maven/org.typelevel:jawn-parser_3<=1.6.0
1.7.0
maven/org.typelevel:jawn-parser_2.13<=1.6.0
1.7.0

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade maven/org.typelevel:jawn-parser_3 to a version that resolves this vulnerability.

    Fixed in 1.7.0
  2. Upgrade

    Upgrade maven/org.typelevel:jawn-parser_2.13 to a version that resolves this vulnerability.

    Fixed in 1.7.0
  3. Upgrade

    Upgrade maven/org.typelevel:jawn-parser_2.12 to a version that resolves this vulnerability.

    Fixed in 1.7.0
  4. Upgrade

    Upgrade Jawn to a version that resolves this vulnerability.

    Fixed in 1.7.0
  5. Configuration

    Configure the parser nesting-depth limit; version 1.6.1 introduces Parser#maxDepth with a default of 4096.

    Jawn Parser Parser#maxDepth = 4096
  6. Compensating control

    Enforce an input-size limit small enough that the resulting JSON context stack cannot exhaust the JVM heap, such as using http4s EntityLimiter.

  7. Compensating control

    Pre-scan untrusted JSON input and reject documents whose maximum delimiter nesting exceeds a defined threshold before passing them to Jawn.

Event History

Sep 23, 2026
CVE Published
via MITRE·06:41 PM
Data Sourced
via MITRE·06:41 PM
DescriptionSeverityWeakness
Data Sourced
via NVD·07:17 PM
DescriptionSeverityWeakness
Advisory Published
via GitHub·09:23 PM
Data Sourced
via GitHub·09:23 PM
DescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

Which deployments are exposed to this denial-of-service issue?

Deployments using Jawn versions before 1.7.0 are exposed if they accept untrusted JSON from a remote source. An attacker does not need authentication or user interaction if they can submit that JSON to the application.

2

What is required to trigger the issue?

An attacker can submit JSON containing arbitrarily deep array or object nesting. Repeated nesting grows parser contexts until JVM heap exhaustion causes a java.lang.OutOfMemoryError.

3

Will normal Scala error handling keep the service available?

Not ordinarily. The reported java.lang.OutOfMemoryError is a fatal Scala error and is not normally handled by scala.util.Try or cats.effect.IO, so the application can be denied service.

4

What version resolves the issue?

Upgrade Jawn to version 1.7.0, which adds the fix for unbounded JSON nesting depth.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203