CVE-2024-57699
High · 7.5CVSS
7.5
EPSS
0.6%
Published
Feb 5, 2025
CISA due date
—
Cloudanix analysis
A malformed JSON request can cause vulnerable applications to become slow or unavailable until the software dependency is updated or input limits are enforced.
- 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
CVE-2024-57699 is a denial-of-service vulnerability in Netplex Json-smart versions 2.5.0 through 2.5.1. The JSON parser can exhaust the application stack when processing specially crafted JSON containing a very large number of opening braces. Because parsing occurs before normal application logic completes, any service that accepts attacker-controlled JSON and parses it with affected Json-smart versions may experience thread failure, request handling disruption, or process instability. The issue is remotely triggerable, requires no authentication or user interaction, and primarily affects availability; confidentiality and integrity are not directly impacted.
Why it matters to the business
Applications, APIs, gateways, and backend services that parse untrusted JSON with affected Json-smart versions can be forced into service degradation or outage by malformed input. For internet-facing systems, this can translate into failed transactions, degraded customer experience, increased support load, and potential cascading failures if dependent services retry or queue failed requests. The vulnerability is not listed in CISA KEV, has low EPSS at the time of assessment, and has no known mature public exploitation, but the attack is simple enough that exposed JSON-processing endpoints should still be remediated during normal patch cycles or faster for critical public services.
How an attack unfolds
An attacker identifies an application endpoint that accepts JSON input and is backed by an affected Json-smart parser. The attacker sends a request body containing deeply nested or malformed JSON with an excessive number of opening braces. During parsing, Json-smart recursively processes the structure until the Java call stack is exhausted. This can produce StackOverflowError conditions, terminate request-handling threads, trigger repeated exceptions, consume resources, or destabilize the service. By repeating requests or targeting high-traffic endpoints, the attacker can amplify the impact into a sustained denial of service.
How to fix it
Upgrade Netplex Json-smart to a version that contains the complete fix for this stack-exhaustion issue. The reported affected range is Json-smart 2.5.0 through 2.5.1; avoid these versions in direct and transitive dependencies. If exact fixed versions are not provided by the package inventory, consult the upstream Json-smart release notes and dependency metadata, then pin to a non-affected release. Rebuild and redeploy applications after dependency updates. As compensating controls, enforce maximum request body size, maximum JSON nesting depth where supported, API gateway limits, parser timeouts, rate limiting, and request validation for endpoints that accept untrusted JSON. Ensure exception handling for parser failures returns controlled errors without destabilizing worker processes.
How to confirm the fix worked
Confirm exposure by generating a software bill of materials or dependency tree and checking for net.minidev:json-smart versions 2.5.0 or 2.5.1, including transitive dependencies. Validate remediation by confirming the deployed artifact no longer contains affected Json-smart versions and by running integration tests against JSON endpoints with deeply nested or malformed brace-heavy input. The expected post-fix behavior is controlled rejection, validation failure, or a bounded parser exception without stack exhaustion, service crash, sustained CPU/resource exhaustion, or repeated HTTP 5xx responses. Also verify gateway and application limits for request size and JSON depth are enforced consistently across public and internal JSON-consuming endpoints.
Typical attack path
- Identify an application, API, or service endpoint that accepts JSON request bodies.
- Send probe requests with increasingly deep or malformed JSON structures containing many opening braces.
- Observe timeout, HTTP 5xx responses, connection resets, or degraded service behavior indicating parser failure.
- Automate repeated delivery of the crafted payload to exhaust request-handling capacity or destabilize the service.
- Maintain pressure against exposed endpoints to prolong application unavailability or trigger cascading failures in dependent systems.
How to detect it
To assess prior exploitation, review web server, API gateway, WAF, application, and Java runtime logs for requests with unusually large or deeply nested JSON bodies, especially bodies dominated by repeated opening braces. Look for correlated application errors such as java.lang.StackOverflowError, parser exceptions from Json-smart or net.minidev classes, sudden increases in HTTP 500 responses, request timeouts, thread termination messages, container restarts, or health-check failures. Because denial-of-service exploitation may not leave a persistent file artifact, detection is mainly behavioral: short bursts or sustained waves of malformed JSON requests followed by service instability. Prioritize logs for public JSON endpoints and time windows with unexplained availability incidents. If request-body logging is enabled in a WAF or gateway, search for long sequences of "{" characters and abnormal content-length values on JSON endpoints.
- java.lang.StackOverflowError
- net.minidev.json
- json-smart
- ParseException
- Unexpected token
- HTTP 500
- HTTP 413
- Content-Type: application/json
- {{{{{{{{{{{{{{{{{{{{
- StackOverflowError.*net.minidev
- net.minidev.json.parser
- net.minidev.json.JSONValue
- application/json.*\{\{\{\{\{
What your security team should do
- Inventory applications and services that include Netplex Json-smart, especially Java services that expose JSON APIs to untrusted clients.
- Prioritize remediation for internet-facing APIs, authentication-adjacent services, high-availability business systems, and services where retry storms could create cascading impact.
- Upgrade or override transitive dependencies so Json-smart 2.5.0 and 2.5.1 are not present in deployed artifacts.
- Add or verify API gateway and application-layer limits for request body size, JSON nesting depth, request rate, and parser execution behavior.
- Search application and web logs for recent spikes in malformed JSON errors, StackOverflowError events, HTTP 400/413/500 responses, timeouts, and request bursts with unusually large brace-heavy bodies.
- Add regression tests for deeply nested malformed JSON to prevent reintroduction through future dependency changes.
- Monitor upstream advisories because this issue is described as an incomplete fix for an earlier vulnerability, indicating similar parser edge cases may exist across nearby versions.
The record
A security issue was found in Netplex Json-smart 2.5.0 through 2.5.1. When loading a specially crafted JSON input, containing a large number of ’{’, a stack exhaustion can be trigger, which could allow an attacker to cause a Denial of Service (DoS). This issue exists because of an incomplete fix for CVE-2023-1370.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Maven | net.minidev:json-smart | 2.5.0 | 2.5.2 |
| Chainguard | akhq | 0 | 0.25.1-r3 |
| Chainguard | apache-nifi | 0 | 2.3.0-r0 |
| Chainguard | apache-nifi-compat | 0 | 2.3.0-r0 |
| Chainguard | apache-nifi-toolkit | 0 | 2.3.0-r0 |
| Chainguard | apicurio-registry | 0 | 3.0.6-r1 |
| Chainguard | apicurio-registry-nginx-config | 0 | 3.0.6-r1 |
| Chainguard | apicurio-registry-ui | 0 | 3.0.6-r1 |
| Chainguard | camunda-zeebe | 0 | 8.6.9-r1 |
| Chainguard | camunda-zeebe-compat | 0 | 8.6.9-r1 |
| Chainguard | dependency-track | 0 | 4.13.0-r1 |
| Chainguard | dependency-track-bundled | 0 | 4.13.0-r1 |
| Chainguard | elasticsearch-fips-8 | 0 | 8.17.2-r1 |
| Chainguard | elasticsearch-fips-8-bitnami | 0 | 8.17.2-r1 |
| Chainguard | elasticsearch-fips-8-config | 0 | 8.17.2-r1 |
| Chainguard | elasticsearch-fips-8-policy-140-2 | 0 | 8.17.2-r1 |
| Chainguard | elasticsearch-fips-8-policy-140-3 | 0 | 8.17.2-r1 |
| Chainguard | kafka-strimzi-compat | 0 | 0.48.0-r1 |
| Chainguard | kafka_exporter-strimzi-compat | 0 | 0.48.0-r1 |
| Chainguard | opensearch-2 | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-alerting | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-analysis-icu | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-analysis-kuromoji | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-analysis-nori | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-analysis-phonetic | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-analysis-smartcn | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-analysis-stempel | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-analysis-ukrainian | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-anomaly-detection | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-asynchronous-search | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-cross-cluster-replication | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-crypto-kms | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-custom-codecs | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-discovery-azure-classic | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-discovery-ec2 | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-discovery-gce | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-entrypoint-compat | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-geospatial | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-identity-shiro | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-index-management | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-ingest-attachment | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-job-scheduler | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-jre-bcfips | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-alerting | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-analysis-icu | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-analysis-kuromoji | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-analysis-nori | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-analysis-phonetic | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-analysis-smartcn | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-analysis-stempel | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-analysis-ukrainian | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-anomaly-detection | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-asynchronous-search | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-cross-cluster-replication | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-crypto-kms | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-custom-codecs | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-discovery-azure-classic | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-discovery-ec2 | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-discovery-gce | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-geospatial | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-identity-shiro | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-index-management | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-ingest-attachment | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-job-scheduler | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-k-nn | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-mapper-annotated-text | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-mapper-murmur3 | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-mapper-size | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-ml-commons | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-neural-search | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-notifications | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-observability | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-performance-analyzer | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-reporting | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-repository-azure | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-repository-gcs | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-repository-s3 | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-security | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-security-analytics | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-sql | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-store-smb | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-telemetry-otel | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-jre-bcfips-transport-nio | 0 | 2.19.1-r1 |
| Chainguard | opensearch-2-k-nn | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-mapper-annotated-text | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-mapper-murmur3 | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-mapper-size | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-ml-commons | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-neural-search | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-notifications | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-observability | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-performance-analyzer | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-reporting | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-repository-azure | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-repository-gcs | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-repository-s3 | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-security | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-security-analytics | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-sql | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-store-smb | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-telemetry-otel | 0 | 2.19.4-r0 |
| Chainguard | opensearch-2-transport-nio | 0 | 2.19.4-r0 |
| Chainguard | prometheus-jmx-exporter-strimzi-compat | 0 | 0.48.0-r1 |
| Chainguard | sonarqube | 0 | 25.10.0.114319-r0 |
| Chainguard | sonarqube-docker-compat | 0 | 25.10.0.114319-r0 |
| Chainguard | sonarqube-scripts | 0 | 25.10.0.114319-r0 |
| Chainguard | strimzi-kafka-operator | 0 | 0.48.0-r1 |
| Chainguard | strimzi-kafka-operator-cluster-operator | 0 | 0.48.0-r1 |
| Chainguard | strimzi-kafka-operator-kafka-agent | 0 | 0.48.0-r1 |
| Chainguard | strimzi-kafka-operator-kafka-base | 0 | 0.48.0-r1 |
| Chainguard | strimzi-kafka-operator-kafka-init | 0 | 0.48.0-r1 |
| Chainguard | strimzi-kafka-operator-kafka-thirdparty-libs | 0 | 0.48.0-r1 |
| Chainguard | strimzi-kafka-operator-kafka-thirdparty-libs-cc | 0 | 0.48.0-r1 |
| Chainguard | strimzi-kafka-operator-topic-operator | 0 | 0.48.0-r1 |
| Chainguard | strimzi-kafka-operator-tracing-agent | 0 | 0.48.0-r1 |
| Chainguard | strimzi-kafka-operator-user-operator | 0 | 0.48.0-r1 |
| Chainguard | trino | 0 | 471-r0 |
| Chainguard | trino-config | 0 | 471-r0 |
| Chainguard | trino-oci-entrypoint | 0 | 471-r0 |
| Chainguard | trino-plugin-accumulo | 0 | 471-r0 |
| Chainguard | trino-plugin-ai-functions | 0 | 471-r0 |
| Chainguard | trino-plugin-atop | 0 | 471-r0 |
| Chainguard | trino-plugin-bigquery | 0 | 471-r0 |
| Chainguard | trino-plugin-blackhole | 0 | 471-r0 |
| Chainguard | trino-plugin-cassandra | 0 | 471-r0 |
| Chainguard | trino-plugin-clickhouse | 0 | 471-r0 |
| Chainguard | trino-plugin-delta-lake | 0 | 471-r0 |
| Chainguard | trino-plugin-druid | 0 | 471-r0 |
| Chainguard | trino-plugin-duckdb | 0 | 471-r0 |
| Chainguard | trino-plugin-elasticsearch | 0 | 471-r0 |
| Chainguard | trino-plugin-example-http | 0 | 471-r0 |
| Chainguard | trino-plugin-exasol | 0 | 471-r0 |
| Chainguard | trino-plugin-exchange-filesystem | 0 | 471-r0 |
| Chainguard | trino-plugin-exchange-hdfs | 0 | 471-r0 |
| Chainguard | trino-plugin-faker | 0 | 471-r0 |
| Chainguard | trino-plugin-functions-python | 0 | 471-r0 |
| Chainguard | trino-plugin-geospatial | 0 | 471-r0 |
| Chainguard | trino-plugin-google-sheets | 0 | 471-r0 |
| Chainguard | trino-plugin-hive | 0 | 471-r0 |
| Chainguard | trino-plugin-http-event-listener | 0 | 471-r0 |
| Chainguard | trino-plugin-http-server-event-listener | 0 | 471-r0 |
| Chainguard | trino-plugin-hudi | 0 | 471-r0 |
| Chainguard | trino-plugin-iceberg | 0 | 471-r0 |
| Chainguard | trino-plugin-ignite | 0 | 471-r0 |
| Chainguard | trino-plugin-jmx | 0 | 471-r0 |
| Chainguard | trino-plugin-kafka | 0 | 471-r0 |
| Chainguard | trino-plugin-kafka-event-listener | 0 | 471-r0 |
| Chainguard | trino-plugin-kinesis | 0 | 471-r0 |
| Chainguard | trino-plugin-kudu | 0 | 471-r0 |
| Chainguard | trino-plugin-lakehouse | 0 | 471-r0 |
| Chainguard | trino-plugin-ldap-group-provider | 0 | 471-r0 |
| Chainguard | trino-plugin-local-file | 0 | 471-r0 |
| Chainguard | trino-plugin-loki | 0 | 471-r0 |
| Chainguard | trino-plugin-mariadb | 0 | 471-r0 |
| Chainguard | trino-plugin-memory | 0 | 471-r0 |
| Chainguard | trino-plugin-ml | 0 | 471-r0 |
| Chainguard | trino-plugin-mongodb | 0 | 471-r0 |
| Chainguard | trino-plugin-mysql | 0 | 471-r0 |
| Chainguard | trino-plugin-mysql-event-listener | 0 | 471-r0 |
| Chainguard | trino-plugin-opa | 0 | 471-r0 |
| Chainguard | trino-plugin-openlineage | 0 | 471-r0 |
| Chainguard | trino-plugin-opensearch | 0 | 471-r0 |
| Chainguard | trino-plugin-oracle | 0 | 471-r0 |
| Chainguard | trino-plugin-password-authenticators | 0 | 471-r0 |
| Chainguard | trino-plugin-phoenix5 | 0 | 471-r0 |
| Chainguard | trino-plugin-pinot | 0 | 471-r0 |
| Chainguard | trino-plugin-postgresql | 0 | 471-r0 |
| Chainguard | trino-plugin-prometheus | 0 | 471-r0 |
| Chainguard | trino-plugin-ranger | 0 | 471-r0 |
| Chainguard | trino-plugin-raptor-legacy | 0 | 471-r0 |
| Chainguard | trino-plugin-redis | 0 | 471-r0 |
| Chainguard | trino-plugin-redshift | 0 | 471-r0 |
| Chainguard | trino-plugin-resource-group-managers | 0 | 471-r0 |
| Chainguard | trino-plugin-session-property-managers | 0 | 471-r0 |
| Chainguard | trino-plugin-singlestore | 0 | 471-r0 |
| Chainguard | trino-plugin-snowflake | 0 | 471-r0 |
| Chainguard | trino-plugin-spooling-filesystem | 0 | 471-r0 |
| Chainguard | trino-plugin-sqlserver | 0 | 471-r0 |
| Chainguard | trino-plugin-teradata-functions | 0 | 471-r0 |
| Chainguard | trino-plugin-thrift | 0 | 471-r0 |
| Chainguard | trino-plugin-tpcds | 0 | 471-r0 |
| Chainguard | trino-plugin-tpch | 0 | 471-r0 |
| Chainguard | trino-plugin-vertica | 0 | 471-r0 |
| Debian:11 | json-smart | 0 | No fix |
| Debian:12 | json-smart | 0 | No fix |
| Debian:13 | json-smart | 0 | No fix |
| Wolfi | akhq | 0 | 0.25.1-r3 |
| Wolfi | apache-nifi | 0 | 2.3.0-r0 |
| Wolfi | apache-nifi-compat | 0 | 2.3.0-r0 |
| Wolfi | apache-nifi-toolkit | 0 | 2.3.0-r0 |
| Wolfi | apicurio-registry | 0 | 3.0.6-r1 |
| Wolfi | apicurio-registry-nginx-config | 0 | 3.0.6-r1 |
| Wolfi | apicurio-registry-ui | 0 | 3.0.6-r1 |
| Wolfi | dependency-track | 0 | 4.13.0-r1 |
| Wolfi | dependency-track-bundled | 0 | 4.13.0-r1 |
| Wolfi | kafka-strimzi-compat | 0 | 0.48.0-r1 |
| Wolfi | kafka_exporter-strimzi-compat | 0 | 0.48.0-r1 |
| Wolfi | opensearch-2 | 0 | 2.19.4-r0 |
| Wolfi | opensearch-2-alerting | 0 | 2.19.4-r0 |
| Wolfi | opensearch-2-analysis-icu | 0 | 2.19.4-r0 |
Related vulnerabilities
- CVE-2023-1370 [Json-smart](https://netplex.github.io/json-smart/) is a performance focused, JSON… Also affects net.minidev:json-smart
- CVE-2026-33871 Netty is an asynchronous, event-driven network application framework. Also affects akhq
- CVE-2026-33870 Netty is an asynchronous, event-driven network application framework. Also affects akhq
- CVE-2026-24281 Hostname verification in Apache ZooKeeper ZKTrustManager falls back to reverse DNS (PTR)… Also affects akhq
- CVE-2026-24308 Improper handling of configuration values in ZKConfig in Apache ZooKeeper 3.8.5 and 3.9.4… Also affects akhq
- CVE-2025-11143 The Jetty URI parser has some key differences to other common parsers when evaluating… Also affects akhq
- CVE-2025-33042 Improper Control of Generation of Code ('Code Injection') vulnerability in Apache Avro… Also affects akhq
- CVE-2026-1225 ACE vulnerability in configuration file processing by QOS.CH logback-core up to and… Also affects akhq