Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 976

原型链污染

审核人Cybersecurity entrepreneur & security researcher

原型链污染 是什么?

原型链污染JavaScript 漏洞,攻击者通过不可信输入修改 Object.prototype,向所有对象注入属性,从而改变应用行为甚至导致 RCE。


原型链污染利用 JavaScript 的原型链:在 merge/clone/assign 操作中设置 proto、constructor.prototype 或 prototype 等键,攻击者可改变 Object.prototype,使所有普通对象继承这些属性。该问题常出现于递归合并工具、深拷贝函数、查询字符串解析器或接受用户 JSON 的模板引擎中。后果包括拒绝服务、认证绕过,以及当被污染的属性影响安全相关查询(isAdmin、sandbox、渲染选项等)时的远程代码执行。具有代表性的 CVE 包括 lodash CVE-2019-10744 以及众多 Node.js 库的漏洞。缓解措施包括拒绝 proto/constructor 键、对不可信数据使用 Map 或 Object.create(null)、对原型 Object.freeze,并选择更安全的库。

示例

  1. 01

    向使用 JSON merge 的端点发送 {"__proto__":{"isAdmin":true}},从而在全局获得管理员权限。

  2. 02

    污染原型以更改模板渲染选项并触发 RCE。

常见问题

原型链污染 是什么?

JavaScript 漏洞,攻击者通过不可信输入修改 Object.prototype,向所有对象注入属性,从而改变应用行为甚至导致 RCE。 它属于网络安全的 漏洞 分类。

原型链污染 是什么意思?

JavaScript 漏洞,攻击者通过不可信输入修改 Object.prototype,向所有对象注入属性,从而改变应用行为甚至导致 RCE。

如何防御 原型链污染?

针对 原型链污染 的防御通常结合技术控制与运营实践,详见上方完整定义。

原型链污染 还有哪些其他名称?

常见的别称包括: Object.prototype 污染, __proto__ 注入。

相关术语

另见