Lodash 库爆出严重安全漏洞,波及 400 万 + 项目

阅读数:9415 2019 年 7 月 10 日

安全漏洞的问题一直是大家关心的问题,仿佛是巧合,在云视频会议服务提供商 Zoom 刚刚被爆出存在”零日漏洞“威胁 Mac 用户隐私和信息安全的同时,开发者熟知的 npm 库 Lodash 也被爆出存在高严重性安全漏洞——原型污染漏洞,该漏洞将威胁超过 400 万个项目的服务安全性。

Lodash 是一个 JavaScript 库,包含简化字符串、数字、数组、函数和对象编程的工具,可以帮助程序员更有效地编写和维护 JavaScript 代码。昨天,Lodash 被爆出一个高严重性安全漏洞——”原型污染“漏洞。

漏洞爆发,波及超过 400 万项目

Lodash 是一款流行的 npm 库,GitHub 上使用它的项目就多于 400 万。昨天,开源安全平台 Snyk 的开发者 Liran Tal 发现了一个高严重性的原型污染漏洞,影响所有版本的 Lodash,包括最新版本 4.17.11。该漏洞对使用 Lodash 的用户群和服务安全性造成极大威胁。

该漏洞被指定为 CVE-2019-10744 ,可能会影响大量的前端项目。因为 Lodash 的普及率非常高,每月的下载量超过 8000 万次。

原型污染漏洞的危害

原型污染漏洞使攻击者能够修改 Web 应用程序的 JavaScript 对象原型,这类似于一个可用于根据预定义结构存储多个值的变量。

这些结构和默认值被称为原型,可在未设置任何值时阻止应用程序对其进行散列。

但是,如果攻击者设法将属性注入现有的 JavaScript 对象原型中,就可以操纵这些属性来覆盖或污染应用程序。这样很可能会影响应用程序通过原型链处理 JavaScript 对象的过程,从而导致拒绝服务或远程代码执行出错。

根据 Tal 的说法,通过构造函数重载的方式,Lodash 库中的函数“defaultsDeep”很有可能会被欺骗添加或修改 Object.prototype 的属性,最终可能导致 Web 应用程序崩溃或改变其行为,具体取决于受影响的用例。

虽然”原型污染“漏洞影响非常严重,但是攻击者想要利用它并没有那么容易,他们需要深入了解每个 Web 应用程序的工作原理。

并非第一次爆出原型污染漏洞

早在去年 1 月 30 日, holyvier 就向 Node.js 第三方模块提交了一份报告。该报告指出Lodash 受到原型污染攻击,攻击者可以添加或修改所有对象上现有的属性。Lodash 的创建者 John-David Dalton 随后立即对此漏洞做了修复更新。

之后,Maximilian Berkmann 也在 GitHub 上提交了关于”原型污染“的 issue,他指出 Lodash 4.17.5 之前的版本容易受到原型污染。易受攻击的函数是 defaultsDeep、merge 和 mergeWith,它们允许恶意用户通过“proto”修改对象的原型,从而导致所有对象上存在的现有属性被添加或修改。Lodash 的创建者 John-David Dalton 及时回复表示:”在 Lodash 更新到 4.17.5 或更高版本之后,这个问题可以得到解决“。

Lodash 原型污染漏洞报告: https://hackerone.com/reports/310443
GitHub 原型污染问题的讨论: https://github.com/lodash/lodash/issues/3882

漏洞修复计划

研究负责人向 Lodash 的维护人员 John Dalton 报告了这个漏洞,并提出了修复工具(拉取请求 1 2 ),这些修复程序将包含在下一版本的 Lodash 库中,预计将很快发布。

如果你的项目也在使用 Lodash,建议你在官方补丁发布后立即更新 Lodash 库,或手动修补程序。

英文原文: https://thehackernews.com/2019/07/lodash-prototype-pollution.html

收藏

评论

微博

发表评论

注册/登录 InfoQ 发表评论