进程隔离是 Firefox 安全模型的基石之一。Firefox 不是作为一个单一进程运行,而是多个具有不同权限的进程通过进程间通信(IPC) 进行通信。例如:加载网站、处理其资源和渲染网站由一个隔离的内容进程完成,该进程具有非常严格的沙箱,而诸如文件系统访问之类的关键操作仅允许在父进程中执行。
通过以较低权限运行潜在的恶意代码,潜在的代码执行漏洞的影响得以减轻。为了获得完全控制权,攻击者现在需要找到第二个漏洞,该漏洞允许绕过这些权限限制,这俗称为“沙箱逃逸”。
为了实现沙箱逃逸,攻击者实际上有两个选择:第一个是从受损的内容进程中直接攻击底层操作系统。由于每个进程都需要与操作系统进行交互以完成各种任务,因此攻击者可以专注于在这些接口中查找错误以提升权限。
由于我们已部署对 Firefox 的更改,这些更改严格限制了公开给低权限进程的操作系统接口,因此第二个攻击选项变得更加有趣:利用特权 IPC 端点中的漏洞。由于低权限内容进程需要与特权父进程交互,因此父进程需要公开某些接口。
如果这些接口没有执行必要的安全检查或包含内存安全错误,内容进程可能会利用它们并以更高权限执行操作,可能导致整个父进程被接管。
传统上,模糊测试在 Mozilla 的历史上取得了多个成功案例,并使我们能够发现各种问题,包括代码中的安全漏洞。但是,将模糊测试应用于我们的关键 IPC 接口一直很困难。这主要是由于 IPC 接口无法孤立地进行测试,即需要完整的浏览器进行测试,并且由于 IPC 接口的错误使用会导致浏览器重启,从而在迭代之间引入了过多的延迟。
为了找到这个问题的解决方案,我们与研究界合作,采用了一种新的方法来在模糊测试期间重绕应用程序状态。我们于 2021 年使用一个实验性原型看到了这种方法的第一个结果,该原型后来成为了名为“Nyx”的开源快照模糊测试工具。
截至 2024 年,我们很高兴地宣布,我们现在正在生产中运行各种针对 IPC 的快照模糊测试目标。快照模糊测试是一种近年来越来越流行的新技术,我们为自己在将其从概念转变为实用方面所发挥的作用而感到自豪。
利用这项技术,我们已经能够识别并修复我们的 IPC 层中的一些潜在问题,我们将继续改进我们的测试,为您提供最安全的 Firefox 版本。
如果您想了解更多信息,甚至考虑为 Mozilla 做贡献,请查看我们在安全博客上的文章,文章解释了这种新工具背后的技术架构。
关于 Christian Holler
Christian 是 Mozilla 的 Firefox 技术主管和首席工程师。