CVE-2023-1370
High · 7.5CVSS
7.5
EPSS
1.1%
Published
Mar 22, 2023
CISA due date
—
Cloudanix analysis
A JSON processing component can be tricked into crashing when it receives data with too many layers of nested lists or objects, making the affected software unavailable until restarted.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Library
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Unbounded recursive parsing of nested JSON arrays and objects causes stack exhaustion leading to application crash.
Why it matters to the business
Attackers can trigger denial of service against any service using the vulnerable library, resulting in application downtime and degraded availability for users.
How an attack unfolds
An attacker crafts a JSON payload containing excessive levels of nested arrays or objects and submits it to any endpoint or API that processes input with the affected json-smart parser; the recursive descent parser exhausts the call stack and crashes the process. Public exploit code has been available since shortly after disclosure.
How to fix it
Upgrade netplex/json-smart-v2 to commit 08517d2033289386aa97462ce43b986eee928b9f or later; for designate on Ubuntu 16.04 LTS upgrade to package version 1:2.1.0-0ubuntu1 or later. Validate the updated library version is in use and test parsing behavior with deeply nested inputs.
How to confirm the fix worked
Confirm the deployed library version matches or exceeds the listed fixed commits or packages; replay a controlled deeply-nested JSON payload in a test environment and verify the process no longer terminates with stack overflow.
Typical attack path
- Identify an application endpoint or service that accepts and parses untrusted JSON using the vulnerable library
- Generate a deeply nested JSON structure exceeding typical stack limits
- Transmit the payload via HTTP, API call, or other supported input channel
- Observe service crash or unresponsiveness confirming successful denial of service
How to detect it
Review application and web server logs for sudden process terminations or out-of-memory/stack overflow errors coinciding with JSON parsing requests; correlate with unusual request sizes or patterns containing repeated opening brackets.
What your security team should do
- Prioritize upgrade of all instances of json-smart-v2 and dependent packages to the fixed versions within normal change windows
- Add input-size or nesting-depth limits at the application or WAF layer until upgrades are complete
- Include the library in regular dependency scanning and SBOM processes to prevent regression
The record
[Json-smart](https://netplex.github.io/json-smart/) is a performance focused, JSON processor lib. When reaching a ‘[‘ or ‘{‘ character in the JSON input, the code parses an array or an object respectively. It was discovered that the code does not have any limit to the nesting of such arrays or objects. Since the parsing of nested arrays and objects is done recursively, nesting too many of them can cause a stack exhaustion (stack overflow) and crash the software.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Maven | net.minidev:json-smart | 0 | 2.4.9 |
| Chainguard | druid-compat | 0 | 34.0.0-r6 |
| Chainguard | elasticsearch-7 | 0 | 7.17.14-r2 |
| Chainguard | elasticsearch-7-bitnami | 0 | 7.17.14-r2 |
| Chainguard | elasticsearch-7-iamguarded | 0 | 7.17.14-r2 |
| Chainguard | elasticsearch-8 | 0 | 8.13.2-r1 |
| Chainguard | elasticsearch-8-bitnami | 0 | 8.13.2-r1 |
| Chainguard | elasticsearch-8-config | 0 | 8.13.2-r1 |
| Chainguard | elasticsearch-8-iamguarded | 0 | 8.13.2-r1 |
| Chainguard | elasticsearch-config | 0 | 8.13.2-r1 |
| Chainguard | hadoop-client-modules | 0 | 3.3.6-r7 |
| Chainguard | sonarqube | 0 | 25.10.0.114319-r0 |
| Chainguard | sonarqube-10 | 0 | 25.1.0.102122-r0 |
| Chainguard | sonarqube-10-docker-compat | 0 | 25.1.0.102122-r0 |
| Chainguard | sonarqube-10-scripts | 0 | 25.1.0.102122-r0 |
| Chainguard | sonarqube-docker-compat | 0 | 25.10.0.114319-r0 |
| Chainguard | sonarqube-scripts | 0 | 25.10.0.114319-r0 |
| Chainguard | spark-3.5 | 0 | 3.5.7-r2 |
| Chainguard | spark-3.5-scala-2.12-compat | 0 | 3.5.7-r2 |
| Chainguard | spark-3.5-scala-2.12-iamguarded-compat | 0 | 3.5.7-r2 |
| Chainguard | spark-3.5-scala-2.13-compat | 0 | 3.5.7-r2 |
| Chainguard | spark-3.5.0-compat | 0 | 0 |
| Chainguard | spark-3.5.0-compat-minimal | 0 | 0 |
| Chainguard | stargate | 0 | 1.0.79-r2 |
| Chainguard | thingsboard | 0 | 3.7-r4 |
| Chainguard | thingsboard-tb-js-executor | 0 | 3.7-r4 |
| Chainguard | thingsboard-tb-mqtt-transport | 0 | 3.7-r4 |
| Chainguard | thingsboard-tb-node | 0 | 3.7-r4 |
| Chainguard | thingsboard-tb-web-ui | 0 | 3.7-r4 |
| Debian:10 | json-smart | 0 | 2.2-2+deb10u1 |
| Debian:11 | json-smart | 0 | 2.2-2+deb11u1 |
| Debian:12 | json-smart | 0 | 2.2-2+deb12u1 |
| Debian:13 | json-smart | 0 | 2.2-3 |
| Red Hat:ocp_tools:4.11::el8 | jenkins | 0 | 0:2.401.1.1686831596-3.el8 |
| Red Hat:ocp_tools:4.11::el8 | jenkins-2-plugins | 0 | 0:4.11.1686831822-1.el8 |
| Red Hat:ocp_tools:4.12::el8 | jenkins | 0 | 0:2.401.1.1686649641-3.el8 |
| Red Hat:ocp_tools:4.12::el8 | jenkins-2-plugins | 0 | 0:4.12.1686649756-1.el8 |
| Red Hat:ocp_tools:4.13::el8 | jenkins | 0 | 0:2.401.1.1686680404-3.el8 |
| Red Hat:ocp_tools:4.13::el8 | jenkins-2-plugins | 0 | 0:4.13.1686680473-1.el8 |
| Red Hat:openshift:4.10::el8 | jenkins-2-plugins | 0 | 0:4.10.1684982411-1.el8 |
| Ubuntu:18.04:LTS | json-smart | 0 | 2.2-2ubuntu0.18.04.1 |
| Ubuntu:20.04:LTS | json-smart | 0 | 2.2-2ubuntu0.20.04.1 |
| Ubuntu:22.04:LTS | json-smart | 0 | 2.2-2ubuntu0.22.04.1 |
| Wolfi | druid-compat | 0 | 34.0.0-r6 |
| Wolfi | sonarqube | 0 | 25.10.0.114319-r0 |
| Wolfi | sonarqube-10 | 0 | 25.1.0.102122-r0 |
| Wolfi | sonarqube-10-docker-compat | 0 | 25.1.0.102122-r0 |
| Wolfi | sonarqube-10-scripts | 0 | 25.1.0.102122-r0 |
| Wolfi | sonarqube-docker-compat | 0 | 25.10.0.114319-r0 |
| Wolfi | sonarqube-scripts | 0 | 25.10.0.114319-r0 |
| Wolfi | spark-3.5 | 0 | 3.5.7-r2 |
| Wolfi | spark-3.5-scala-2.12-compat | 0 | 3.5.7-r2 |
| Wolfi | spark-3.5-scala-2.12-iamguarded-compat | 0 | 3.5.7-r2 |
| Wolfi | spark-3.5-scala-2.13-compat | 0 | 3.5.7-r2 |
| Wolfi | thingsboard | 0 | 3.7-r4 |
| Wolfi | thingsboard-tb-js-executor | 0 | 3.7-r4 |
| Wolfi | thingsboard-tb-mqtt-transport | 0 | 3.7-r4 |
| Wolfi | thingsboard-tb-node | 0 | 3.7-r4 |
| Wolfi | thingsboard-tb-web-ui | 0 | 3.7-r4 |
Related vulnerabilities
- CVE-2024-57699 A security issue was found in Netplex Json-smart 2.5.0 through 2.5.1. Also affects net.minidev:json-smart
- CVE-2025-68161 Apache Log4j does not verify the TLS hostname in its Socket Appender Also affects druid-compat
- CVE-2025-58056 Netty vulnerable to request smuggling due to incorrect parsing of chunk extensions Also affects druid-compat
- CVE-2025-58057 Netty's decoders vulnerable to DoS via zip bomb style attack Also affects druid-compat
- CVE-2025-8916 Allocation of Resources Without Limits or Throttling vulnerability in Legion of the… Also affects druid-compat
- CVE-2025-55163 Netty affected by MadeYouReset HTTP/2 DDoS vulnerability Also affects druid-compat
- CVE-2025-22227 In some specific scenarios with chained redirects, Reactor Netty HTTP client leaks… Also affects druid-compat
- CVE-2025-53864 Connect2id Nimbus JOSE + JWT 10.0.x before 10.0.2 and 9.37.x before 9.37.4 allows a… Also affects druid-compat