【问题标题】:How the alternatives are better than using curl | sudo sh替代品如何比使用 curl | 更好须藤
【发布时间】:2019-11-14 19:14:24
【问题描述】:

This 页面提到“使用 curl | sudo sh”模式:

在生产服务器上进行更改时使用此方法 [而不是]

curl -sf -L https://static.rust-lang.org/rustup.sh -o rustup.sh
less rustup.sh
chmod +x rustup.sh
sudo ./rustup.sh

我不明白为什么这比只做curl | sudo sh 更好。下载文件并先对其进行 chmod 处理有什么不同。我还没有看到任何关于 curl 的替代方案的争论 | sh 以及为什么它们更好,只有 curl 的问题 |嘘。请解释一下上面的内容如何更好(在某些细节上),或者任何其他替代方法在某些细节上更好。

例如,here 的回复都没有解释任何替代方案或为什么它们更好。与我见过的所有其他网站一样。

主要论点是,如果有人入侵了您的服务器,他们可以用其他代码替换代码。但是任何包管理器都不会发生这种情况吗?我的意思是谁每次都在npm installing 之前深入检查代码,甚至是带有它的本机C 扩展。那些可能会做同样的事情,尤其是在安装时运行之前/之后的 shell 脚本。我看不出这些比 bash 中的管道更安全。

【问题讨论】:

  • 因为使用less 可以检查脚本而不是使用sudo 盲目运行它

标签: bash shell security curl pipe


【解决方案1】:

https://www.idontplaydarts.com/images/bashmov.gif

显然可以在服务器端检测到shell-redirection,并且可以在正常检查时传递正常脚本,并且在sh重定向时传递恶意payload,所以至少你会避免这个问题,这个网站解释了很多比我能做的更好:https://www.idontplaydarts.com/2016/04/detecting-curl-pipe-bash-server-side/

【讨论】:

    【解决方案2】:

    显着的区别在于 less 的使用。报价提示您检查已下载文件的内容。这是必要的,因为代码没有签名。包管理器使用签名来信任源。检查内容很重要,因为将 Web 服务器中的内容直接通过管道传输到 shell 是不安全的。请参阅 here 如何利用它 here 了解说明。

    【讨论】:

      猜你喜欢
      • 2013-09-05
      • 2016-01-24
      • 2021-06-30
      • 1970-01-01
      • 2012-04-02
      • 1970-01-01
      • 1970-01-01
      • 2014-03-03
      • 1970-01-01
      相关资源
      最近更新 更多