看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!
NPM 团队移除了一个伪装成Cookie 解析器的包。这个包里包含一个恶意后门。还有三个依赖它的包也同时被移除了。这个后门让攻击者可以向运行中的服务器注入任意代码并执行。
NPM 报告确认,getcookies
包中包含恶意代码,它会分析 HTTP 头,查找类似gCOMMANDhDATAi
这样的数据格式。恶意代码里有三个不同的命令:
0xfffe
重置代码缓冲区0xfffa
执行缓冲区中的代码,这是通过执行[vm.runInThisContext][2]
实现的default
把远程代码加载到内存并执行
除了getcookies
之外,还有三个包也被从注册中心里移除了:express-cookies
、http-fetch-cookies
以及虽然不建议使用但仍然非常流行的mailparser
。
据 NPM 员工介绍:
发布到 npm 注册中心并且使用恶意模块的包,它们的使用方式都不会触发后门。
不过,这仍然保留了这种可能性,使用恶意包的外部应用程序面临着被利用的风险,或者已经被利用了。
颇让人不解的是,每周仍然有大约 64000 下载量的mailparser
包并没有以任何方式使用恶意模块。据 NPM 安全团队介绍,这可以解释成为将来能够完成攻击所做的准备,或者说是为了提高get-cookies
和http-fetch-cookies
的知名度,诱导开发人员使用它们。
这份声明在 Node 开发人员中引发了强烈的反响。虽然人们普遍认为,这类问题不是NPM 特有的,但是,有若干评论者指出,NPM 的一些特性让这样的问题更可能发生。尤其是,NPM 包往往较小,而且聚焦于一组缩减的特性,导致一个应用程序要依赖大量的外部模块,经常是成百上千。要审计所有的依赖项,确保它们都合法,这变得异常困难。此外,NPM 允许开发人员通过最小版本表示依赖,如 mailparser@^2.2.0
,这意味着,任何更高的版本,只要没有改变主版本号,就被视为可以兼容,就可以运行 npm install
进行安装。这进一步增加了依赖审计的难度。
包mailparser
已经不再维护了,它已经几个月没有更新了。现在还不清楚,像mailparser
这样成功的包为什么会有三个新版本包含一个不使用的依赖。事实上,对于发布在 NPM 上包含恶意代码的版本 2.2.1、2.2.2 和 2.2.3, mailparser
GitHub 库中没有任何说明这一变化的信息。因此,不知道是mailparser
的作者被诱导添加了恶意依赖,还是某个未知的 NPM 漏洞被利用,可以在他不知情的情况下发布新版本。InfoQ 将继续追踪报道,及时披露最新细节。
查看英文原文: Package Containing Malicious Backdoor Makes its Way Into NPM
评论