CVE-2026-9516Cpanel::JSON::XS是Perl语言中广泛使用的JSON编解码模块。该漏洞存在于4.41之前版本中,当处理带有UTF-8 BOM(字节顺序标记)前缀的JSON输入时,如果decode filter callback抛出异常,会导致严重的内存管理错误。攻击者可以通过构造特定的JSON数据触发此漏洞,使目标应用的Perl解释器崩溃,从而实现拒绝服务攻击。由于Cpanel::JSON::XS在许多Web应用和系统工具中作为核心依赖,此漏洞影响范围广泛,任何使用该模块处理不可信JSON数据的应用都可能受到影响。
漏洞根源在于Cpanel::JSON::XS的decode_json()函数对UTF-8 BOM的处理机制。该函数为了跳过UTF-8 BOM(3字节:0xEF 0xBB 0xBF),使用SvPV_set()修改输入标量的字符串指针,将其向前推进3字节。正常情况下,函数返回时会恢复原始指针位置。然而,当解码过程中Perl异常被触发(例如filter_json_object callback调用croak),函数会通过longjmp等机制直接退出,跳过指针恢复逻辑。这导致输入标量的字符串指针仍指向缓冲区内部偏移位置,而长度信息已被缩短。当该标量随后被Perl垃圾回收器释放时,内存分配器收到一个无效的指针(指向栈上或已释放的内存区域),触发断言失败或段错误,最终导致整个Perl解释器进程崩溃。攻击者只需构造一个带BOM前缀的JSON文档配合抛出异常的filter callback即可稳定触发此漏洞。