挂载/ tmp noexec有多有用?


39

许多人(包括Securing Debian手册)建议/tmp使用该noexec,nodev,nosuid组选项进行安装。这通常被表示为“纵深防御”策略的一个元素,它可以防止攻击加剧,该攻击使某人可以写入文件,或者阻止具有合法帐户但没有其他可写空间的用户的攻击。

但是,随着时间的流逝,我遇到了一些争论(最主要的是Debian / Ubuntu开发人员Colin Watson),这noexec是一个无用的衡量标准,其原因有两个:

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

给定这些参数,可能需要更多配置(例如,debconf像可执行的临时目录),并且可能会失去便利性,这是否值得采取安全措施?您还知道哪些其他漏洞可以绕开?


1
@neoice:我听说如果/ tmp无法执行,应用程序有时会中断。我还没有真正看到它的发生。看一下TuxGuitar-1.2 ...它发生了。如果没有noexec选项不挂载/ tmp,则不会启动,因为它会在其中解压缩库,然后尝试加载它们。

VMware的Site Recovery Manager的从“/ tmp目录”运行脚本:在vCenter站点恢复管理器恢复计划的故障转移或测试故障转移(2021083)在IP定制失败:kb.vmware.com/selfservice/microsites/...

1
我知道称为snappy的压缩实用程序会在/ tmp中删除.so文件,如果将其挂载到noexec上将无法运行。(它在cassandra和kafka中默认使用)恕我直言,这是不使用
snappy

Answers:


31

这是到目前为止我提出的实用程序的参数:

现代内核解决了该/lib/ld-linux.so漏洞,因此它将无法映射文件noexec系统中的可执行页面。

口译人员的观点当然仍然是个问题,尽管我认为这一点比人们可能声称的要少。我可以提出的理由是,存在许多依赖于进行特定格式错误的syscall的特权提升漏洞。如果没有攻击者提供的二进制文件,那么进行恶意的系统调用将更加困难。另外,脚本解释器应该没有特权(我知道,从历史上看,有时候并不是这样,例如使用suid perl),因此需要使用自己的漏洞才能在攻击中发挥作用。显然,至少可以使用Python运行某些漏洞利用程序。

许多“罐头”漏洞可能会尝试在中编写和运行可执行文件/tmp,从而noexec降低了遭受脚本攻击的可能性(例如,在漏洞披露和补丁安装之间的窗口中)。

因此,仍然是一个安全的好处安装/tmpnoexec

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


不过,我已经听说过应用程序偶尔会打破,如果/ tmp目录是不可执行的。我还没有真正看到它的发生。

正如问题中链接的手册中所指出的那样,它确实与Debconf软件包预配置混淆,而没有设置替代方法。
菲勒·米勒

2
是的,noexec是安全性的一个很好的附加层,我还没有看到因它而造成破坏的事情。软件包安装是唯一的事情,甚至可以按照此处的答案解决。作为我的解决方案,我有一个这样的别名:alias update =“ mount -o exec,remount / tmp && apt-get update && apt-get upgrade && mount -o noexec,remount / tmp”
Janne Pikkarainen 2010年

1
我想这并不常见,但是确实存在编写用于在包安装上下文之外从/ tmp执行某些操作的包(例如,用于使用比利时电子身份证的中间件的当前版本)。
equaeghe 2011年

equaeghe:那是什么包裹?它可能应该报告为错误。我愿意打赌,它的使用方式也存在一个安全漏洞。
菲勒·米勒

7

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

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

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

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


6

将以下内容添加到/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";};

6
我已替换mount/bin/mount万一PATH被修改了。你永远不会知道。
Lekensteyn 2010年

4

即使您可以选择实施大多数补充安全措施的变通办法,即使是最容易被规避的安全措施(例如在备用端口上挂载/ tmp noexec或运行SSH)也将阻止自动或脚本攻击,这些攻击依序依赖默认值发挥作用。它不会保护您免受坚定而知识渊博的攻击者的侵害,但是在99%以上的时间里,您将无法抵抗坚定而知识渊博的攻击者。相反,您将防御自动攻击脚本。


2

第一: 涵盖许多不同的攻击案例将其关闭是因为周围有一些已知的方法(其中一些方法甚至是固定的)很奇怪。攻击者通常会将代码下载到/ dev / shm或/ tmp中。

纵深防御涉及确保最常见的航路点的安全,每一个停车点都会使它们变得更加生存。不安全。但这也有机会。如果他们无法获取辅助负载,那么您将获得很大的机会。

  • iptables用户限制也可能会阻止它。
  • SELinux也可能会停止它。
  • 由于易于利用的其他漏洞利用,它也可能不会停止。

关键是要使其尽可能地容易,并消除99%的攻击。

第二: 它停止了不良做法(从temp运行内容,通过/ tmp而不是用户tmpdir进行大型应用程序安装),将数据保留在/ tmp中。定制安装程序通常确实了解TMPDIR。 另外:即使不是:安装时间作为时间点上的动作,也不是永久关闭安全问题的有效理由。

第三: 考虑/ tmp中的匿名名称空间(“功能”),您确实想限制放置在那里的内容并从那里运行。

第四: 便利性不是与此相关的因素。假设我们以金钱为目的运行服务器,这是出于我们的职责。“哦,我没有锁定/ tmp,因为明年明年更新软件时还需要几分钟。” 当然,介于勒索和罚款之间的不只是一件事。有很大理由吗?我不这么认为。

这个怎么样:

“我们了解到敌人可以在没有通知的情况下进攻。他们还可以使用数百名间谍毒化食物。因此,我们不再向士兵分发枪支。”

等等,什么?

还有其他一些措施需要更多的努力,经验和运气来确保系统安全,并且要知道人们的金钱,寿命有限,并且还想与家人共度时光:不要跳过那些简单的事情。


1

有些应用程序要求/ tmp是可执行文件才能安装。在以前的工作中,在我到达那里之前,管理员已经设置了/ tmp noexec,但是我发现db2软件包无法安装。即使您将db2软件包解压缩到其他位置,安装过程也会将一些文件复制到/ tmp并希望能够执行它,这当然会由于拒绝权限而失败。如果您不知道文件系统已挂载到noexec,则可能会引起误解。在没有noexec的情况下重新安装/ tmp后,它只能继续安装。

无论如何,关键是至少有一种商业产品要求/ exec不挂载/ tmp,并且可能还有其他产品。我还没有找到真正令人信服的理由。如果您想要更好的安全性,我会改用selinux。


对Samba漏洞利用的分析,将由noexec / tmp终止:bobao.360.cn/learning/detail/4168.html(建议使用Chrome浏览器的Google翻译。它会破坏最初的利用,以及有效载荷的很大一部分...)(您可以用这种方式破坏许多常见的自动漏洞利用...。)。mount -o remount,exec /tmp当您需要安装东西时可以正常工作...(是的,解决起来很简单,但是许多攻击者似乎都不会打扰...)
Gert van den Berg
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.