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

CVE-2026-41256 jq NUL字节截断漏洞

披露日期: 2026-05-11

漏洞信息

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

相关标签

输入验证截断jqCVE-2026-41256本地漏洞

漏洞概述

jq是一款广泛使用的命令行JSON处理器。在1.8.1及更早版本中存在一个安全漏洞,涉及文件加载时的NUL字节处理问题。当使用-f参数从文件加载顶层jq程序时,程序会在遇到第一个嵌入的NUL字节时发生截断,仅执行NUL之前的前缀代码。这导致jq在编译路径上出现前缀与全缓冲区的不匹配,尽管JSON解析路径已修复,但该问题仍可能被利用于绕过安全限制或造成完整性影响。

技术细节

该漏洞源于jq在处理通过-f参数加载的文件时,对NUL字节(\x00)的处理逻辑存在缺陷。在受影响版本中,当解析器读取到NUL字节时,会错误地认为文件结束,从而丢弃后续的所有内容。这种截断行为导致了“前缀/全缓冲区不匹配”的问题。具体而言,虽然JSON解析路径已经修复了CVE-2026-33948中提到的类似问题,但编译路径并未同步修复。攻击者可以构造一个特殊的jq过滤器文件,例如在合法的过滤表达式后插入NUL字节和任意后缀。当jq编译并执行该文件时,它只看到NUL字节前的部分,但在内部缓冲区处理上可能产生不一致。这种不一致可能被利用来破坏程序的完整性(I:H),例如导致非预期的代码编译或执行逻辑。

攻击链分析

STEP 1
1. 构造恶意文件
攻击者创建一个包含NUL字节(\x00)的jq过滤器文件,在合法代码后插入NUL及任意后缀。
STEP 2
2. 诱导执行
攻击者诱导受害者或系统使用jq -f参数加载并执行该恶意文件。
STEP 3
3. 触发截断
jq解析器在读取文件时遇到NUL字节,错误地截断输入,仅保留NUL字节前的代码。
STEP 4
4. 缓冲区不匹配
编译路径与JSON解析路径处理不一致,导致前缀/全缓冲区不匹配,产生完整性影响。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# Create a malicious filter file containing a NUL byte # The payload consists of a valid filter '.' followed by a NUL byte and suffix printf ".\x00malicious_suffix" > poc.jq # Execute jq with the crafted file # Due to the vulnerability, jq truncates input at the NUL byte jq -f poc.jq # Expected behavior: The program executes only the prefix '.' # This demonstrates the truncation and buffer mismatch.

影响范围

jq <= 1.8.1

防御指南

临时缓解措施
建议用户尽快升级jq至修复了该漏洞的最新版本。如果无法立即升级,应在加载前对过滤器文件进行预处理,移除其中嵌入的NUL字节(\x00),并避免直接处理来源不明的jq文件。

参考链接