CVE-2026-32285
High · 7.5CVSS
7.5
EPSS
1.0%
Published
Mar 26, 2026
CISA due date
—
Cloudanix analysis
A flaw in a JSON processing component can let someone send bad data that crashes an affected application.
- 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-2026-32285 is a denial-of-service flaw in the jsonparser project's Delete function. When malformed JSON causes offset calculations to become invalid, the function can produce a negative slice index and trigger a Go runtime panic. In applications that process attacker-controlled JSON and do not recover from panics, a single crafted request or message can terminate the affected process, causing service unavailability. The CVSS vector indicates network exploitability, low attack complexity, no authentication requirement, and high availability impact, with no direct confidentiality or integrity impact.
Why it matters to the business
Applications, APIs, workers, or data-processing services that use the affected jsonparser Delete function on untrusted JSON may be crashed remotely, interrupting service availability and potentially causing failed transactions, queue backlogs, degraded customer experience, or repeated restarts. Current public exploitation signals are low: EPSS is 0.0075 and flat over 30 days, there is no known CISA KEV listing, no ransomware association, and no reported exploit maturity; however, the vulnerability is simple to trigger where reachable because it requires no privileges or user interaction.
How an attack unfolds
An attacker first identifies an application endpoint, API, webhook, ingestion pipeline, or message consumer that accepts JSON and passes that data to the jsonparser Delete function. The attacker then sends malformed JSON structured to confuse offset validation during deletion logic. When the library calculates slice boundaries, the malformed offsets can result in a negative slice index. In Go, this causes a runtime panic such as a slice-bounds error. If the application lacks panic recovery around request or message handling, the panic can crash the process. The attacker can repeat the request to keep the service unstable or unavailable, especially if process supervisors automatically restart it without blocking the offending input source.
How to fix it
Upgrade the affected jsonparser dependency to a vendor-confirmed fixed release as soon as one is available. No fixed versions were provided in the input, so engineering teams should monitor the upstream jsonparser project advisory, package registry, and release notes for the corrected version and pin to that version once published. Until a fix is available or fully deployed, avoid passing untrusted or malformed JSON directly to Delete; validate JSON syntax before invoking Delete; add defensive bounds checking around deletion logic where wrapping code is possible; implement panic recovery in HTTP handlers, queue consumers, and background workers; reject oversized or malformed JSON at the API gateway or application boundary; apply rate limits to JSON-ingestion endpoints; and ensure process supervisors restart crashed services while alerting on crash loops. Where practical, replace vulnerable usage with a parser or deletion routine that safely handles malformed input.
How to confirm the fix worked
Confirm exposure by producing a software bill of materials or dependency inventory and locating applications that import or vendor the affected jsonparser project and call Delete on externally supplied JSON. Verify remediation by confirming the deployed artifact uses a fixed upstream version once available, or that the vulnerable dependency is removed or replaced. In staging, test representative malformed JSON inputs against endpoints or workers that previously reached Delete and confirm they return controlled errors rather than panicking or terminating. Review runtime logs after validation tests for absence of Go panic messages, slice-bounds errors, stack traces referencing jsonparser Delete, process restarts, container restarts, or crash-loop events. Also confirm that request-size limits, JSON validation, rate limiting, and panic-recovery middleware are active on affected paths.
Typical attack path
- Identify an exposed service or processing path that accepts JSON from unauthenticated or low-trust sources.
- Determine that the application performs JSON field deletion using the affected jsonparser Delete functionality.
- Send specially malformed JSON that leads to invalid offset calculation during Delete processing.
- Trigger a Go runtime panic caused by a negative slice index or slice-bounds violation.
- Cause the affected process, worker, or request handler to terminate if panic recovery is not in place.
- Repeat malformed requests or messages to sustain denial of service and exhaust operational recovery mechanisms.
How to detect it
To determine whether this was already exploited, review application logs, container logs, process supervisor logs, API gateway logs, load balancer logs, and message-consumer logs for crashes or panics occurring immediately after malformed JSON requests or messages. Look for Go runtime panic entries, slice-bounds or negative-index errors, and stack traces that reference jsonparser Delete. Correlate panic timestamps with inbound HTTP requests containing invalid JSON, unusual content lengths, repeated 400/500 responses, or repeated requests from the same source IP, user agent, API key, or message producer. In containerized environments, check orchestrator events for restart spikes, CrashLoopBackOff conditions, liveness probe failures, and short-lived container instances. In queue-based architectures, inspect dead-letter queues or poison-message handling for malformed JSON payloads that repeatedly crash consumers. There are no known public exploit-specific network signatures from the provided data, so detection should focus on runtime crash artifacts and malformed JSON activity preceding service restarts.
- panic: runtime error: slice bounds out of range
- panic: runtime error: slice bounds out of range [:-
- slice bounds out of range [:-
- negative slice index
- jsonparser.Delete
- github.com/buger/jsonparser.Delete
- runtime.goexit
- CrashLoopBackOff
- Back-off restarting failed container
- liveness probe failed
- readiness probe failed
What your security team should do
- Inventory all services, APIs, workers, and third-party components that use the jsonparser project, especially code paths invoking Delete on untrusted JSON.
- Prioritize internet-facing JSON ingestion endpoints and unauthenticated APIs for mitigation because the flaw is network-exploitable with no required privileges.
- Ask engineering teams to add or verify panic recovery around request handlers and message consumers so malformed input cannot terminate the whole process.
- Deploy JSON syntax validation, request-size limits, and rate limiting at application and gateway layers for affected services.
- Monitor upstream jsonparser releases and apply the first vendor-confirmed fixed version promptly; pin dependencies rather than allowing ambiguous floating versions.
- Create alerts for Go panic logs, slice-bounds errors, stack traces involving jsonparser.Delete, abnormal process restarts, and container crash loops following malformed JSON requests.
- Because EPSS is currently low and the issue is not in KEV, treat this as important availability hardening rather than an active widespread exploitation emergency unless local telemetry shows crash attempts.
The record
The Delete function fails to properly validate offsets when processing malformed JSON input. This can lead to a negative slice index and a runtime panic, allowing a denial of service attack.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Chainguard | cg | 0 | 0.2.225-r0 |
| Chainguard | chainloop-cli | 0 | 1.83.0-r1 |
| Chainguard | chainloop-cli-fips | 0 | 1.83.0-r1 |
| Chainguard | chainloop-control-plane | 0 | 1.83.0-r1 |
| Chainguard | chainloop-control-plane-fips | 0 | 1.83.0-r1 |
| Chainguard | commercial-grafana-11.6 | 0 | 11.6.14-r0 |
| Chainguard | commercial-grafana-12.1 | 0 | 12.1.10-r0 |
| Chainguard | commercial-grafana-12.2 | 0 | 12.2.8-r0 |
| Chainguard | commercial-grafana-12.3 | 0 | 12.3.6-r0 |
| Chainguard | commercial-grafana-12.4 | 0 | 12.4.2-r0 |
| Chainguard | cri-tools | 0 | 1.35.0-r7 |
| Chainguard | crictl | 0 | 1.35.0-r7 |
| Chainguard | dagger | 0 | 0.20.2-r0 |
| Chainguard | datadog-agent-7.71 | 0 | 0 |
| Chainguard | datadog-agent-7.72 | 0 | 0 |
| Chainguard | datadog-agent-7.73 | 0 | 0 |
| Chainguard | datadog-agent-7.74 | 0 | 7.74.1-r11 |
| Chainguard | datadog-agent-7.76 | 0 | 7.76.3-r3 |
| Chainguard | datadog-agent-fips-7.71 | 0 | 0 |
| Chainguard | datadog-agent-fips-7.72 | 0 | 7.72.4-r8 |
| Chainguard | datadog-agent-fips-7.73 | 0 | 7.73.3-r7 |
| Chainguard | datadog-agent-fips-7.74 | 0 | 0 |
| Chainguard | datadog-agent-fips-7.76 | 0 | 7.76.3-r3 |
| Chainguard | deck | 0 | 1.56.0-r2 |
| Chainguard | deck-fips | 0 | 1.56.0-r3 |
| Chainguard | dgraph | 0 | 25.3.0-r3 |
| Chainguard | eksctl | 0 | 0.224.0-r7 |
| Chainguard | gitlab-runner-18.7 | 0 | 18.7.2-r10 |
| Chainguard | gitlab-runner-18.8 | 0 | 18.8.0-r5 |
| Chainguard | gitlab-runner-18.9 | 0 | 18.9.0-r4 |
| Chainguard | gitlab-runner-fips-18.8 | 0 | 18.8.0-r6 |
| Chainguard | gitlab-runner-fips-18.9 | 0 | 18.9.0-r4 |
| Chainguard | gitlab-runner-helper-18.7 | 0 | 18.7.2-r10 |
| Chainguard | gitlab-runner-helper-18.8 | 0 | 18.8.0-r5 |
| Chainguard | gitlab-runner-helper-18.9 | 0 | 18.9.0-r4 |
| Chainguard | gitlab-runner-helper-fips-18.8 | 0 | 18.8.0-r6 |
| Chainguard | gitlab-runner-helper-fips-18.9 | 0 | 18.9.0-r4 |
| Chainguard | google-cloud-otel-ops-collector | 0 | 0 |
| Chainguard | goreleaser | 0 | 2.14.3-r3 |
| Chainguard | grafana-11.6 | 0 | 11.6.13-r2 |
| Chainguard | grafana-12.1 | 0 | 12.1.9-r2 |
| Chainguard | grafana-12.2 | 0 | 12.2.7-r2 |
| Chainguard | grafana-12.3 | 0 | 12.3.5-r2 |
| Chainguard | grafana-12.4 | 0 | 12.4.1-r2 |
| Chainguard | grafana-alloy | 0 | 1.14.1-r2 |
| Chainguard | grafana-alloy-fips | 0 | 1.14.1-r2 |
| Chainguard | grafana-beyla | 0 | 3.6.0-r1 |
| Chainguard | grafana-fips-11.6 | 0 | 11.6.13-r4 |
| Chainguard | grafana-fips-12.1 | 0 | 12.1.9-r4 |
| Chainguard | grafana-fips-12.2 | 0 | 12.2.7-r2 |
| Chainguard | grafana-fips-12.3 | 0 | 12.3.5-r3 |
| Chainguard | grafana-fips-12.4 | 0 | 12.4.2-r0 |
| Chainguard | influxd-2.7 | 0 | 2.7.12-r15 |
| Chainguard | jfrog-cli | 0 | 2.96.0-r2 |
| Chainguard | k3s | 0 | 1.35.2.1-r2 |
| Chainguard | k3s-1.31 | 0 | 1.31.6.1-r15 |
| Chainguard | k3s-1.32 | 0 | 1.32.13.1-r6 |
| Chainguard | k3s-1.33 | 0 | 1.33.9.1-r4 |
| Chainguard | k3s-static | 0 | 1.35.2.1-r2 |
| Chainguard | k3s-static-1.31 | 0 | 1.31.6.1-r15 |
| Chainguard | k3s-static-1.32 | 0 | 1.32.13.1-r6 |
| Chainguard | k3s-static-1.33 | 0 | 1.33.9.1-r4 |
| Chainguard | k8sgpt | 0 | 0.4.30-r4 |
| Chainguard | kubevela-vela-cli | 0 | 1.10.7-r5 |
| Chainguard | kubevela-vela-cli-fips | 0 | 1.10.7-r6 |
| Chainguard | kubevela-vela-core | 0 | 1.10.7-r5 |
| Chainguard | kubevela-vela-core-fips | 0 | 1.10.7-r6 |
| Chainguard | lazygit | 0 | 0.60.0-r4 |
| Chainguard | loki-2.9 | 0 | 2.9.17-r5 |
| Chainguard | loki-2.9-logcli | 0 | 2.9.17-r5 |
| Chainguard | loki-2.9-loki-canary | 0 | 2.9.17-r5 |
| Chainguard | loki-2.9-promtail | 0 | 2.9.17-r5 |
| Chainguard | loki-3.4 | 0 | 3.4.6-r10 |
| Chainguard | loki-3.4-logcli | 0 | 3.4.6-r10 |
| Chainguard | loki-3.5 | 0 | 3.5.12-r1 |
| Chainguard | loki-3.5-logcli | 0 | 3.5.12-r1 |
| Chainguard | loki-3.6 | 0 | 3.6.7-r4 |
| Chainguard | loki-3.6-logcli | 0 | 3.6.7-r4 |
| Chainguard | loki-fips-2.9 | 0 | 2.9.17-r6 |
| Chainguard | loki-fips-2.9-logcli | 0 | 2.9.17-r6 |
| Chainguard | loki-fips-2.9-loki-canary | 0 | 2.9.17-r6 |
| Chainguard | loki-fips-2.9-promtail | 0 | 2.9.17-r6 |
| Chainguard | loki-fips-3.4 | 0 | 3.4.6-r9 |
| Chainguard | loki-fips-3.4-logcli | 0 | 3.4.6-r9 |
| Chainguard | loki-fips-3.5 | 0 | 3.5.12-r2 |
| Chainguard | loki-fips-3.5-logcli | 0 | 3.5.12-r2 |
| Chainguard | loki-fips-3.6 | 0 | 3.6.7-r4 |
| Chainguard | loki-fips-3.6-logcli | 0 | 3.6.7-r4 |
| Chainguard | malcontent | 0 | 1.21.3-r1 |
| Chainguard | maru | 0 | 0.6.0-r11 |
| Chainguard | mcp-grafana | 0 | 0.11.3-r5 |
| Chainguard | mcp-grafana-fips | 0 | 0.11.3-r2 |
| Chainguard | minio | 0 | 0.20251015.172955-r10 |
| Chainguard | minio-fips | 0 | 0.20251015.172955-r11 |
| Chainguard | nfpm | 0 | 2.45.2-r3 |
| Chainguard | nuclei | 0 | 3.7.1-r3 |
| Chainguard | ollama | 0 | 0.18.2-r1 |
| Chainguard | ollama-fips | 0 | 0.18.2-r1 |
| Chainguard | opentelemetry-collector | 0 | 0.148.0-r1 |
| Chainguard | opentelemetry-collector-contrib | 0 | 0.148.0-r3 |
| Chainguard | opentelemetry-collector-contrib-fips | 0 | 0.148.0-r2 |
| Chainguard | opentelemetry-collector-fips | 0 | 0 |
| Chainguard | prometheus-3.10 | 0 | 3.10.0-r3 |
| Chainguard | prometheus-fips-3.10 | 0 | 3.10.0-r2 |
| Chainguard | rclone | 0 | 1.73.2-r2 |
| Chainguard | rclone-fips | 0 | 1.73.3-r0 |
| Chainguard | rpk-25.1.12 | 0 | 25.1.12-r8 |
| Chainguard | rpk-25.2.14 | 0 | 25.2.14-r4 |
| Chainguard | rpk-25.3.10 | 0 | 25.3.10-r3 |
| Chainguard | teleport-18 | 0 | 18.7.2-r4 |
| Chainguard | teleport-18.6 | 0 | 18.6.8-r7 |
| Chainguard | tempo-2.10 | 0 | 2.10.3-r6 |
| Chainguard | tempo-2.10-cli | 0 | 2.10.3-r6 |
| Chainguard | tempo-2.10-vulture | 0 | 2.10.3-r6 |
| Chainguard | tempo-2.9 | 0 | 2.9.1-r3 |
| Chainguard | tempo-2.9-cli | 0 | 2.9.1-r3 |
| Chainguard | tempo-fips-2.10 | 0 | 2.10.3-r2 |
| Chainguard | tempo-fips-2.10-cli | 0 | 2.10.3-r2 |
| Chainguard | tempo-fips-2.10-vulture | 0 | 2.10.3-r2 |
| Chainguard | tempo-fips-2.9 | 0 | 2.9.1-r3 |
| Chainguard | tempo-fips-2.9-cli | 0 | 2.9.1-r3 |
| Chainguard | terraform-mcp-server | 0 | 0.4.0-r3 |
| Chainguard | terragrunt | 0 | 0.99.5-r1 |
| Chainguard | terragrunt-fips | 0 | 0.99.4-r6 |
| Chainguard | vcluster | 0 | 0.32.1-r7 |
| Chainguard | vcluster-cli | 0 | 0.32.1-r7 |
| Chainguard | vcluster-syncer | 0 | 0.32.1-r7 |
| Chainguard | weaviate | 0 | 1.36.6-r1 |
| Chainguard | witness | 0 | 0.10.2-r15 |
| Wolfi | cri-tools | 0 | 1.35.0-r7 |
| Wolfi | crictl | 0 | 1.35.0-r7 |
| Wolfi | dagger | 0 | 0.20.2-r0 |
| Wolfi | datadog-agent-7.72 | 0 | 0 |
| Wolfi | datadog-agent-7.73 | 0 | 0 |
| Wolfi | datadog-agent-7.74 | 0 | 7.74.1-r11 |
| Wolfi | datadog-agent-7.76 | 0 | 7.76.3-r3 |
| Wolfi | dgraph | 0 | 25.3.0-r3 |
| Wolfi | eksctl | 0 | 0.224.0-r7 |
| Wolfi | gitlab-runner-18.7 | 0 | 18.7.2-r10 |
| Wolfi | gitlab-runner-18.8 | 0 | 18.8.0-r5 |
| Wolfi | gitlab-runner-18.9 | 0 | 18.9.0-r4 |
| Wolfi | gitlab-runner-helper-18.7 | 0 | 18.7.2-r10 |
| Wolfi | gitlab-runner-helper-18.8 | 0 | 18.8.0-r5 |
| Wolfi | gitlab-runner-helper-18.9 | 0 | 18.9.0-r4 |
| Wolfi | goreleaser | 0 | 2.14.3-r3 |
| Wolfi | grafana-11.6 | 0 | 11.6.13-r2 |
| Wolfi | grafana-12.1 | 0 | 12.1.9-r2 |
| Wolfi | grafana-12.2 | 0 | 12.2.7-r2 |
| Wolfi | grafana-12.3 | 0 | 12.3.5-r2 |
| Wolfi | grafana-12.4 | 0 | 12.4.1-r2 |
| Wolfi | grafana-alloy | 0 | 1.14.1-r2 |
| Wolfi | influxd-2.7 | 0 | 2.7.12-r15 |
| Wolfi | k3s | 0 | 1.35.2.1-r2 |
| Wolfi | k3s-1.32 | 0 | 1.32.13.1-r6 |
| Wolfi | k3s-1.33 | 0 | 1.33.9.1-r4 |
| Wolfi | k3s-static | 0 | 1.35.2.1-r2 |
| Wolfi | k3s-static-1.32 | 0 | 1.32.13.1-r6 |
| Wolfi | k3s-static-1.33 | 0 | 1.33.9.1-r4 |
| Wolfi | k8sgpt | 0 | 0.4.30-r4 |
| Wolfi | kubevela-vela-cli | 0 | 1.10.7-r5 |
| Wolfi | kubevela-vela-core | 0 | 1.10.7-r5 |
| Wolfi | lazygit | 0 | 0.60.0-r4 |
| Wolfi | loki-3.4 | 0 | 3.4.6-r10 |
| Wolfi | loki-3.4-logcli | 0 | 3.4.6-r10 |
| Wolfi | loki-3.5 | 0 | 3.5.12-r1 |
| Wolfi | loki-3.5-logcli | 0 | 3.5.12-r1 |
| Wolfi | loki-3.6 | 0 | 3.6.7-r4 |
| Wolfi | loki-3.6-logcli | 0 | 3.6.7-r4 |
| Wolfi | malcontent | 0 | 1.21.3-r1 |
| Wolfi | maru | 0 | 0.6.0-r11 |
| Wolfi | mcp-grafana | 0 | 0.11.3-r5 |
| Wolfi | minio | 0 | 0.20251015.172955-r10 |
| Wolfi | nfpm | 0 | 2.45.2-r3 |
| Wolfi | nuclei | 0 | 3.7.1-r3 |
| Wolfi | ollama | 0 | 0.18.2-r1 |
| Wolfi | opentelemetry-collector | 0 | 0.148.0-r1 |
| Wolfi | opentelemetry-collector-contrib | 0 | 0.148.0-r3 |
| Wolfi | prometheus-3.10 | 0 | 3.10.0-r3 |
| Wolfi | rclone | 0 | 1.73.2-r2 |
| Wolfi | rpk-25.3.10 | 0 | 25.3.10-r3 |
| Wolfi | teleport-18 | 0 | 18.7.2-r4 |
| Wolfi | teleport-18.6 | 0 | 18.6.8-r7 |
| Wolfi | tempo-2.10 | 0 | 2.10.3-r6 |
| Wolfi | tempo-2.10-cli | 0 | 2.10.3-r6 |
| Wolfi | tempo-2.10-vulture | 0 | 2.10.3-r6 |
| Wolfi | terraform-mcp-server | 0 | 0.4.0-r3 |
| Wolfi | terragrunt | 0 | 0.99.5-r1 |
| Wolfi | vcluster | 0 | 0.32.1-r7 |
| Wolfi | vcluster-cli | 0 | 0.32.1-r7 |
| Wolfi | vcluster-syncer | 0 | 0.32.1-r7 |
| Wolfi | weaviate | 0 | 1.36.6-r1 |
| Wolfi | witness | 0 | 0.10.2-r15 |
| openSUSE:Leap 15.6 | govulncheck-vulndb | 0 | 0.0.20260326T203309-150000.1.155.2 |
| openSUSE:Tumbleweed | mcphost | 0 | 0.34.0-1.1 |
Related vulnerabilities
- CVE-2026-34165 go-git is an extensible git implementation library written in pure Go. Also affects cg
- CVE-2026-33762 go-git is an extensible git implementation library written in pure Go. Also affects cg
- CVE-2026-33481 Syft is a a CLI tool and Go library for generating a Software Bill of Materials (SBOM)… Also affects cg
- CVE-2026-33809 A maliciously crafted TIFF file can cause image decoding to attempt to allocate up 4GiB… Also affects cg
- CVE-2026-27141 Due to missing nil check, sending 0x0a-0x0f HTTP/2 frames will cause a running server to… Also affects cg
- CVE-2026-1229 The CombinedMult function in the CIRCL ecc/p384 package (secp384r1 curve) produces an… Also affects cg
- CVE-2026-26958 filippo.io/edwards25519 is a Go library implementing the edwards25519 elliptic curve with… Also affects cg
- CVE-2026-25934 go-git is a highly extensible git implementation library written in pure Go. Also affects cg