作为 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

npm 更新_npm 的安全困扰:仅有 9.27% 的 npm 开发者使用 2FA相关推荐

  1. npm更新命令更新最新版本

    npm更新版本 1.打开cmd窗口,查看当前版本 npm -v 2.更新指令 npm install -g npm 3.或者更新指定版本 npm -g install npm@8.3.1

  2. npm 更新 npm_您可以使用8 npm技巧来打动同事

    npm 更新 npm by Adir Amsalem 由Adir Amsalem 您可以使用8 npm技巧来打动同事 (8 npm Tricks You Can Use to Impress Your ...

  3. npm 更新 npm_这些NPM技巧将使您成为专业人士

    npm 更新 npm By Carl-Johan Kihl 卡尔·约翰·基尔(Carl-Johan Kihl) After using NPM for almost 8 years, I've lea ...

  4. npm更新和nodejs更新

    npm更新和nodejs更新 更新你已经安装的NPM库,这个很简单,只需要运行. npm update -g 更新Nodejs自身.一直依赖我都是下载最新版的源码,然后make install,及其繁 ...

  5. npm更新包(全局单个,项目单个,全局所有,项目生产环境,项目开发环境)

    npm-check检查npm依赖包是否有更新,错误以及不在使用的. 安装npm-check npm install -g npm-check npm全局更新包 npm-check -u -g npm更 ...

  6. 使用npm更新所有依赖包到最新版本

    本篇文章参考文章 - npm包之npm-check-updates 文章目录 npm-check-updates 背景交代 npm-check-updates   一键升级所有依赖的插件为 npm-c ...

  7. npm 更新升级(最新版本 | 指定版本)

    查看 npm 当前版本 $ npm -v 更新到最新版本 $ npm install -g npm 更新到指定版本 $ npm -g install npm@6.8.0 清理 npm 缓存数据 $ n ...

  8. 如何使用npm更新项目依赖包

    NPM(Node Package Manager,结点包管理)是一款用于管理 Node.js 依赖包的工具.通过 NPM,开发者可以快速地安装.卸载.更新等项目所需的依赖包,从而有效提高开发效率.节省 ...

  9. npm更新/替换版本

    如果npm下载一直卡顿可以考虑是否换国内镜像 npm config set registry https://registry.npm.taobao.org 更新到最新版本 npm install n ...

  10. npm 缓存_npm缓存:无名英雄

    npm 缓存 by Siddharth Kshetrapal 通过Siddharth Kshetrapal npm缓存:无名英雄 (npm cache: the unsung hero) I love ...

最新文章

  1. 2022-2028年中国装备制造产业深度分析及发展规划咨询建议报告(全卷)
  2. 抓图软件_Faststone capture8.3
  3. 安装完Arch后,要安装的软件
  4. 大概率有料的地方,大概率没有料的地方
  5. 运行mysql数据库的命令_mysql 数据库常用命令
  6. python 数据分析 书籍推荐 知乎_Python 爬取知乎 9674 个问答,揭秘最受欢迎的 98 本书!...
  7. springboot使用ImportBeanDefinitionRegistrar 动态注册bean
  8. 如何用libpng输出一个编辑后的png图片?
  9. jni数组使用(一)
  10. 【精选】Nginx负载均衡学习笔记(一)实现HTTP负载均衡和TCP负载均衡(官方和OpenResty两种负载配置)...
  11. PHP实现限制域名从而保护源代码不被拷贝
  12. 2020-12-16
  13. MATLAB(6)GUI应用介绍
  14. 2008年全国大学生数学建模D题(加附件)
  15. 在 vmware ESXi上安装mac系统虚拟机
  16. python自动生成采集规则_快速制作规则及获取规则提取器AP
  17. 软件架构与设计(十)-----架构技术
  18. input text 默认值设置
  19. 程序员哪有朝九晚六的?朝九晚六只是形式
  20. 微信小程序实时日志wx.getRealtimeLogManager——远程监控小程序日志

热门文章

  1. openjudge1.2
  2. bzoj_3529 数表
  3. ArrayList源码简单剖析 及与linkedlist vector 区别
  4. struts2远程命令执行漏洞S2-045
  5. 如何安装PANABIT?
  6. Springboot实现filter拦截token验证和跨域
  7. 【Hoxton.SR1版本】Spring Cloud Gateway之Filter详解
  8. mysql中的like查询能否用的到索引
  9. 在CAD中容易混淆的概念
  10. Google App Engine CMS系统的搭建