JavaScript库最大的软件包管理器npm背后的团队早些时候发布了安全警报,建议所有用户更新至最新版本(6.13.4),以防止“二进制植入”攻击。
Npm(Node.js程序包管理器)开发人员表示,npm命令行界面(CLI)客户端受到安全漏洞的影响-文件遍历和任意文件(覆盖)问题之间的组合。
攻击者可以利用该BUG来植入恶意二进制文件或覆盖用户计算机上的文件。
仅在通过npm CLI安装boobytrapped的npm软件包期间,才能利用此漏洞。
npm团队说:“但是,正如我们过去所看到的那样,这不是一个无法克服的障碍。”这是指过去的一些事件,攻击者在官方npm存储库中计划后门程序或诱杀程序。
没有攻击迹象
Npm开发人员一直在npm门户中扫描可能包含旨在利用此bug的漏洞利用代码的软件包,但未发现任何可疑案例。
npm开发人员说:“这并不能保证它没有被使用过,但这确实意味着它目前没在[官方npm]注册中心的已发布软件包中使用。”
npm开发人员表示将继续监视这一情况, 但是,他们不能扫描所有可能的npm软件包来源(私有注册中心,镜像,git存储库等),因此尽快更新非常重要。
除了npm之外,另一个JavaScript包管理器yarn也会受到影响。在本周早些时候,随着1.21.1的发布,这个BUG已得到修复。
A similar vulnerability got fixed in the 1.21.1, released yesterday. Keep your systems up to date! 🙂 https://t.co/DjpccTrnxJ
— Yarn (@yarnpkg) December 12, 2019
npm和yarn团队对德国安全研究员Daniel Ruf发现了此漏洞表示赞赏。可以在Ruf的博客上获得深入的技术报告。
NPM在JS生态系统中的重要性
但是,该问题对npm用户的影响比对Yarn的影响更大。Npm不仅是最大的JavaScript软件包管理应用程序,还是所有编程语言的最大软件包存储库,拥有超过350,000个库。
从浏览器到金融应用程序,从台式机到服务器,JavaScript如今无处不在。因为npm在JavaScript生态系统中具有如此重要的作用,所以它经常被广泛使用。
黑客在npm上上传了诱骗类库,希望合法项目可以使用它们。他们还会劫持已知开发人员的npm帐户,然后将恶意代码植入流行的库中。最终目标是在目标使用陷阱npm软件包构建的应用程序内部发起攻击或植入后门程序,这些应用程序以后可用于从这些应用程序的用户那里窃取数据。
过去有过很多这样的案例:
2018年7月,黑客利用恶意代码入侵了ESLint库,该恶意代码旨在窃取其他开发人员的npm凭据。
2018年5月,一名黑客试图在另一个名为getcookies的流行npm包中隐藏后门。
2017年8月,npm团队删除了38个JavaScript npm程序包,这些程序包是从其他项目中窃取环境变量而捕获的,试图收集项目敏感信息,例如密码或API密钥。
加密货币用户通常是目标
但是,尽管这些过去的攻击以开发人员为目标,但最近对npm软件包进行后门程序的尝试已针对加密货币用户。这是因为JavaScript(以及固有的npm)用于构建和支持当今许多基于Web,移动和桌面的加密货币钱包应用程序。
攻击者经常通过后门npm库或创建诱饵诱捕克隆来将其代码植入钱包,然后窃取用户资金。
例如,今年6月,npm在某个npm软件包中发现了恶意代码,该软件包旨在窃取加密货币钱包种子和其他特定于加密货币应用程序的登录密码。该库由一家加密货币初创公司使用,该公司选择在黑客可以自己利用该漏洞之前对其进行黑客入侵。
另一起类似的攻击发生在2018年11月,当时黑客使用npm包的后门打开了Copay台式机和移动钱包应用程序,以窃取其用户的比特币。
这个漏洞非常危险,足以对加密货币钱包的开发人员及其各自的用户发起此类攻击。
Ooops, all cryptocoin wallets based on Javascript are probably vulnerable to this simple wallet.dat theft vuln.
This is why you don’t use JS to secure your money. That is a really dumb idea. This is why $HUSH threw away our entire nodeJS GUI wallet.
JS has no place in wallets. https://t.co/uMbbpijGMb
— Duke Leto (@dukeleto) December 12, 2019
*编译整理:Domino
*参考来源:ZDNET