这是关于npm包中的原型污染安全漏洞' hoek'这是firebase@3.x.x的子依赖项
Hackone Url:https://hackerone.com/reports/310439
Snyk Url:https://snyk.io/test/npm/firebase/3.9.0?severity=high&severity=medium&severity=low
虽然firebase团队已经在firebase@4.x.x包中的pr:https://github.com/firebase/firebase-js-sdk/issues/515中修复了它
我想了解这是否真的是对firebase的安全威胁,因为依赖于firebase@3.xx的人不能直接升级到@ 4.xx,因为它&#39 ;如果他们使用不支持firebase @ 4的angularfire@2.xx,那就是一个突破性的变化。 未决问题:https://github.com/firebase/angularfire/issues/934
根据上述hackone网址,问题的影响是:
这表明攻击者可以向服务器上的所有现有对象添加属性。通过替换" toString"可以使用附加属性来更改执行代码流或在每个后续请求中导致错误。或" valueOf"。
此漏洞至少可以获得拒绝服务,因为所有库都允许该属性" toString"和" valueOf"被" String"取代。这会破坏express模块并强制服务器崩溃或向每个后续请求返回500.
可以制作更复杂的有效负载以获得远程代码执行(参见#309391中的PoC)。
通过阅读本文,我了解直接/间接使用hoek软件包的应用程序只有在服务器上运行时才容易受到攻击。
因为使用firebase@3.x.x的使用angularfire@2.x.x的应用程序仅提供给客户端&没有在服务器上运行。
它仍然很脆弱吗?
答案 0 :(得分:0)
更新!
我刚刚发布了一个npm程序包,以解决无法更新易受攻击程序包的修补版本的人的原型污染问题。您可以安装following package:
yarn add no-pollution
只需在您的JavaScript项目的入口点require
。
require('no-pollution');
针对导致原型污染的易受攻击的方法的扩展,合并,克隆类型进行了测试。但是,目前尚无法解决易受攻击的路径分配方法,但这对于您的Firebase程序包应该足够了。
旧答案
确实,原型污染漏洞在服务器端比在客户端端具有更大的风险。由于可以很容易地利用它来进行拒绝服务(DoS)攻击或远程代码执行(RCE)攻击。
通常,所有业务逻辑都发生在后端,并且仅可用信息显示在前端。但这并不能改变以下事实:有人会污染您对象的原型,并且可以在您的应用程序上执行缩进代码执行。
这在您的应用程序上引起了严重的漏洞,这也将使攻击者可以同时执行DoS或RCE,但是它受到一定程度的难度和客户端可以访问的资源级别的限制。但这并不能改变您的应用程序存在安全漏洞的事实,可以利用该漏洞造成严重破坏。在Snyk
上了解有关此内容的更多信息重新编写Firebase 4的整个代码库可能是一个困难且耗时的过程,但是除非有角度的火灾决定为Firebase 4提供支持,否则最终将需要做这件事。