为什么二进制(ELF)SUID可执行文件也允许READ访问是常见的



作为最近"rowhammer"利用概念验证的一部分,使用了read-suid-exec工具"ping"来创建更精细的概念验证。

因此,我的问题是,为什么各种发行版都准备suid(尤其是root)可执行文件作为可读和可执行文件?

我的推测包括:

  1. 方便使用"ldd"
  2. 允许tripwire或包更新检查软件以非root身份运行
  3. 这并不重要,因为大多数发行版都是公共的,ELF二进制文件可以由任何人获得(安装到VM中等)
  4. selinux可以用来使其不相关
  5. 懒惰的开发人员

对于(3),隐藏公共发行版的二进制文件只提供了一块安全的遮羞布,而(5)几乎是在骂人。

不是一个完整的答案,但我发现如果setuid根程序存储在NFS服务器上,我需要使它们可读。

让我再说一遍:在本地文件系统上,chmod 4711对于setuid根程序来说已经足够了,但在NFS上,所需的模式是4755

它是"无关紧要"(3)和"懒惰的开发人员"(5)的混合体。

关闭不必要的权限(如对SUID可执行文件的读取访问)是一种很好的做法,因为这通常可以减少攻击面,但在许多情况下并没有太大区别。

正如你在(3)中所说,隐藏程序数据并不能阻止攻击者搜索ROP小工具等,因为这些数据通常在二进制文件的公开发行版中可见。

请注意,这并不适用于ProjectZero博客文章中描述的基于rowhammer的漏洞利用。为此,该漏洞利用程序不想读取SUID可执行文件中的数据,它只想使用/proc/self/pagemap来了解哪些物理地址包含可执行文件的数据。

然而,正如博客文章所说,如果攻击者不能打开()SUID可执行文件,它可以打开()它使用的库,如/lib64/ld-linux-x86-64.so.2,并对此进行攻击。因此,限制对SUID可执行文件的读取权限没有帮助。我们不能删除这些库的读取权限,否则它们将无法使用。

相关内容

  • 没有找到相关文章

最新更新