CVE-2026-33947jq是一款命令行JSON处理器。在1.8.1及以下版本中,src/jv_aux.c文件的特定函数存在无界递归漏洞。攻击者可通过提供包含大量整数的JSON数组作为路径参数,导致处理程序消耗C调用栈并触发段错误,从而造成拒绝服务攻击。该漏洞绕过了JSON解析器的深度限制,影响所有处理不可信JSON输入的应用。
该漏洞的核心在于jq源码src/jv_aux.c中jv_setpath()、jv_getpath()及delpaths_sorted()函数在处理路径数组时使用了无界递归。虽然jq实施了MAX_PARSING_DEPTH(默认为10,000)来保护JSON解析器,但此限制并不适用于通过程序逻辑在运行时构造的数组。攻击者可以利用这一点,精心构造一个包含约65,000个整数的扁平JSON数组(大小约200KB)。当应用程序使用受信任的jq过滤器处理此恶意数据,并将其作为setpath、getpath或delpaths函数的参数时,递归深度将急剧增加,直接耗尽C语言的调用栈空间。这最终导致进程收到SIGSEGV信号而崩溃,实现拒绝服务攻击。