IPBUF安全漏洞报告
English
CVE-2026-40612 CVSS 5.5 中危

CVE-2026-40612 jq命令行处理器拒绝服务漏洞

披露日期: 2026-05-11

漏洞信息

漏洞编号
CVE-2026-40612
漏洞类型
拒绝服务
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
jq

相关标签

拒绝服务栈溢出DoSjq

漏洞概述

该漏洞存在于jq命令行JSON处理器1.8.1及更早版本中。由于`jv_contains`函数在递归处理嵌套数组或对象时缺乏深度限制,攻击者可以通过构建程序化的超深嵌套输入结构(绕过JSON解析器的10000层深度限制),导致C栈耗尽,从而引发拒绝服务攻击。

技术细节

漏洞的根本原因在于`jv_contains`函数实现时未对递归深度进行限制。虽然jq的JSON解析器在解析文本输入时限制深度为10000层以防止堆栈溢出,但攻击者可以利用jq内置的`reduce`函数在内存中动态构建更深层次的嵌套对象。当`contains`操作被应用于这种深度嵌套的对象时,`jv_contains`会无限制地进行递归调用,迅速耗尽C语言栈空间,导致进程崩溃。该漏洞攻击复杂度低,需要用户交互,主要影响系统可用性。

攻击链分析

STEP 1
构建恶意Payload
攻击者使用jq的reduce函数构建一个深度极大的嵌套对象,绕过标准JSON解析器的深度限制。
STEP 2
诱导执行
攻击者诱导受害者使用存在漏洞的jq版本(1.8.1及以下)处理该恶意数据文件。
STEP 3
触发递归溢出
jq处理数据时调用contains函数,进而触发jv_contains的无限制递归。
STEP 4
服务拒绝
C栈空间被耗尽,导致jq进程崩溃,系统服务不可用。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# Generate a deeply nested object structure using reduce to bypass JSON parser limits # and trigger the jv_contains recursion issue. # Usage: jq -n '...' payload = reduce range(200000) as $i ({}; .[$i] = {}) # Trigger the vulnerable function (contains calls jv_contains internally) payload | contains({})

影响范围

jq <= 1.8.1

防御指南

临时缓解措施
建议用户立即升级到官方修复版本。在无法升级的情况下,避免使用contains函数处理由程序生成的深层嵌套结构,或者通过操作系统层面的限制(如ulimit -s)来减小进程的栈空间分配,以降低崩溃风险或将其转化为受控的异常。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表