CVE-2026-9334Cpanel::JSON::XS是Perl语言中广泛使用的JSON编解码模块。2026年6月披露的CVE-2026-9334漏洞存在于该模块4.41之前的所有版本中。当启用dupkeys_as_arrayref选项进行JSON解码时,decode_hv()函数在处理重复键时会将多个同名键的值合并为数组引用。然而,由于代码逻辑缺陷,在检查旧值类型时过早地调用了SvRV()宏对非引用类型的标量进行解引用操作,导致类型混淆漏洞。攻击者可通过构造包含重复键的恶意JSON数据触发此漏洞,使应用程序崩溃或实现任意内存读取。CVSS评分7.3,属于高危漏洞,对使用该模块处理不可信JSON输入的应用构成严重威胁。
漏洞根因位于Cpanel-JSON-XS的decode_hv()函数中。当dupkeys_as_arrayref选项启用时,该函数会将重复的JSON对象键值合并为数组引用。问题代码执行以下检查:SvTYPE(old_value) != SVt_RV && SvTYPE(SvRV(old_value)) != SVt_PVAV。这个检查存在逻辑缺陷:它直接调用SvRV(old_value)来获取引用指向的数据结构,但在此之前并未验证old_value本身是否为引用类型(SVt_RV)。当现有值为普通标量而非数组引用时,SvRV()会对非引用标量进行解引用操作,导致类型混淆。更严重的是,由于标量内容由攻击者控制,解引用后的指针访问实际上遵循攻击者可控的内存地址。攻击者可通过精心构造的JSON数据(如{"key":"AAAA...","key":"BBBB..."})触发此漏洞,造成程序崩溃或潜在的代码执行。