【问题标题】:What are the risks of installing (running) foreign npm modules? Can we limit the risks?安装(运行)外部 npm 模块有哪些风险?我们可以限制风险吗?
【发布时间】:2020-01-21 17:57:03
【问题描述】:

根据this post,恶意 npm 模块是真实存在的。似乎唯一真正的方法是“了解您正在安装的内容”。

当我npm installrequire()一个模块时,

  • 它可以访问我的整个文件系统吗?
  • 我可以限制文件系统对特定目录的访问吗?使用package.json 设置,或者使用操作系统的本机用户/组文件权限系统?
  • 它可以执行任何命令吗?下载什么、执行什么、上传什么?
  • 我可以限制这个吗?

【问题讨论】:

    标签: node.js security npm permissions


    【解决方案1】:

    npm 包(与任何库/软件一样)可以完全访问您放入的任何环境。如果您可以在 Node.js 中执行此操作,则 npm 包可以执行此操作。 作为包管理器,npm 可以有效地将文件放在任何地方(例如恶意可执行文件),并且在调用函数时,它可以执行任何编程的操作(例如执行恶意软件)。

    软件审计是真实存在的,各个开源组织都在大力推动,以帮助确保软件没有任何严重缺陷(有意或无意)。在安装之前,找到 package.json 文件并阅读它,如果某些东西看起来可疑,您可能需要更深入地挖掘(向开发人员或社区成员寻求帮助)。如果软件是开源的,请寻找审核(或自己审核)。

    这篇 Medium 文章中列出了一些建议:https://medium.com/@nodepractices/were-under-attack-23-node-js-security-best-practices-e33c146cb87d

    建议:尝试成为一名白帽黑客。检查该技术并尝试用您编写的一些恶意代码感染您自己的机器,然后看看是否有办法避免它。

    来源: https://docs.npmjs.com/files/package.json
    https://docs.npmjs.com/cli/install

    【讨论】:

      【解决方案2】:

      正如您所说,防止这种情况的唯一方法是“注意您正在安装的内容”。

      简答:当你需要一个模块时,它就成为你的代码

      • 它可以访问我的整个文件系统吗?:可以! fs-extrachokidar 需要原生 fs 模块

      • 我可以限制文件系统对特定目录的访问吗?:不,你不能!正如我上面所说,一旦你需要它,它就会成为你的代码。您不能或不想限制对自己的访问...

      • 它可以执行任何命令吗? : 是的,它可以 ! shelljs可以的

      • 我可以限制这个吗? :是的,你可以:不要偷懒!不要为设置环境、设置 CORS 设置等小任务安装任何模块......!尝试使用原生 Nodejs 的元素自己实现。

      的基本模块通常经过全球数百万高级开发人员的审核和使用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-09
        • 2016-08-21
        • 1970-01-01
        • 2011-11-27
        • 2021-01-27
        相关资源
        最近更新 更多