【问题标题】:Prevent all outgoing requests from NodeJS server?阻止来自 NodeJS 服务器的所有传出请求?
【发布时间】:2014-02-25 21:39:49
【问题描述】:

是否有任何现有的技术或 npm 包可以阻止来自 NodeJS 服务器的所有传出请求,只允许响应传入请求?这可以防止在安全审计中遗漏的深度依赖项中的 phone-home 类型的攻击。

【问题讨论】:

  • 嗯,听起来您的应用程序会阻止某些东西或某人在您的服务器上安装某些东西。
  • @dollarVar node.js 和 npm 有一个可以变得非常深的依赖解析(传递依赖)。没有人会安装应用程序,但有时忽略所有有效的依赖项并不容易。如果其中一个依赖项包含恶意软件,则为灾难。
  • 好的,如果你认为安装的东西正在打电话回家,监控传出流量并找到罪魁祸首,把他扔出去,永远不要再相信那个开发者的软件包.如果您找不到罪魁祸首,请吞噬http.request() 的代码,使其不再连接,但对它的依赖(尝试打电话回家)不会因错误而终止服务器。我很震惊,让我扔点东西来放松一下nodejsreactions.tumblr.com/post/64305120115/frameworks

标签: node.js security


【解决方案1】:

防火墙。

这确实是唯一的方法。请记住,没有什么可以阻止某些代码接受来自连接到它的客户端的命令。

【讨论】:

    【解决方案2】:

    看看

    第一个链接显示绑定到特定用户的防火墙规则。简单易行。为什么要使用另一个你不想信任的具有深度依赖关系的 npm 模块 ;-)

    【讨论】:

    • 抱歉,我在哪里?用户如何发起服务器的网络请求?顺便说一句,在你的第一个链接中,他困惑地写着“黑客使用 wget 将代码下载到你的服务器”......嗯?
    • @dollarVar 服务器进程最常在特定用户下运行,例如一些网络服务器为www-data。它不是人类用户,而是技术用户。现在明白我的意思了吗?
    【解决方案3】:

    如果您正在寻找纯 node.js 解决方案,您可以这样做。

    使用mockery 之类的模块,您可以限制您的javascript 模块对node.js 核心的调用。例如,如果您覆盖require('net').connect,恶意代码将更难执行某些操作。

    我不知道任何现有的解决方案,但这绝对是可能的,我真的很想看到一个。


    也就是说,解决这个问题的通用方法完全超出了 node.js 的范围:

    1. 防火墙
    2. 装备

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-24
      • 1970-01-01
      • 2016-03-15
      • 2021-10-09
      • 2021-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多