鉴于NodeJS的流行程度以及NPM如何运作......确保您永远不会安装不安全/恶意软件包的最佳方法是什么?对我而言,这似乎是架构中一个巨大的漏洞,完全依赖于用户评论,对StackOverflow等网站的评论,个人博客等等。我做了一些搜索,我似乎找到的只是一个“计划”一旦提出投诉,说用户违反了行为准则,就会删除违规用户。
以下是发布包的方式...... https://docs.npmjs.com/getting-started/publishing-npm-packages
所以我开始思考某人可以做些什么样的坏事...也许创建一个非常有用的软件包,然后特洛伊木马它依赖于一个做坏事的软件包。即使我(作为安装程序)审查了我个人安装的软件包,我也许永远不会发现有问题的代码,特别是如果代码被混淆了,就像这样:
eval((new Buffer('cmVxdWlyZSgiZnMiKS5jcmVhdGVSZWFkU3RyZWFtKCIvL2V0Yy9wYXNzd2QiKS5waXBlKHByb2Nlc3Muc3Rkb3V0KTs=', 'base64').toString()));
此代码简单地将/ etc / passwd文件与您的标准输出相呼应。而已。通过运行这个证明它:
new Buffer('cmVxdWlyZSgiZnMiKS5jcmVhdGVSZWFkU3RyZWFtKCIvL2V0Yy9wYXNzd2QiKS5waXBlKHByb2Nlc3Muc3Rkb3V0KTs=', 'base64').toString()
那些抓住了eval的人,对你有好处!
,我可以将这么多不同的方式包装在一起而没有eval,所以这只是一个例子。所以,所有这些都说......社区在处理这种可能性方面做了什么?我在哪里可以找到有关如何保护系统安全的更多信息?
答案 0 :(得分:3)
确保您从npm安装的软件包是安全的可能解决方案之一是使用由Node Security(nodesecurity.io)团队提供的nsp:命令行实用程序。
$ npm install -g nsp
然后,在项目的目录中(package.json所在的位置):
$ nsp check
将生成包含可能漏洞的报告,以下是示例: