CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



GHSA-6G7G-W4F8-9C9X

GHSA-6G7G-W4F8-9C9X: Denial of Service via Negative Slice Index in github.com/buger/jsonparser

Alon Barad
Alon Barad
Software Engineer

Mar 18, 2026·6 min read·83 visits

Executive Summary (TL;DR)

Unvalidated offset calculations in jsonparser's Delete function cause a runtime panic with malformed JSON, enabling Denial of Service attacks.

A denial-of-service vulnerability exists in github.com/buger/jsonparser up to version 1.1.1. The Delete function fails to validate offset bounds when processing malformed JSON, leading to a runtime panic and immediate process termination.

Vulnerability Overview

The github.com/buger/jsonparser package is a high-performance, zero-allocation JSON parsing library for Go. The library prioritizes performance by relying heavily on manual byte offset arithmetic rather than standard Go structures. A vulnerability exists in the Delete() function, which is responsible for removing specific keys from a JSON byte slice.

When the Delete() function processes specific malformed JSON fragments, the internal state machine calculates an invalid deletion boundary. The resulting offset computation produces a negative integer. This value is subsequently used as a slice index without prior bounds checking.

Go strictly enforces slice bounds at runtime. Attempting to slice an array or slice with a negative index triggers an immediate runtime error: slice bounds out of range panic. In Go applications, an unhandled panic terminates the executing process entirely, leading to a Denial of Service (DoS) condition.

Root Cause Analysis

The vulnerability stems from improper validation of calculated array indices within the Delete() function located in parser.go. The parser implements a custom state machine to traverse JSON structures and identify the start and end byte offsets of a requested key.

During the parsing of a structurally invalid JSON sequence, such as a missing closing brace or an isolated string missing a value separator, the parser misinterprets the structural boundaries. The logic responsible for calculating the end offset of the targeted key subtracts an incorrect length from the current position. This arithmetic error results in an offset variable value of -1.

At parser.go:729 in version 1.1.1, the function returns a newly constructed slice representing the JSON data without the deleted key. The operation executes return data[offset:]. Because offset equals -1, the Go runtime detects an out-of-bounds slice operation and panics. The defect occurs because the library trusts its internal parsing loop to yield valid, positive boundaries without performing a defensive bounds check before the slice operation.

Code Analysis

The vulnerable code path exists at the termination of the Delete() function. The implementation incorrectly assumes that all offsets generated by the parsing loop are mathematically valid for the provided byte slice.

// Vulnerable code in parser.go (version 1.1.1)
// The offset variable is derived from earlier calculations based on malformed input.
return data[offset:]

The required fix must explicitly validate the bounds of the offset variable before utilizing it in a slice operation. If the calculation yields a negative value, the function should return the original data unmodified, or handle the error gracefully without triggering a runtime panic.

// Suggested manual mitigation for parser.go:729
if offset < 0 {
    return data
}
return data[offset:]

This exact vulnerability pattern follows a similar historical flaw in the same function. CVE-2020-10675 involved an infinite loop within Delete() due to mishandled state tracking. The current issue demonstrates that while the infinite loop was patched in version 1.1.0, the broader boundary validation logic within Delete() remains incomplete.

Exploitation and Proof of Concept

Exploitation requires the attacker to supply a crafted, malformed JSON payload to an endpoint that processes untrusted input using jsonparser.Delete(). No authentication or specific network position is required beyond standard access to the vulnerable endpoint.

The proof-of-concept constructs a malformed JSON byte slice: "0":"0":. This string consists of key-value pairs lacking the standard JSON enclosing brackets and trailing structure. When the Delete() function attempts to remove the key "0", the internal state machine calculates the deletion boundary as -1.

package main
 
import (
    "fmt"
    "github.com/buger/jsonparser"
)
 
func main() {
    data := []byte(`"0":"0":`) 
    result := jsonparser.Delete(data, "0")
    fmt.Println(string(result))
}

Execution of this payload results in a deterministic crash. The Go runtime prints the panic stack trace: panic: runtime error: slice bounds out of range [-1:], specifying the exact file and line number (parser.go:729) before exiting with a non-zero status code.

Impact Assessment

The vulnerability carries a CVSS v3.1 base score of 7.5 (High), reflecting a severe impact on availability. The CVSS vector is CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H. The defect does not compromise confidentiality or integrity, as memory is not leaked or corrupted before the process terminates.

The concrete security impact is a highly reliable application crash. Go web servers commonly handle distinct requests in separate goroutines. While individual goroutine panics can be caught using recover(), many applications do not implement global recovery middleware. In these environments, an unhandled panic in a single goroutine terminates the entire parent process.

This behavior is specifically impactful for systems designed for high-throughput processing, such as API gateways, logging agents, and data ingestion pipelines. These applications often select jsonparser specifically to bypass standard parsing overhead. A single malformed request from an unauthenticated attacker can effectively disable the entire service, requiring external process supervisors to restart it, causing service interruption and dropped traffic.

Execution Flow Diagram

The following diagram illustrates the execution flow from input ingestion to process termination.

Remediation and Mitigation Guidance

As of March 2026, there is no official patched release for github.com/buger/jsonparser. Version 1.1.1 remains the latest release and is vulnerable to this DoS condition. Organizations must implement compensating controls to prevent exploitation.

The most effective mitigation is implementing input validation before invoking the Delete() function. Developers should execute json.Valid() from the standard library to ensure structural integrity of the input. However, this approach negates the primary performance benefit of using a zero-allocation parser, as standard library validation incurs overhead.

Alternatively, Go applications must implement global panic recovery. Developers should wrap HTTP handlers or processing loops in middleware that utilizes the recover() function. This ensures that a panic within a single request context is caught, logged, and isolated, preventing the termination of the main application process. Organizations with strict performance requirements can implement the manual bounds check directly in a vendored copy of the library.

Technical Appendix

CVSS Score
7.5/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Affected Systems

Go applications utilizing github.com/buger/jsonparser <= 1.1.1API gateways and logging pipelines employing jsonparser.Delete() on unvalidated external input

Affected Versions Detail

Product
Affected Versions
Fixed Version
jsonparser
buger
<= 1.1.1-
AttributeDetail
CWE IDCWE-129
Attack VectorNetwork (Remote)
CVSS v3.17.5 (High)
ImpactDenial of Service (Process Termination)
Exploit StatusProof of Concept (PoC) Available
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1499Endpoint Denial of Service
Impact
CWE-129
Improper Validation of Array Index

The product uses untrusted input as a calculation for an array index without proper validation, resulting in a negative index.

Known Exploits & Detection

GitHub IssueOriginal issue report containing the PoC with the specific malformed JSON fragment.

Vulnerability Timeline

Vulnerability discovered via coverage-guided fuzzing and reported to maintainer (Issue #275).
2026-02-19
Vulnerability reported to the Go Vulnerability Database (x/vulndb).
2026-02-19
Public disclosure and assignment of GitHub Security Advisory GHSA-6g7g-w4f8-9c9x.
2026-03-05

References & Sources

  • [1]GitHub Advisory: GHSA-6G7G-W4F8-9C9X
  • [2]Original Issue Report: buger/jsonparser#275
  • [3]Technical Analysis: Security Infinity
  • [4]Prior Related CVE: CVE-2020-10675
Related Vulnerabilities
CVE-2020-10675

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 1 hour ago•CVE-2026-54543
5.4

CVE-2026-54543: DNS Resource Record (RR) Injection in Froxlor DomainZones API

CVE-2026-54543 is a DNS Resource Record (RR) Injection vulnerability in Froxlor, an open-source server administration control panel. Prior to version 2.3.8, the DomainZones.add API command failed to perform strict sanitization and validation on the user-controlled record (label) and type parameters before serializing them into BIND-compatible zone files. An authenticated customer with DNS zone management permissions can inject control characters, breaking out of the original record context to define unauthorized resource records within managed zones.

Amit Schendel
Amit Schendel
0 views•7 min read
•about 1 hour ago•CVE-2026-42533
9.2

CVE-2026-42533: NGINX Map Directive and Regex Matching Pre-Auth Heap Buffer Overflow & Info Leak

CVE-2026-42533 is a critical security vulnerability discovered in NGINX Open Source, NGINX Plus, NGINX Ingress Controller, and related products, referred to as the 'Two-Pass Capture-Clobbering' bug. The flaw is situated within NGINX's internal evaluation engine when handling complex variables, exposing a heap-based buffer overflow and information leak when a configuration chains regular expression-based map directives with numbered capture groups. An unauthenticated remote attacker can exploit this weakness by transmitting crafted HTTP requests to trigger remote code execution or defeat ASLR.

Alon Barad
Alon Barad
2 views•7 min read
•about 2 hours ago•CVE-2026-55593
6.5

CVE-2026-55593: Persistent Administrative Hijacking via Cross-Site Request Forgery in Froxlor Ajax Router

Froxlor prior to version 2.3.8 contains a high-severity architectural flaw where the standalone lib/ajax.php entry point bypasses the centralized request validation in lib/init.php. Unauthenticated remote attackers can leverage Cross-Site Request Forgery (CSRF) to induce authenticated administrators to submit forged requests that modify API key whitelists and expiration dates, potentially yielding persistent, out-of-band administrative control.

Amit Schendel
Amit Schendel
2 views•8 min read
•about 3 hours ago•CVE-2026-62988
9.0

CVE-2026-62988: Multi-Factor Authentication and Credential Bypass in Froxlor API

An insecure data retrieval flaw in the Froxlor server administration panel API allows authenticated remote attackers to retrieve unredacted bcrypt password hashes and Base32-encoded Time-Based One-Time Password (TOTP) seeds. Affected endpoints include several 'get' and 'listing' handlers for customers, administrators, and FTP accounts. Utilizing these leaked parameters, attackers can crack the password hashes offline and concurrently generate valid second-factor authentication codes to completely bypass access controls.

Amit Schendel
Amit Schendel
6 views•6 min read
•about 4 hours ago•CVE-2026-70666
7.4

CVE-2026-70666: Server-Side Request Forgery in Netflix Lemur ACME Authority Management

CVE-2026-70666 is a critical Server-Side Request Forgery (SSRF) vulnerability in Netflix Lemur's ACME certificate management integration. Prior to version 1.9.3, the system allowed authority-role users to bypass initial ACME URL allowlist validations when updating an existing authority. Additionally, the underlying ACME network client blindly parsed and connected to dynamic endpoint URLs supplied in JSON responses from the configured ACME directory, allowing attackers to route arbitrary JWS-signed requests to internal services or cloud metadata endpoints.

Alon Barad
Alon Barad
4 views•5 min read
•about 5 hours ago•CVE-2026-70667
6.3

CVE-2026-70667: Server-Side Request Forgery Bypass in Netflix Lemur Certificate Verification

A security vulnerability in Netflix Lemur, a TLS certificate management framework, allows authenticated operators to bypass Server-Side Request Forgery (SSRF) mitigations. The issue exists within the certificate revocation verification workflow, specifically inside the CRL and OCSP retrieval logic. By exploiting HTTP redirects or DNS rebinding (Time-of-Check Time-of-Use) mechanisms, an attacker can coerce the server into issuing arbitrary network requests to internal services, such as the cloud instance metadata service (IMDS) or loopback addresses. This bypass neutralizes previous network-boundary validation logic and allows blind read/write SSRF targeting internal infrastructure resources.

Amit Schendel
Amit Schendel
5 views•6 min read