【问题标题】:Is it insecure to execute code via an HTTP URL?通过 HTTP URL 执行代码是否不安全?
【发布时间】:2015-05-27 15:16:20
【问题描述】:

我怀疑Bioconductor的安装机制。看起来它只是在执行(通过source())来自 HTTP URL 的 R 脚本。这不是一种容易受到中间人攻击的不安全方法吗?我认为他们应该使用 HTTPS。如果不是,有人可以解释为什么目前的方法是可以接受的吗?

【问题讨论】:

  • 虽然我的具体问题是关于 Bioconductor,但我很想听听关于何时/是否可以接受 HTTP 来运行远程脚本的一般性回答,而不仅仅是在 R 中。

标签: r security bioinformatics bioconductor man-in-the-middle


【解决方案1】:

是的,你是对的。

通过明文连接加载可执行代码易受 MITM 攻击。

除非通过 HTTPS 加载,其中 SSL/TLS 可用于加密和验证连接,或者除非代码是 signed 并在客户端验证,否则 MITM 攻击者可以更改输入流并导致任意代码在您的系统上执行。

【讨论】:

    【解决方案2】:

    允许代码通过 HTTP GET 请求执行本质上意味着您允许应用程序直接处理用户输入,从而直接影响应用程序的行为。虽然这通常是开发人员想要的(比如从数据库中查询特定信息),但它可能会以您已经提到的方式被利用(例如 MITM)。这通常(但我并没有以任何方式直接指代 Bioconductor)是一个坏主意,因为它会使系统面临可能的 XSS/(B)SQLi 攻击等。

    然而,URL - http://bioconductor.org/biocLite.R 本质上只是放置在 Web 服务器上的一个文件,从看起来 source() 看来是用于直接下载它。在此示例中似乎没有任何用户输入,所以不,我不会将其标记为不安全;不过你的比喻确实是对的。

    注意:这只是指 GET 请求 - 例如:http://example.com/artists/artist.php?id=1。这种不安全性可以在许多 HTTP 请求中被利用,例如 Host Header 攻击,但是一般概念是相同的。应用程序永远不应该以任何方式直接处理任何用户输入。

    【讨论】:

    • source() 不只是下载文件,它还执行文件的内容。这就是困扰我的部分。
    • @WillTownes - 那么是的,这可能也是一个让我担心的问题。我建议深入研究source() 的工作原理,因为函数本身可能存在我们可能错过的安全限制。当然,我对 R 的工作原理一无所知。
    猜你喜欢
    • 2013-08-23
    • 2016-12-23
    • 1970-01-01
    • 2019-09-14
    • 1970-01-01
    • 2011-08-23
    • 2021-04-12
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多