CVE-2026-43895jq命令行JSON处理器在1.8.1及更早版本中存在安全漏洞。该漏洞源于程序在处理导入路径时,逻辑层面允许包含NUL字节,而底层C语言实现将其视为字符串结束符。这种差异导致安全验证机制失效,攻击者可利用此特性绕过路径检查,访问预期之外的文件资源。
该漏洞的核心在于jq语言层与C语言实现层对字符串处理的不一致。在jq语言层面,解析器允许import路径中包含NUL字节(\x00),并将其视为普通字符或路径的一部分。然而,当jq尝试加载模块或数据文件时,调用的是标准的C语言库函数(如open、fopen等)。这些C函数在遇到NUL字节时会立即停止解析,导致实际打开的文件路径与逻辑验证的路径不同。攻击者可以精心构造包含NUL字节的路径字符串。例如,如果安全策略检查路径是否包含特定前缀或后缀,攻击者可以在合法路径后插入NUL字节,再附加恶意路径。验证层可能只看到合法部分,而底层系统调用则截断NUL之后的内容,从而绕过目录限制或访问控制,导致本地敏感文件泄露或篡改。