简介
远程 Amazon Linux 2023 主机缺少安全更新。
描述
因此,该软件受到 ALAS2023-2026-1815 公告中提及的多个漏洞影响。
jq 是命令行 JSON 处理器。jvp_string_append() 和 jvp_string_copy_replace_bad 函数的版本中 1.8.1 存在整数溢出漏洞,其中组合长度超过 2^31 字节的串联字符串,会在缓冲区分配大小计算中造成 32 位无符号整数溢出,从而导致堆缓冲区严重不足。然后,后续的内存复制操作会将完整字符串数据写入这个较小的缓冲区,造成分类为 CWE-190(整数溢出)和 CWE-122(基于堆的缓冲区溢出)的堆缓冲区溢出。任何评估不受信任的 jq 查询的系统都会受到影响,因为攻击者可通过构建生成极大字符串的查询,使进程崩溃或可能通过堆损坏实现进一步利用。根本原因是缺少字符串大小边界检查,这与已有大小限制的数组和对象不同。此问题已在提交 e47e56d226519635768e6aab2f38f0ab037c09e5 中解决。(CVE-2026-32316)
jq 是命令行 JSON 处理器。在版本和更低版本 1.8.1 中,jq 的 src/jv_aux.c 中的函数 jv_setpath()、jv_getpath() 和 delpaths_sorted() 使用无限循环,其深度由调用程序提供的路径数组的长度控制,不强制执行深度限制。攻击者可以提供包含 ~65,000 个整数 (~200 KB) 的平面数组的 JSON 文档,当受信任的 jq 过滤器将其用作路径参数时,会耗尽 C 调用堆栈并造成进程因分段错误 (SIGSEGV) 而崩溃。此绕过有效原因是现有MAX_PARSING_DEPTH (10,000) 限制仅保护 JSON 解析器,而无法保护运行时路径操作,在该操作中,数组可以通过编程方式构建为任意长度。此影响为拒绝服务(无法恢复的崩溃),影响任何通过 jq 的 setpath、getpath 或 delpaths 内置命令处理不受信任的 JSON 输入的应用程序或服务。此问题已在提交 fb59f1491058d58bdc3e8dd28f1773d1ac690a1f 中解决。(CVE-2026-33947)
jq 是命令行 JSON 处理器。6374ae0bcdfe33a18eb0ae6db28493b1f34a0a5b 之前的提交包含一个漏洞,其中 CLI 输入解析允许通过嵌入的 NUL 字节绕过验证。jq 从文件或 stdin 读取 JSON 时,使用 strlen() 来确定缓冲区长度,而不是从 fgets() 中计算实际字节计数,从而导致其在第一个空字节处截断输入并仅解析前面的前缀。这可让攻击者在空字节前面构建带有安全 JSON 前缀且后跟恶意尾部数据的输入,其中 jq 仅将前缀验证为有效 JSON,而静默放弃该后缀。
依赖 jq 先验证不受信任的 JSON 然后再将其转发给下游使用者的工作流容易遭受解析器差分攻击,因为这些使用者可能会处理完整输入,包括恶意的尾部字节。此问题已由提交 6374ae0bcdfe33a18eb0ae6db28493b1f34a0a5b 修补。
(CVE-2026-33948)
jq 是命令行 JSON 处理器。在 69785bf77f86e2ea1b4a20ca86775916889e91c9 之后的提交中,
jq 的 src/builtin.c 中的 _strindices builtin 将其参数直接传递到 jv_string_indexes(),而不验证其是否为字符串,而 src/jv.c 中的 jv_string_indexes() 完全依赖于 assert() 检查,这些检查在使用 -DNDEBUG 编译的版本中剥离。这允许攻击者通过 _strindices(0) 等输入轻松造成 jq 崩溃,并通过构建其 IEEE-754 位模式映射到所选指针的数值,实现受控的指针取消引用和有限的内存读取/探测基元。任何针对发行版本评估不受信任的 jq 过滤器的部署都易受攻击。此问题已在提交 fdf8ef0f0810e3d365cdd5160de43db46f57ed03 中修复。(CVE-2026-39956)
jq 是命令行 JSON 处理器。在 2f09060afab23fe9390cce7cb860b10416e1bf5f 之前的提交中,libjq 中的 jv_parse_sized() API 接受具有明确长度参数的计数缓冲区,但其错误处理路径使用 jv_string_fmt() 中的 %s 格式化输入缓冲区,该函数会读取直到找到 NUL 终止符,而不考虑调用程序提供的长度。这意味着在非 NUL 结束的缓冲区中传递畸形 JSON 时,错误构造逻辑会执行超出缓冲区末尾的越界读取。任何 libjq 使用者调用具有不受信任输入的 jv_parse_sized() 均可访问此漏洞,根据内存布局的不同,可导致内存泄露或进程终止。此问题已在认可 2f09060afab23fe9390cce7cb860b10416e1bf5f 中修补。(CVE-2026-39979)
jq 是命令行 JSON 处理器。在提交 0c7d133c3c7e37c00b6d46b658a02244fdd3c784 之前,jq 在所有 JSON 对象哈希表操作中使用带有硬编码、公开可见种子 (0x432A9843) 的 MurmurHash3,这使得攻击者能够脱机预先计算密钥冲突。通过提供构建的 JSON 对象 (~100 KB),其中所有密钥都哈希处理到同一个存储段,哈希表查找从 O(1) 降级为 O(n),将任何 jq 表达式转变为 O(n2) 操作并导致大量 CPU 耗尽。这会影响常见的 jq 用例,如 CI/CD 管道、Web 服务和数据处理脚本,而且由于只需要很小的负载,因此比现有的堆溢出问题实用得多。此问题已在认可 0c7d133c3c7e37c00b6d46b658a02244fdd3c784 中修补。(CVE-2026-40164)
jq 是命令行 JSON 处理器。在 1.8.1 和更早版本中,当为 decNumberFromString 指定 INT_MAX-1 (2147483646) 位数的数字文本时,D2U() 宏会在 signed-int 算法期间溢出。封装的负值绕过堆分配大小检查,导致函数使用 30 字节的堆栈缓冲区,然后写入 [?]7.15 亿个 16 位单位 ([?]1.4 GiB)位于堆栈帧下方的偏移 1.43 GiB 处。写入的内容完全由攻击者控制(解析后的十进制数字,每单位打包 3 位)。
(CVE-2026-43894)
jq 是命令行 JSON 处理器。在和更早版本中 1.8.1 ,jv_object_merge_recursive() 中的不受限制的递归允许构建的 jq 程序造成进程崩溃并导致段错误。当两个操作数都是对象时,可通过运算符 * 访问该函数。(CVE-2026-43896)
Tenable 已直接从测试产品的安全公告中提取上述描述块。
请注意,Nessus 尚未测试这些问题,而是只依据应用程序自我报告的版本号进行判断。
解决方案
运行“dnf update jq --releasever 2023.12.20260608”或“/或”dnf update --advisory ALAS2023-2026-1815 --releasever 2023.12.20260608“以更新系统。
插件详情
文件名: al2023_ALAS2023-2026-1815.nasl
代理: unix
支持的传感器: Agentless Assessment, Continuous Assessment, Frictionless Assessment Agent, Frictionless Assessment AWS, Nessus Agent, Nessus
风险信息
矢量: CVSS2#AV:N/AC:L/Au:N/C:P/I:N/A:P
矢量: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:L
时间矢量: CVSS:3.0/E:P/RL:O/RC:C
Threat Vector: CVSS:4.0/E:P
Vector: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:L/SC:N/SI:N/SA:N
漏洞信息
CPE: p-cpe:/a:amazon:linux:jq, p-cpe:/a:amazon:linux:jq-debuginfo, p-cpe:/a:amazon:linux:jq-devel, cpe:/o:amazon:linux:2023, p-cpe:/a:amazon:linux:jq-debugsource
必需的 KB 项: Host/local_checks_enabled, Host/AmazonLinux/release, Host/AmazonLinux/rpm-list
易利用性: Exploits are available