1. 首页

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

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

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

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

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

这一数字竟如此之低!

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

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

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

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

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

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

而这种“地位”和影响力,也让 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

作者:万佳
链接:https://www.infoq.cn/article/qVAUaYphHzxEVloFLt7s

看完两件小事

如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:

  1. 关注我们的 GitHub 博客,让我们成为长期关系
  2. 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
  3. 关注公众号 「画漫画的程序员」,公众号后台回复「资源」 免费领取我精心整理的前端进阶资源教程

JS中文网是中国领先的新一代开发者社区和专业的技术媒体,一个帮助开发者成长的社区,目前已经覆盖和服务了超过 300 万开发者,你每天都可以在这里找到技术世界的头条内容。欢迎热爱技术的你一起加入交流与学习,JS中文网的使命是帮助开发者用代码改变世界

本文著作权归作者所有,如若转载,请注明出处

转载请注明:文章转载自「 Js中文网 · 前端进阶资源教程 」https://www.javascriptc.com

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

链接:https://www.javascriptc.com/3711.html

« 一个输入框你要做一周?
Wasmtime:终于可以在.NET 应用中运行 WebAssembly 了»
Flutter 中文教程资源

相关推荐

QR code