如果您在具有闭源固件的机器上运行开源且安全的操作系统,那么它的意义何在?

信息安全 开源 BIOS 固件
2021-08-30 02:44:29

我对 OpenBSD 操作系统非常感兴趣,因为在我看来,它目前似乎是比同时代产品更重视安全性的选项。但是当我读到它时,我突然想到,即使 OpenBSD 就是它所声称的那样,如果我在闭源 BIOS/专有硬件上运行操作系统,那么所有这些安全性和开放性又有什么关系呢?

我知道 Open BIOS、coreboot 和 Libreboot,但我想知道为什么像 OpenBSD 这样的以安全为中心的系统在使用开放固件方面没有那么重要。难道你一开始就使用封闭的固件来破坏开放安全的目的吗?

4个回答

从历史上看,开源运动不是关于安全,而是关于自由基本上,Richard Stallman 对由于驱动程序源不可用而无法摆弄他的打印机感到非常沮丧。

OpenBSD 关于“安全”的立场并非来自它是开源的,而是来自一个公开的目标并承诺在安全方面做正确的事情(从历史上看,OpenBSD 的出现是因为 NetBSD 中的一些开发人员在编程方面比管理人与人之间的和平关系)。

安全性和开源之间的关联是最近才出现的。事实上,从一开始,它就被解释为一个不完整的概念(参见 Ken Thompson 著名的对信任的反思)。讨论中的一个要素是莱纳斯定律,它说:

有足够的眼球,所有的虫子都很浅

核心思想是,有足够多的审阅者,就会发现错误,这会扩展到与安全相关的错误。然而,这只有在有审稿人的前提下才成立。开源软件使外部审查更容易,但这并不意味着外部审查确实会发生。您最后一次浏览现有源代码是什么时候?

恰当的例子:OpenSSL。在代码库中发现另一个漏洞后,创建了一个名为LibreSSL的分支,他们开始了明确的审查工作,发现代码库中有几个严重的问题。这些问题已经存在多年,就在一个库的中间,可以说是 Linux 生态系统中最重要的安全相关库之一。所以这是开源的,但(根本)不足以实现适当的漏洞检测。

因此,开源当然有助于提高安全性,但并没有预期的那么多。

开源真正带来的是,对于那些愿意植入后门的人来说,风险会大大增加。很难编写出对审阅者来说看起来无害但仍然做坏事的代码(此类代码存在竞争)。

开源并不明确 = 更安全/更安全

任何CAN看看开源软件/硬件,但这并不能保证“任何人” WILL看它; 此外,如果他们确实看过它,这也不意味着他们会披露他们认为可能是漏洞的东西。人们对开源假设太多,他们认为的一个谬误是,如果一群人可以看一些东西,它会突然变得更安全、更有保障。这不是绝对正确的。很高兴能够对产品有很多关注,但是这些眼睛的道德和道德与他们的技术实力一样重要。

话虽如此,如果正确实施其背后的概念,开源有很多好处。

此外,封闭源代码不会自动 = 不太安全/不安全。

但是要直接回答您的问题,不,您不会通过在闭源硬件之上运行它来自动破坏使用与 OpenBSD 等安全相关的已知操作系统的目的,因为硬件本身可能具有非常安全的代码/固件。就像开放的东西一样。

撇开“开源 == 安全”论点不谈,您还可以将此问题视为“为什么在 BIOS/固件不能保证安全时运行安全操作系统”。

当攻击者可以打破窗户时,为什么还要锁上我的前门?

你永远不会建立一个完全安全的系统。您可以做的是确保您致力于保护易于攻击者利用的部分。制作固件漏洞需要做更多的工作,而且它们仅限于针对特定型号的硬件。而操作系统错误更容易被利用并影响更大的目标群。

所以是的,理想情况下你想要两者,但只有一个并不是没有用的。

开源(免费/自由)软件(主要)与安全无关。其更重要的方面之一是信任:您可以验证正在运行的内容,隐藏恶意内容要困难得多。有些人还声称更多的人将(可能)阅读代码,这意味着发现和修复漏洞的机会更高,从而导致更高的代码质量。这已经在 Tom Leek 的回答中进行了深入讨论。我不会在这个答案中更深入地讨论这个有争议的话题,因为你的问题不是关于为什么开源软件更安全,而是如果固件是闭源的,为什么还要打扰。

撇开开源软件也不一定安全这一事实不谈,在不受信任的固件上运行受信任的代码不会使代码执行不受信任吗?当然!但攻击向量可能更小。访问设备的固件接口比访问计算机的操作系统和应用程序软件要困难得多,它们甚至可能在互联网上提供服务(以及许多其他接口给完全陌生的人)。永远不会有完全的安全性,但您可以尝试在给定的预算内将风险降至最低。

通过足够的努力,封闭源代码(UEFI/BIOS)固件可以被开源软件替换:Coreboot 是一个很好的例子,它为某些产品实现了开放固件。但是UEFI/BIOS 并不是唯一的固件:有时仍然需要像 Intel 的管理引擎这样的 BLOB,显卡和网卡等硬件设备有固件,你的硬盘有,甚至还有微码加载到 CPU。并且它们都或多或少地对内存和/或存储进行任意控制。最后,您甚至可能不信任 CPU 供应商,他们可能会在普通硬件中实现恶意电路。

您必须在某个时候停下来,并简单地信任供应商,因为您越往硬件堆栈越深,成本就会大大增加。您是否有能力最终验证复杂的 CPU 设计并自行制造 CPU?

在 Chaos Communicaiton Congress 2015 (32C3) 上,有一场精彩的演讲如何获得(合理地)值得信赖的 x86 笔记本电脑,并提供了关于该主题的摘要。