CVE-2026-46378: TomWright Dasel infinite loop in selector lexer

CVE-2026-46378 · Severity: high · CVSS 7.5 · Published 2026-07-16

Dasel is a command-line tool and library used to query and modify data structures like JSON, YAML, and XML. A flaw in how it processes search queries allows an attacker to provide a specially crafted, incomplete query that causes the software to enter an infinite loop. This results in 100% CPU usage, potentially leading to a denial-of-service condition where the application or system becomes unresponsive.

Technologies: github.com/tomwright/dasel (Go), github.com/tomwright/dasel/v2 (Go), github.com/tomwright/dasel/v3 (Go), TomWright Dasel. Vendors: Go, TomWright.

Quick answers

Is CVE-2026-46378 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-46378 being exploited in the wild.
How severe is CVE-2026-46378?
High severity, with a CVSS score of 7.5, published 16 July 2026.
Which products and versions are affected?
github.com/tomwright/dasel (Go) SEMVER:introduced=0; github.com/tomwright/dasel/v2 (Go) SEMVER:introduced=0; github.com/tomwright/dasel/v3 (Go) >= 3.0.0, < 3.10.1, SEMVER:introduced=3.0.0,fixed=3.10.1; TomWright Dasel >= 3.0.0, < 3.10.1.
Is there a fix for CVE-2026-46378?
Yes. github.com/tomwright/dasel/v3 (Go): upgrade to 3.10.1 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-46378 attacked?
It is attacked with local access, in a software library.
Am I affected by CVE-2026-46378?
Check whether you run github.com/tomwright/dasel (Go), github.com/tomwright/dasel/v2 (Go), github.com/tomwright/dasel/v3 (Go) or one of the others listed at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • github.com/tomwright/dasel/v3 (Go): upgrade to 3.10.1 or later
    go get github.com/tomwright/dasel/v3@v3.10.1

Technical details

A vulnerability exists in the selector lexer of Dasel within the matchRegexPattern closure of (*Tokenizer).parseCurRune in selector/lexer/tokenize.go. The lexer fails to perform bounds-checking against the input length when encountering an unterminated regex literal (e.g., 'r/'). Because the peekRuneEqual function returns false at the end of input, the loop condition remains true, causing the tokenizer to increment the position pointer indefinitely. This results in an infinite loop that consumes 100% CPU on a single core. The issue is fixed in version 3.10.1 by implementing proper EOF checks during regex tokenization.

Affected products

  • TomWright dasel >= 3.0.0, < 3.10.1

Identifiers

  • CVE-2026-46378
  • GHSA-m6xr-fvfg-5g64
  • GO-2026-5493

Timeline

  • 2026-05-13: advisory: GitHub Security Advisory published
  • 2026-07-16: disclosed: CVE-2026-46378 published to NVD
  • 2026-07-16: patched: Fix included in version 3.10.1

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.