CVE-2026-30873OpenWrt是一个针对嵌入式设备的Linux操作系统。在24.10.6和25.12.1版本之前,其jp_get_token函数中存在内存泄漏漏洞。该函数负责通过将输入表达式分解为标记来执行词法分析。在提取字符串字面量、字段标签和正则表达式时,使用了动态内存分配。这些提取的结果存储在jp_opcode结构体中,随后通过jp_alloc_op复制到新分配的jp_opcode对象。在此传输过程中,如果先前提取并存储了字符串,它会被复制到新分配的内存中,但原始内存从未被释放,从而导致内存泄漏。
该漏洞位于OpenWrt的JSONPath解析器中的jp_get_token函数。该函数在处理输入表达式进行词法分析时,会为识别出的字符串字面量、字段标签和正则表达式动态分配内存,并将这些指针存储在jp_opcode结构体中。当代码调用jp_alloc_op分配新的操作码对象时,会将旧的jp_opcode结构体(包含指向动态分配内存的指针)复制到新的内存区域。然而,问题在于复制操作仅拷贝了指针值,而未释放原始指针指向的内存块,也未建立有效的内存管理机制来接管所有权。由于CVSS向量显示需要高权限(PR:H),攻击者通常需具备管理员级别的网络访问权限。通过反复发送包含特定字符串或正则表达式的恶意JSONPath表达式,攻击者可以触发该漏洞,导致服务器内存持续泄漏而无法回收,最终可能因内存耗尽引发拒绝服务(DoS)。