首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

npm的安全困扰:仅有9.27%的npm开发者使用2FA

作为JavaScript生态系统中最大的包管理器,npm正遭遇安全困扰。其开发人员中,仅有9.27%的人使用2FA,这意味着绝大多数npm开发人员的账户处于不安全状态。一旦黑客窃取开发人员账户,后果相当严重。

近日,npm安全副总裁Adam Baldwin发推文称,npm JavaScript库的所有维护者中,只有9.27%的人使用2FA(双因素认证)来保护其账户。

这一数字竟如此之低!

Adam Baldwin表示,开发人员账户安全已经成为npm安全团队关注的主要问题。

从安全角度考虑,npm安全团队希望2020年,有更多的npm开发者使用2FA。

2FA,即双因素认证,它是一种相对更安全的认证方法。与传统单一的密码认证不同,2FA使用两种不同的元素,合并在一起,来确认使用者的身份。比如,我们常用的手机短信验证码验证就是2FA的一种形式。

NPM,全称是Node Package Manager。它不仅是JavaScript生态系统中最大的JavaScript包管理器,而且还是所有编程语言中最大的包存储库,拥有超过350000个索引库

此外,它每个星期大约有30亿次的下载量,包含超过600000个包(package)。

而这种“地位”和影响力,也让npm成为供应链攻击的主要目标。黑客会入侵开发人员的npm账户,从而在其库中插入恶意代码。

最近几年,这类事件层出不穷:

  1. 2019年7月,有开发者在purescript npm 安装程序中发现一些恶意代码。原来是有攻击者获取了@shinnn(purescript npm 安装程序原始作者)的npm账户,随后在purescript npm安装程序中插入恶意代码。
  2. 2019年6月,黑客向 npm 发布一个“useful”的包(electron-native-notify),等到它被目标(某应用程序)使用后更新包内容,加入恶意代码。而某应用程序又是 Agama 加密货币钱包的一部分。
  3. 2018年11月,npm 下载量超过 200 万的 package 被注入了恶意代码,黑客利用该恶意代码访问热门 JavaScript 库,目标是 copay(开源比特币钱包)及其衍生产品的用户,以此窃取用户的数字货币。
  4. 2018年7月,黑客利用恶意代码破坏ESLint库。该恶意代码被设计用来窃取其他开发人员的npm证书。
  5. 2018年5月,黑客试图在名为getcookies的流行npm包中隐藏后门。

一份发表的学术研究表明,大多数npm软件包“彼此交织在一起”,并且入侵20个备受瞩目的开发人员账户,就可能使黑客植入被整个npm生态系统一半使用的恶意代码。

因此,确保npm库所有者的账户安全应该是未来的重中之重。

或许,Mozilla的做法提供了一种不错的方式。Mozilla最近宣布,从2020年1月起,所有Firefox浏览器扩展程序的开发人员都必须为其账户启用2FA,才能更新其扩展程序。

此前,InfoQ在《npm安全事故频频发生,程序员都绝望了》的文章中报道过,有一位名叫Sebastian K的网友认为 npm(客户端和registry)是一个有缺陷的系统,需要完全替换,新系统应具有这些功能:

  • 没有 unscoped 的包;
  • 作用域是1 对 1绑定到单个用户或组织;
  • 发布包必须要双因子验证,包必须通过 GPG 签名;
  • 除registry的维护人员外,任何人都不允许取消发布包;
  • 不允许在最终版本中使用模糊依赖项版本,我曾多次目睹在新克隆之后,运行 npm install 时修改项目的包锁定文件,下载了比锁定文件中指定的更高版本的可传递依赖项。

此外,npm安全副总裁Adam Baldwin还披露了一些其他数据

  • 2019年发布的安全公告:595
  • npm数据库的安全警报总数:1285
  • 错误吊销到the registry或GitHub的npm令牌数:737
  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/qVAUaYphHzxEVloFLt7s
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券