想必各位前几天都被这个新闻刷屏了,千万 NPM 包被篡改,项目存在安全风险。本着对技术的好奇,我也去了解了一下到底它攻击了什么、如何修复这个问题、有什么办法可以解决这种攻击方式。
代码到底攻击了什么
首先罪魁祸首是这个 flatmap-stream-0.1.1.tgz
包,他被 event-stream
这个包所依赖。event-stream
包的周下载量高达 180 万。在两个月前,这个含有攻击代码的包就被加入到依赖中,但是直到本月 20 号才爆发了关于这个包的讨论。
并且这个攻击包做的很鸡贼,如果你打开 flatmap-stream
的 Github 页面,会完全发现不到任何的问题,但是在 NPM 上,这个包却被加入了攻击代码。
那么接下来就来谈谈这个包到底攻击了什么。其实它的目标是 copay
,这是一个比特币钱包软件。flatmap-stream
它会扫描你项目中的 node_modules
文件夹,如果有 copay
这个的话,他就可以取到 package.json
文件中的 description
字段,对应的