CVE-2026-59168
MediumCVSS 6.2Summary
Dasel versions 3.0.0 through 3.11.1 lack a depth limit when parsing nested JSON or XML. Deeply nested attacker-controlled input can exhaust the Go goroutine stack and cause an unrecoverable fatal error that terminates the entire process.
Risk Assessment
The vulnerability enables a DoS attack—sending specially crafted data can terminate the application process, impacting availability.
Recommendation
Update Dasel to version 3.11.1, which introduces a recursion depth limit.
Other vulnerabilities in Dasel
See all- CVE-2026-62866Medium
Dasel versions 3.0.0 through 3.11.2 have a bug in the tokenizer that reads out of bounds when a selector ends with whitespace, causing a panic and process termination. Input passed through Tokenize() or dasel.Query is also affected.
- CVE-2026-46378Medium
A vulnerability in Dasel versions 3.0.0 through 3.10.1 causes an infinite loop when tokenizing an unterminated regex literal (e.g., r/). An attacker can exploit a crafted selector string to exhaust CPU resources.
- CVE-2026-46377Medium
Dasel versions 3.0.0 through 3.10.0 have a vulnerability in the parseCurRune function of the tokenizer that fails to perform bounds checking when processing escape sequences in quoted strings. An attacker can supply a crafted selector string, causing an index-out-of-range panic.
Original NVD description (English source)
Dasel is a command-line tool and library for querying, modifying, and transforming data structures. From 3.0.0 until 3.11.1, parsing/json/json_reader.go decodeValue, decodeObject, and decodeArray, and parsing/xml/reader.go parseElement, recurse once per input nesting level without a depth guard. Deeply nested attacker-controlled JSON or XML supplied through parsing.Format(...).NewReader(...).Read(data), the command-line interface, or the parse selector function can exhaust the Go goroutine stack and raise an unrecoverable fatal error that terminates the entire process. The XML input-size limit does not prevent depth exhaustion, and defer or recover cannot intercept the failure. This issue is fixed in version 3.11.1.

