推出 Shellshock 时,**当时**有多糟糕?

信息安全 炮击 重击 历史的
2021-09-03 02:17:35

shellshock 错误,以及允许从环境导入函数的底层特性(我称之为 FIE),至少从 1993 年 CGI 兴起之前就已经存在于 bash 中。

那时,Unix/Linux/GNU 环境的其余部分非常不同。

所以在历史上的那个时候:

  • 那时是否允许使用 setuid 脚本?
  • 当时 setuid 脚本是默认配置的一部分吗?
  • 那时setuid 二进制文件是否经常使用 system(3)and调用?popen(3)
    • 常见用途是扩展 shell glob(less似乎为此使用它,但不是 setuid)和执行外部命令
  • 那个时候su-ing时继承环境很普遍吗?
  • 环境可以通过诸如此类的东西传播rlogin吗?(我认为 telnetDISPLAY默认传播)。
  • 是否有任何功能会使当时的 FIE 错误更成问题?

那么这个已经隐藏了二十多年的特权提升和代码执行错误在最初被引入时有多严重?

1个回答

多么糟糕?不是特别的。

引入该漏洞时,不存在任何常见的远程攻击向量:解析漏洞的“shellshock”比 CGI 和 DHCP 早了大约一年,比 SSH 早了两到三年。远程访问程序(例如telnetrsh不具备 SSH 所具备的命令限制能力),因此尽管可能会针对它们进行“shellshock”攻击,但它不会让攻击者获得他们仅通过登录无法获得的任何东西一般。

至于本地提权攻击,据我所知,Linux 从来不支持 setuid 脚本。没有很多 setuid 程序:当时,它们应该是现在的“util-linux”和“shadow”包。这些程序是 POSIX 规范的一部分,在过去的 20 年里它们的基本操作没有改变。其中只有su, mount, 和umount是 setuid 并调用其他程序,而且都是通过exec*(). su如果在没有 的情况下调用时确实并且仍然确实通过了环境-,但这并不是一个容易使用的攻击向量:您需要让目标在您控制的环境中执行它,并且调用它su -(它清理环境)是第二个对许多系统管理员来说很自然。

大通配符是其他类似 *nix 的系统。GNU 用户空间是低质量供应商程序的流行替代品,一些*nix 类操作系统支持 setuid 脚本。