NodeBB原型污染漏洞可能导致账户接管

NodeBB是一个用于创建论坛应用程序的Node.js平台,它修补了一个原型污染漏洞,该漏洞可能允许攻击者冒充其他用户并接管管理员帐户。该漏洞是由于JavaScript在运行时更改对象原型方面的灵活性处理不当造成的。

NodeBB使用Socket.IO,这是一个JavaScript库,它允许Node.js应用程序使用Web套接字,以实现客户端和服务器之间的异步双向通信以及更流畅的聊天体验。

但是,NodeBB开发人员使用的对象定义可能允许攻击者滥用Socket.IO的对象。NodeBB的维护者说,他们只发布了有关该错误的有限信息,以便给开发人员一些时间来更新他们的应用程序。

然而,其中一位维护者Barış Uşaklı确实证实“这个问题影响很大,因为它允许攻击者冒充其他用户或以管理员身份进行Socket.IO调用”。

在默认的NodeBB安装中,该漏洞可能允许未经身份验证的用户获得对应用程序的管理员访问权限。如果实例启用了带有额外检查的插件,例如双因素身份验证,那么影响将更加有限,并且需要对应用程序进行身份验证访问。

Uşaklı表示,没有证据表明该漏洞已在野外被利用。维护人员在报告问题的同一天修补了该问题,并于第二天在其托管客户端上修补了该问题。

当精心设计的负载(通常是用户提供的输入)可以修改JavaScript对象的原型并改变应用程序的行为时,JavaScript应用程序很容易出现原型污染。

但是,NodeBB错误不同于此类错误中的典型缺陷。

“这不是您通常理解的原型污染漏洞,”发现并报告该漏洞的安全研究员斯蒂芬·布拉德肖(Stephen Bradshaw)说。

“在这种情况下,访问负责将通过Socket.IO接口运行的白名单函数的对象原型的访问权可能会被滥用,从而以可能提升特权的方式修改应用程序的环境。”

根据与NodeBB维护者的协议,Bradshaw已将他的文章和完整利用细节的发布推迟到1月。

该错误的补丁是一个简单的单行修改,它改变了用于声明其中一个对象的方法。

“从这个问题和修复中得出的主要结论是,如果要通过最终提供的值访问该对象的属性,则使用普通JavaScript对象(即const someObj = {}; )是个坏主意用户,”Uşaklı说。

一线希望是修补NodeBB实例相当容易。如果开发人员无法将他们的应用程序升级到最新版本,他们可以挑选补丁提交并只接收安全修复。

Bradshaw说,安全评估人员和开发人员在编码和审查应用程序时“了解编程语言的‘怪异’特性”非常重要。

“JavaScript中的原型继承就是一个典型的例子——这是一个特定于语言的问题,可能会导致漏洞,因此编写JavaScript的开发人员尤其需要注意这一点,”Bradshaw说。

发表评论

评论已关闭。

相关文章