CVE-2026-39956

jq: Missing runtime type checks for _strindices lead to crash and limited memory disclosure

State
Published
Severity
6.1 Medium
Published
Apr 13, 2026
Updated
Sep 4, 2026
Reserved
Apr 7, 2026

Read the record on cve.org

Description

jq is a command-line JSON processor. Prior to version 1.8.2, the _strindices builtin in jq's src/builtin.c passes its arguments directly to jv_string_indexes() without verifying they are strings, and jv_string_indexes() in src/jv.c relies solely on assert() checks that are stripped in release builds compiled with -DNDEBUG. This allows an attacker to crash jq trivially with input like _strindices(0), and by crafting a numeric value whose IEEE-754 bit pattern maps to a chosen pointer, achieve a controlled pointer dereference and limited memory read/probe primitive. Any deployment that evaluates untrusted jq filters against a release build is vulnerable. This issue has been patched in commit fdf8ef0f0810e3d365cdd5160de43db46f57ed03, which is part of version 1.8.2.

Scores

CVSSScoreVectorSource
3.16.1 MediumCVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:HGitHub_M

Weaknesses

  • CWE-125 Out-of-bounds Read
  • CWE-476 NULL Pointer Dereference
  • CWE-843 Access of Resource Using Incompatible Type ('Type Confusion')

Affected Products

ProductVersions
jqjqlang
  • < 1.8.2Affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.