现场实操破解开发瓶颈,「2023 百度云智大会·智算大会 开发者沙龙」不容错过! 了解详情
写点什么

ESLint 的 NPM 账户遭黑客攻击,可能窃取用户 NPM 访问令牌

  • 2018-07-16
  • 本文字数:1488 字

    阅读完需:约 5 分钟

7 月 12 日,黑客攻击了 ESLint 维护者的 NPM 帐户,并将带有病毒的 eslint-scope 和 eslint-config-eslint 软件包发布到 NPM 注册表中。带有恶意病毒的软件包在安装时,计算机会自动下载并执行 pastebin.com 代码,然后将含有 NPM 访问令牌的.npmrc 文件内容发送给攻击者。

事件的起因是由于帐户遭到入侵的维护者在其他几个网站上设置的密码和 npm 上的一样,并且没有在他们的 npm 帐户上启用双重身份验证。

对此,ESLint 团队表示:

我们对此表示遗憾,我们希望其他软件包维护者可以从我们的错误中吸取教训并提高整个 npm 生态系统的安全性。

恶意程序包包含在 eslint-scope@3.7.2 和 eslint-config-eslint@5.0.2 中,目前,它们都已经从 npm 中被移除出去了,pastebin.com 在这些包中的链接也已被删除。

npm 也已撤销在 2018-07-12 12:30 UTC 之前发出的所有访问令牌。因此,受此攻击影响的所有访问令牌都不再可用。

受影响的包

  • eslint-scope@3.7,是几个流行包的依赖项,包括一些旧版本的 eslint 和最新版本的 babel-eslint 和 webpack。
  • eslint-config-eslint@5.0 是 ESLint 团队内部使用的配置,在其他地方使用很少。

据报道,受损版本是 eslint-scope 3.7.2,是昨天发布的版本。3.7.1 和 4.0.0 是安全的。如果你昨天已完成 npm 安装,请重置你的 NPM 令牌并再次安装 npm。如果你使用了 eslint-scope 3.7.2、ESLint 4 或任何版本的 Babel-ESLint(尚未更新到 4.0.0),则会受到影响。

如果你运行自己的 npm 注册表,则应删除带有恶意病毒的软件包,它们在 npmjs.com 注册表中已经被删除了。

攻击方式: https://gist.github.com/hzoo/51cb84afdc50b14bffa6c6dc49826b3e

官方建议

  • 软件包维护者和用户应避免在多个不同的站点上重复使用相同的密码,1Password 或 LastPass 这样的密码管理器可以帮助解决这个问题。
  • 包维护者应该启用 npm 双重身份验证,可参照 npm 上的指南( https://docs.npmjs.com/getting-started/using-two-factor-authentication )。
  • 如果你使用 Lerna,则可以按此操作( https://github.com/lerna/lerna/issues/1091 )。
  • 软件包维护者应审核并限制有权在 npm 上发布的人数。
  • 软件包维护者应注意使用任何自动合并依赖项的升级服务。
  • 应用程序开发人员应使用 lockfile(package-lock.json 或 yarn.lock)来阻止自动安装新软件包。

时间线

  • 事件发生之前:攻击者可能在第三方攻击中发现维护者重复使用的电子邮件和密码,并使用它们登录维护者的 npm 帐户。
  • 2018 年 7 月 12 日凌晨:攻击者在维护者的 npm 帐户中生成了一个身份验证令牌。
  • 2018-07-12 9:49 UTC:攻击者使用生成的身份验证令牌发布 eslint-config-eslint@5.0.2,其中包含泄露本地计算机.npmrc 身份验证令牌的恶意脚本 postinstall。
  • 2018-07-12 10:25 UTC:攻击者删除 eslint-config-eslint@5.0.2。
  • 2018-07-12 10:40 UTC:攻击者发布 eslint-scope@3.7.2,其中包含相同的恶意 postinstall 脚本。
  • 2018-07-12 11:17 UTC:用户发布了 eslint / eslint-scope#39( https://github.com/eslint/eslint-scope/issues/39 ),通知 ESLint 团队出现此问题。
  • 2018-07-12 12:27 UTC:包含恶意代码的 pastebin.com 链接被删除。
  • 2018-07-12 12:37 UTC:npm 团队在与 ESLint 维护人员联系后将 eslint-scope@3.7.2 删除。
  • 2018-07-12 17:41 UTC:ESLint 团队发布 eslint-scope@3.7.3 和 eslint-scope@3.7.1 的代码,以便缓存可以获取新版本。
  • 2018-07-12 18:42 UTC:npm 撤销了在 2018-07-12 12:30 UTC 之前生成的所有访问令牌。

相关链接

原始报告: https://github.com/eslint/eslint-scope/issues/39

npm 报告: https://status.npmjs.org/incidents/dn7c1fgrr7ng

2018-07-16 06:311029
用户头像

发布了 83 篇内容, 共 46.3 次阅读, 收获喜欢 187 次。

关注

评论

发布
暂无评论
发现更多内容

【Spring 工厂】工厂设计模式、第一个Spring程序细节分析、整合日志框架

Java 程序员 后端

【并发编程系列3】volatile内存屏障及实现原理分析(JMM和MESI)

Java 程序员 后端

【程序人生】为什么Java开发人员在简历上不敢轻易写精通Java

Java 程序员 后端

【死磕JVM】什么是JVM调优?

Java 程序员 后端

【设计模式系列14】组合模式及其在JDK和MyBatis源码中的运用

Java 程序员 后端

做云原生时代标准化工具,实现高效云上研发工作流

CODING DevOps

云原生 研发管理工具 CODING

Java程序媛的秋招历程(附字节,阿里,百度,网易,美团等面经)

Java spring 程序员 面试 大厂

【源码分析设计模式 9】SpringIOC中的模板方法模式

Java 程序员 后端

【玩转Linux】史上最详细的Linux命令大全和线上问题排查手册

Java 程序员 后端

【程序人生】为什么Java开发人员在简历上不敢轻易写精通Java(1)

Java 程序员 后端

【SpringBoot搭建个人博客】- 后台登录(四)

Java 程序员 后端

【springcloud合集】02:微服务架构理论基础

Java 程序员 后端

【并发编程】Thread类的详细介绍

Java 程序员 后端

用APaaS平台落地高校闲置资产调剂业务

明道云

【Spring 工厂】注入详解 — Set注入(JDK内置类型

Java 程序员 后端

技术干货 | Flutter在线编程实践总结

有道技术团队

flutter 大前端 #技术干货#

基于etcd实现大规模服务治理应用实战

百度Geek说

百度 架构 后端 etcd 服务治理

【数据结构 Java 版】玩转顺序表

Java 程序员 后端

【消息队列最佳实践】消息恰好被消费一次(1)

Java 程序员 后端

音频 AI 算法在 RTC 中的实践

网易云信

人工智能 算法 音视频

外包学生管理系统详细架构设计

stars

架构训练营

【Spring Cloud 12】分布式架构下的高可用设计与可伸缩设计

Java 程序员 后端

【增强】(注解)SSM之配置多数据源

Java 程序员 后端

【备战秋招冲击大厂】Java面试题系列—Java集合

Java 程序员 后端

【springcloud】eureka服务治理入门

Java 程序员 后端

【数据结构与算法 11】常见的7种排序算法

Java 程序员 后端

【消息队列最佳实践】消息恰好被消费一次

Java 程序员 后端

【源码分析设计模式 10】SpringMVC中的适配器模式

Java 程序员 后端

【备战秋招冲击大厂】Java面试题系列—数据库

Java 程序员 后端

【大厂技术内幕】字节跳动原来是这么做数据迁移的!

Java 程序员 后端

【数据库实验】《小型MIS的开发》

Java 程序员 后端

ESLint的NPM账户遭黑客攻击,可能窃取用户NPM访问令牌_DevOps & 平台工程_覃云_InfoQ精选文章