修补机制和安全漏洞

信息安全 操作系统 打补丁
2021-09-06 02:50:45

让我澄清两种修补软件的方法,然后我将直接进入问题:

我同时使用 MAC OS X 和 Windows,这两个著名的操作系统在处理软件更新方面的不同机制对我来说很有趣。
当 OS X 中有更新可用时,通常可以完全更新麻烦的部分,在我看来它完全更新了该部分,但是当有可用的 windows 修补程序时,这个修补程序通常很小(相比之下与我们从苹果网站下载的内容)。

我想知道这种机制的利弊(朝着该软件的安全目标),我不关心谁是对是错,我需要比较这些补丁管理技术可能导致的安全影响和劳动量和不同补丁管理策略的副作用(如果它如此广泛,参考可能足以给我一个关于如何开始的线索)。
{请提供建设性的答案,并避免在答案的任何部分责怪任何软件供应商,尤其是上述两个。只要我关心,这就是这个论坛的政策。谢谢}

2个回答

所以本质上,这归结为补丁是作为一组替换文件交付的,还是一组应用于现有文件的“二进制差异”。

  • 从替换文件更新任意早期版本的软件通常更容易。例如,如果您有一个 1.0.2 的组件并且补丁提供了 1.0.7,那么您只需继续安装它即可。对于差异,您必须(通常)通过 1.0.3、1.0.4 等。我记得 Solaris 的修补机制具有这个有趣的功能(并且必须在 PatchPro 发布之前手动安装每个部分)。
  • 下载二进制差异更新通常更快。
  • 如果以某种方式修改了原始文件,替换组件安装更有可能成功。但是,无论如何,您都不应该依赖补丁管理器作为您的完整性检查器。

事实上,根据我的经验,补丁的“安全性”不在于安装机制(除了自动化通常优于手动),而是在于以下两点:

  1. 最重要的是,补丁的可用性和安装之间的延迟。例如,参见 Slammer 蠕虫。
  2. 供应商在分发补丁之前完成的测试量。

原则上,通过安装整个新二进制文件进行修补与通过差异进行修补之间没有区别,无论哪种方式,假设两者都正确实施,您最终都会得到相同的目标状态。

通过差异进行修补(通常)在网络带宽方面会更有效,但(如果您正在为自己的软件实施修补)也会更加复杂,因为您需要满足所有不同的旧版本软件客户可能拥有的(除了所有旧版本的数据格式,如果这些已更改)。

也有人可能会争辩说,差异修补程序的复杂性越高,实现错误的可能性就越大,其中一些与安全相关,并且可能大部分会导致系统无法工作。