Google的Project Zero团队在本周披露了macOS核心XNU的本地权限扩张漏洞。 Project Zero是在去年的11月30日向苹果提报了该漏洞,于90天的期限之后将它公布,只是苹果尚未修补。
根据Project Zero团队的说明,XNU具备各种接口以在不同的程序间创建写时拷贝(copy-on-write,COW),包括Mach消息的外部消息描述符,这些拷贝的内存受到来源程序的保护以避免之后被篡改,否则来源程序就能在目标程序中进行双重读取。
该COW行为不只适用于匿名内存,也适用于文件映射,意味着在目标程序开始读取已转移的内存区域之后,内存压力可能导致掌管已转移内存的页面被页面缓存逐出,有需要时再重新加载,因此,若黑客可在不知会虚拟管理子系统的情况下变更磁盘文件,便形成了安全漏洞。
而macOS允许一般用户挂载文件系统映像,若调用pwrite() 直接变更该映像时,挂载的文件系统是不知情的。
简单地说,该漏洞允许黑客悄悄变更所挂载的磁盘映像,借由开采macOS的内存管理系统来执行修改过的程序。
Google表示,苹果已得知该问题,并打算在未来的版本中修补,双方正在合作评估修补选项。