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

阅读数:7521 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 报告了这个漏洞,并提出了修复工具(拉取请求12),这些修复程序将包含在下一版本的 Lodash 库中,预计将很快发布。

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

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

收藏

评论

微博

发表评论

注册/登录 InfoQ 发表评论