@qinyun
2018-05-07T15:28:57.000000Z
字数 1823
阅读 1654
未分类
据npm博客报道,5月2日,npm安全小组收到了一份关于软件包伪装成cookie解析库并包含恶意后门程序( backdoor)的报告,npm官方在2个小时内迅速做出了响应。调查之后,他们决定撤掉npm Registry中的三个包和第四个包的三个版本。
npm Registry中没有哪个软件包可以以一种触发后门程序的方式使用恶意模块,虽然未发布到Registry的应用程序直接使用恶意模块的能力很小,但它超出了我们的分析范围。
来自社区的最初报告显示,该软件包getcookies潜藏后门程序,而express-cookies和http-fetch-cookies依赖于getcookies,而mailparser依赖于http-fetch-cookies。
收到报告后,npm的安全团队开始对其进行诊断。诊断的目的是确定报告中提到的软件包是否真的含有恶意代码,如果有,其影响的范围将会有多大。
这里不会披露后门程序的所有信息,但我们会给出在审查过程中得到的一些重点信息。
后门程序通过解析用户提供的HTTP request.headers,寻找专门为后门程序提供三种不同命令的格式化数据。
JSON.stringify(req.headers).replace(/g([a-f0-9]{4})h((?:[a-f0-9]{2})+)i/gi, (o, p, v) => {})
我们可以在这里看到头文件被字符串化,搜索结果的格式为:gCOMMANDhDATAi
可用的控制流代码:
0xfffe-重置代码缓冲器
0xfffa-通过调用vm.runInThisContext和提供module.exports、require、req、res和next参数运行缓冲器内的代码。
default - 将远程代码加载到内存中运行。
这些控制代码允许攻击者将任意代码输入到正在运行的服务器运行。
除了后门程序代码,这些模块的其他方面也引起我们的关注:
基于反向图像搜索,发布getcookies的用户上的配置文件图像看起来像是一张股票照片。
GitHub用户链接的这些npm包是在三月份创建的。
getcookies、express-cookies和http-fetch-cookies的下载次数在几个星期前激增,这似乎与依赖于http-fetch-cookie的mailparser版本相关。
虽然mailparser已被弃用,但mailparser每周的下载量仍能达到64,000次,经过调查,我们发现已发布的依赖于http-fetch-cookies的mailparser版本并未以任何方式使用过该模块,从而消除了后门程序所带来的风险。我们推测,mailparser所需的http-fetch-cookies会在将来发动攻击或者为了增加express-cookies的下载次数而增加其合法性。
因此,mailparser用户在过去没有受到影响,只有直接需要和使用express-cookies或getcookies软件包的用户才会受到影响。
对此,npm官方采取了如下措施:
删除了dustin87用户和未发布的getCookies,express-cookies和http-fetch-cookies;
删除了依赖于http-fetch-cookies模块的3个mailparser版本;
重置mailparser作者的npm tokens以防止未经授权的发布。
早在2017年8月,npm团队就曾删除了38个JavaScript npm软件包,这些包在受感染的项目中被盗取了环境变量。而目前,npm Registry已经拥有将近70万个软件包和1000万用户,这足以吸引攻击者们的注意。
npm官方似乎也意识到了问题的严重性,他们最近也开始进行了一些行动,上个月,npm收购了^ Lift Security和Node Security Platform,并将Baldwin并入npm团队中,致力于解决npm Registry和npm应用程序的安全问题。同时,他们在最近新发布的npm 6中也加入了安全功能,如安装不受信任或易受攻击的模块时,系统会自动发出警报。
https://blog.npmjs.org/post/173526807575/reported-malicious-module-getcookies