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