SELinux 和文本重定位可利用性

信息安全 代码审查 selinux cve
2021-08-13 13:43:19

我的任务是为我们的 GNU/Linux 农场采用和实施某种备份软件解决方案。
根据我的部门定义的要求,此解决方案应支持启用 SELinux 的系统才能有效。经过不太深入的研究,很明显这个产品不支持 SELinux,或者需要系统管理员在 SELinux 策略上打一个洞,因为一些库需要执行文本重定位才能运行(更不用说其知识库中建议的命令的正确性(或缺乏正确性))。

SELinux 被证明会暴露错误并不是什么新鲜事,但我在这里关心的是能够向管理层解释在多大程度上拒绝文本重定位是一项主要的安全功能

管理层反驳了我的推理,即没有为该特定产品发布与需要执行文本重定位相关的 CVE。

执行文本重定位的需要是否足以表示 CVE 可识别漏洞?

2个回答

有两个要点需要说明。首先是 SELinux 政策的一个主要优势是防止利用未知漏洞。鉴于它们是未知的,CVE 将不存在。

第二个是允许文本重定位还允许漏洞利用程序编写和执行它想要执行的任何代码,或者允许它修改内存中的现有代码。您引用了 Ulrich 的简短介绍,其中还包含他的“解决问题”文章;两者都非常出色并解释了问题。

“需要执行文本重定位”本身并不是一个漏洞;它只是使程序或库中的一些漏洞易于利用。

不存在 CVE 是不实施安全措施的可怕理由。这场比赛的全部意义在于保持领先于您的攻击者,如果假设的攻击者只使用广泛传播的公共漏洞,那么他们真的不擅长他们所做的事情。

文本重定位是“不好的”,因为它们是自变异代码的一种特殊情况,这意味着攻击者可能会诱使程序以其他方式修改其文本。如果需要重定位,则意味着.text可以写入程序(代码)。

如果没有允许攻击者操纵文本重定位过程或直接写入的实际漏洞.text,这完全不是问题。这基本上要求他们能够添加可加载模块,如果这就是需要重定位的原因,或者以其他方式修改受到攻击的系统上的任意文件;无论哪种情况,您都会遇到更大的问题。能够.text作为攻击者写入任意内容的情况本身就是一个相当大的安全漏洞。

本质上,当您允许这样做时,您就放弃了 W^X 保护的好处。那是个大问题。

当然,您不知道不存在允许攻击者执行这些操作的漏洞。如果您不能向应用程序授予此权限,您会更安全,但如果功能确实需要它,您应该在向软件供应商大声喊叫的同时允许它。