挂载 /tmp noexec 有多大用处?

Phi*_*ler 46 security linux mount tmp noexec

许多人(包括Securing Debian Manual)建议/tmp使用一noexec,nodev,nosuid组选项进行安装。这通常表现为“深度防御”策略的一个要素,通过防止让某人写入文件的攻击升级,或防止具有合法帐户但没有其他可写空间的用户的攻击升级。

然而,随着时间的推移,我遇到noexec了一些毫无用处的论点(最突出的是由 Debian/Ubuntu 开发人员 Colin Watson 提出的),原因有以下几个:

  1. 用户可以/lib/ld-linux.so <binary>尝试运行以获得相同的效果。
  2. 用户仍然可以在无法直接运行的脚本上运行系统提供的解释器

鉴于这些论点,对更多配置的潜在需求(例如,debconf像一个可执行的临时目录)以及潜在的便利性损失,这是一项值得的安全措施吗?您还知道哪些其他漏洞可以实现规避?

Phi*_*ler 34

以下是我到目前为止提出的实用程序的论据:

现代内核修复了这个/lib/ld-linux.so漏洞,使其无法从noexec文件系统映射可执行页面。

口译员的观点当然仍然是一个问题,尽管我认为这比人们可能声称的要少。我能想到的理由是,有许多特权提升漏洞依赖于进行特定格式错误的系统调用。如果没有攻击者提供二进制文件,进行邪恶的系统调用就会困难得多。此外,脚本解释器应该是无特权的(我知道历史上有时并非如此,例如使用 suid perl),因此需要它们自己的漏洞才能在攻击中发挥作用。显然,至少可以使用 Python 来运行一些漏洞利用。

许多“罐装”漏洞可能会尝试在写入和运行可执行文件/tmp,所以noexec减少跌至脚本攻击的可能性(在漏洞披露和补丁安装的窗口说)。

因此,/tmp使用noexec.

正如描述的Debian的bug跟踪系统,设置APT::ExtractTemplates::TempDirapt.conf一个目录下,是不是noexec和访问根就避免了debconf的关注。

  • 但是,我听说如果 /tmp 不可执行,应用程序偶尔会中断。不过,我还没有真正看到它发生。 (2认同)
  • 是的,noexec 是一个非常好的安全附加层,我还没有看到因它而造成严重破坏的事情。软件包安装是唯一的事情,甚至可以按照此处的答案进行解决。作为我的解决方案,我有一个这样的别名: alias update="mount -o exec,remount /tmp &amp;&amp; apt-get update &amp;&amp; apt-get upgrade &amp;&amp; mount -o noexec,remount /tmp" (2认同)

kar*_*ore 8

将以下内容添加到 /etc/apt.conf 或 /etc/apt/apt.conf.d/50remount

DPkg::Pre-Install-Pkgs {"mount -o remount,exec /tmp";};
DPkg::Post-Invoke {"mount -o remount /tmp";};
Run Code Online (Sandbox Code Playgroud)

  • 我已经用 `/bin/mount` 替换了 `mount`,以防 PATH 被修改。你永远不会知道。 (6认同)

tho*_*ter 7

许多 Debian 软件包需要 /tmp 可执行才能安装软件包。这些通常被标记为错误(“正常”/“愿望清单”严重性):

https://www.google.com/#q=site:bugs.debian.org+noexec+/tmp

就在今天,我在将更新的内核安装到稳定分支时收到了这个错误。

所以看起来Debian(和衍生品?)还没有准备好挂载/tmp noexec ...


tyl*_*erl 5

即使您可能选择实施的大多数补充安全措施都存在变通方法,但即使是最容易规避的安全措施(例如挂载 /tmp noexec 或在备用端口上运行 SSH)也会阻止依赖于默认值的自动或脚本化攻击发挥作用。它不会保护您免受坚定且知识渊博的攻击者的攻击,但在超过 99% 的情况下,您不会遇到坚定或知识渊博的攻击者。相反,您将保护自己免受自动攻击脚本的侵害。