GitHub Advisoryadvisory · Maven

GHSA-cc4v-rvgp-2pf3 Jawn: Uncontrolled nesting depth in JSON parser

HIGH Published 2026-09-23 Modified 2026-09-23 Official page ↗
Aliases
CVE-2026-59990
Ecosystem
Maven
Packages
org.typelevel:jawn-parser_2.12, org.typelevel:jawn-parser_2.13, org.typelevel:jawn-parser_3
Severity
High
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weaknesses
CWE-770
Reviewed
2026-09-23

Affected packages

• Maven org.typelevel:jawn-parser_2.12: < 1.7.0 → fixed in 1.7.0 • Maven org.typelevel:jawn-parser_2.13: < 1.7.0 → fixed in 1.7.0 • Maven org.typelevel:jawn-parser_3: < 1.7.0 → fixed in 1.7.0

Description

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.

Related

Alias · CVE (1)

Weakness · CWE (1)

  • CWE-770 Allocation of Resources Without Limits or Throttling weakness

References