CVE-2026-39979该漏洞存在于jq命令行JSON处理器的libjq库中。在特定提交之前,`jv_parse_sized()` API虽然接受显式长度参数,但在错误处理路径中使用`%s`格式化输入缓冲区,导致忽略长度参数并读取至NULL终止符。当处理非NULL结尾的畸形JSON时,会触发越界读取,可能造成内存泄露或程序崩溃。
漏洞的核心在于libjq库中`jv_parse_sized()`函数的实现缺陷。该函数虽然设计了接收显式长度参数的接口,意图处理非NULL终止的缓冲区,但在其错误处理分支中,错误地使用了`%s`格式化符通过`jv_string_fmt()`来格式化输入数据。由于`%s`在C语言标准库中依赖于NULL终止符来确定字符串结尾,它会无视传入的长度限制,持续向后读取内存。当攻击者向使用libjq的应用程序提交一段精心构造的、非NULL结尾的畸形JSON数据,并成功触发解析错误时,程序便会执行越界读取操作。这种越界读取不仅可能泄露堆或栈中的敏感内存信息,严重时还会因访问未映射内存区域导致进程崩溃,构成拒绝服务风险。