CVE-2026-24006Seroval是一个JavaScript库,用于实现超越JSON.stringify能力的高级JS值序列化功能,支持复杂数据结构的序列化与反序列化。然而在1.4.0及以下版本中,序列化具有极端嵌套深度的对象时,由于缺乏深度限制机制,可能导致最大调用栈限制被超出,从而引发栈溢出错误。该漏洞属于拒绝服务(DoS)类型,攻击者可通过构造具有极大嵌套层级的恶意数据触发漏洞,使应用程序崩溃或变得不可用。漏洞已于1.4.1版本中修复,通过引入depthLimit参数限制序列化深度来解决此问题。
Seroval库在处理嵌套对象序列化时采用递归遍历方式。在1.4.0及更早版本中,序列化方法(如parse、serialize)未对对象嵌套深度进行限制。当输入数据包含极深嵌套结构(如数百甚至数千层嵌套的对象)时,递归调用链过长将超出JavaScript引擎的默认调用栈大小限制(通常为1万至2万帧左右),导致抛出RangeError: Maximum call stack exceeded异常。攻击者只需向使用Seroval进行数据处理的服务端或客户端应用提交精心构造的深层嵌套JSON数据即可触发漏洞。1.4.1版本通过新增depthLimit参数,在序列化/反序列化方法中设置最大允许深度,当达到深度限制时主动抛出错误而非继续递归,从而有效防止栈溢出。