近日,安全专家在苹果M系列芯片中发现了一个新的安全漏洞,使用该漏洞的攻击方式被命名为GoFetch,这种攻击方式使用的应用程序不需要root访问权限,只需要与macOS系统上安装的大多数第三方应用程序所需的相同用户权限,黑客就可窃取用户数据。
据了解,这个漏洞源于苹果芯片使用的硬件优化功能——数据内存依赖预取器(DMP),它能够预测将要访问的内存地址,通过在实际需要内容之前将内容加载到CPU缓存中,DMP可以减少主内存和CPU之间的延迟,从而提高处理器效率。然而,DMP有时会错误地混淆密钥等敏感数据内容与内存地址指针,从而给攻击者带来了机会。
攻击者可以通过选定的输入攻击操纵加密算法内的中间数据,使其看起来像指针。然后,DMP发现数据值“看起来像”一个地址,就会将该“地址”中的数据放入缓存中,从而泄漏“地址”。预取的数据值并不重要,由于中间数据看起来像地址,通过缓存通道可见,所以随着时间的推移足以揭示秘密密钥。例如,假设一个程序有秘密 s,将x作为输入进行计算,然后将y=s⊕x存储到其程序内存中。攻击者可以通过观察DMP是否能够取消引用y来制作不同的x并推断有关s的部分(甚至完整)信息。
目前来说,由于该漏洞源于芯片本身的微架构设计,还无法被直接修复,只能通过在第三方加密软件中构建防御措施来缓解这种情况,但这些软件在执行加密操作时可能会大大降低M系列芯片的性能,特别是早期的M1和M2芯片。而对于最新的M3芯片,其上的DMP有一个特殊位,可以调用该位来禁用DMP功能,不过研究人员还不知道关闭这种性能优化功能后会对芯片性能有多大的影响。