通过 HTTP URL 执行代码是否不安全?

Is it insecure to execute code via an HTTP URL?

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

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

然而,URL - http://bioconductor.org/biocLite.R 本质上只是一个放置在 Web 服务器上的文件,source() 似乎被用来直接下载它。在这个例子中似乎没有任何地方 user-input 所以不,我不会标记为不安全;不过你的比喻确实是对的。

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

是的,你是对的。

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

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