我了解许多开源项目要求不要在其公共错误跟踪器上披露漏洞,而是通过私下联系项目的安全团队来防止在修复可用之前披露错误。这很有意义。
但是,由于很多开源项目的代码库是公开的,修复源代码中的Bug不是马上就公开吗?
开源项目(例如 Linux 内核)采取了哪些措施(如果有)来确保在漏洞被披露之前可以将针对安全漏洞的修复程序部署到最终用户(例如三星 Android 手机)?
我了解许多开源项目要求不要在其公共错误跟踪器上披露漏洞,而是通过私下联系项目的安全团队来防止在修复可用之前披露错误。这很有意义。
但是,由于很多开源项目的代码库是公开的,修复源代码中的Bug不是马上就公开吗?
开源项目(例如 Linux 内核)采取了哪些措施(如果有)来确保在漏洞被披露之前可以将针对安全漏洞的修复程序部署到最终用户(例如三星 Android 手机)?
他们没有。通过发布代码,他们会自动将问题“披露”给那些可以对补丁进行逆向工程的人。但他们可以延迟解释或提供细节以方便消费。
如果他们延迟发布代码,他们就会强迫用户使用已知易受攻击的代码。
如果他们发布代码并且没有将其作为安全修复程序宣布,那么用户可能不会修补并最终运行已知易受攻击的代码。
因此,他们修复代码、发布代码、宣布安全修复,以便人们分配适当的紧迫性,但他们可以延迟解释所有细节,使攻击者更难弄清楚如何利用该漏洞。
那有效吗?
在某种程度上,“默默无闻的安全”在战略中占有一席之地,以争取一些时间。因为它不花钱,而且可以产生一些积极的影响,所以这似乎是一个容易的决定。
他们阻止披露报告的方式相同:不披露。
由于您特别提到了 Linux 内核:只有极少数用户直接从 Linus Torvald 的 Git 存储库的主分支构建他们的内核。绝大多数用户只是使用其发行版的自动更新程序安装的任何内核。
反过来,绝大多数发行版也不直接从 Linus Torvald 的 Git 存储库的主分支构建它们的内核。他们使用一些官方发布版本作为基础,从较新的内核向后移植一些新功能和修复,集成一些不属于 Linus 存储库的第三方补丁,集成一些特定于发行版的补丁等。
由于他们集成了不属于 Linus 存储库的补丁,因此为最新漏洞再集成一个补丁对他们没有任何影响。
因此,基本上发生的情况是补丁的发布是协调的,这样当漏洞在 Linus 的 Git 存储库中修复并公开宣布时,已修补的内核映像已经从发行版的更新服务器推送给用户。
请注意,一般来说,Linux 开发人员更喜欢尽快发布修复程序,但是如果您查看 Linux 内核文档中的安全漏洞一章,您会发现Coordination的段落,我认为它解释了 Linux 的具体过程内核非常好,并且也代表了其他一些大型项目如何处理该问题:
敏感错误的修复 [...] 可能需要与私有 [linux-distros] 邮件列表协调,以便分发供应商做好充分准备,在公开披露上游修复时发布修复内核。发行版将需要一些时间来测试提议的补丁,并且通常会要求至少几天的禁运 […]。在适当的时候,安全团队可以协助进行这种协调,或者报告者可以从一开始就包括 linux-distros。
所以,诀窍是:
其中完成了多少,以及时间框架是什么,取决于漏洞的性质。可远程利用的权限提升将与只能由已在本地登录机器的人利用的 DoS 区别对待。
在最好的情况下,最终用户的体验将是,当漏洞公开时,他们的计算机已经向他们打招呼,通知他们系统已在一夜之间重新启动以安装关键安全更新,就是这样。
巧合的是,我在 Eclipse Vert.x 项目中打开了一个关于 CVE-2020-17640的选项卡,产品维护人员正在讨论这个确切的问题!
Julien Viet 2020-09-28 13:07:31 EDT
所以我只需要提供 CVE 的详细信息就可以得到一个?
如果是这样,在我们发布修复程序之前,我不知道如何保持机密。
韦恩·比顿 2020-09-28 23:03:45 EDT
在此处向我提供详细信息,我将分配一个 CVE,然后您可以结束您的提交并推送。我可以推迟一天左右向中央当局 [Mitre / NVD] 推送,但不能再推迟了。
你的问题是
开源项目如何在修复错误时防止泄露错误?
我认为答案是困难的。
正如您所说,您希望在准备好补丁之前将详细信息保密,但是有许多相互竞争的利益使得难以防止信息公开。
个人轶事:
我注意到许多项目将 CVE 编号保留在提交消息之外,当我试图确定给定的 CVE 是“关闭服务器,直到我们可以修补”还是“我们很高兴等到下一个周期”。CVE-2020-17640 是评级为 CVSS 9.8 的其中之一,但实际上没有任何信息可以帮助我确定这是否可以在我正在调查的部署中被利用。
一种方法是以不太明显的方式编写补丁,并使用误导性的评论和提交消息,可能将补丁与多个其他(功能/稳定性)补丁混合,将某些内容记录为实际上是功能的漏洞修正/稳定补丁,反之亦然。稍后清理情况当然是值得推荐的。