CVE-2026-59990: Jawn: Uncontrolled nesting depth in JSON parser
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.
Recommended action
Recommended action
Upgrade affected packages to a patched version: org.typelevel:jawn-parser_2.12 1.7.0, org.typelevel:jawn-parser_2.13 1.7.0, org.typelevel:jawn-parser_3 1.7.0.
Technical details
- Vendor
- Not specified
- Product
- org.typelevel:jawn-parser_2.12, org.typelevel:jawn-parser_2.13, org.typelevel:jawn-parser_3
- Exploitation
- none known
- Evidence
- official
Evidence and sources
This record is attributed to GitHub Advisories. Exploitation status and remediation guidance are kept separate from the vulnerability's technical severity.
Open primary source