CVE-2026-39956jq命令行JSON处理器中的_strindices内置函数存在漏洞。该函数未验证参数类型直接将其传递给底层函数,而底层函数依赖的断言在发布版本中被移除。攻击者可利用此漏洞通过构造特殊数值输入导致程序崩溃,或实现受控的指针解引用和有限的内存读取。
该漏洞发生在jq的src/builtin.c文件中,_strindices内置函数在未验证参数是否为字符串的情况下,直接将其传递给src/jv.c中的jv_string_indexes()函数。jv_string_indexes()内部仅使用assert()来确保参数类型。然而,当jq使用-DNDEBUG标志编译为Release版本时,assert()检查会被剥离。因此,攻击者可以传入数字(如0)代替字符串,导致程序将数值作为指针进行解引用,引发段错误(DoS)。更进一步,通过构造符合IEEE-754格式的特定数值,攻击者可以控制解引用的内存地址,从而建立有限的内存读取和探测原语,泄露敏感信息。