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