新曝光的 GoFetch 漏洞影响 Apple M1、M2 和 M3 芯片,攻击者可以从目标系统上的加密应用程序中窃取密钥。 该漏洞利用的方式是在与目标计算机上的目标进程相同的 CPU 集群上运行欺诈进程。 由于该漏洞存在于硬件中,因此目前尚无简单的缓解方法。
GoFetch 是一个缓存侧通道漏洞。 此类漏洞通过分析辅助数据来针对系统中的特定缓存。
M1、M2 和 M3 苹果芯片拥有一个依赖于数据内存的预取器(Data Memory-Dependent Prefetcher,简称为 DMP),它是芯片的硬件部分,负责预测计算机上运行的代码在不久的将来可能访问的数据的内存地址,并将其存储在缓存。 然而,与仅存储内存访问模式的经典预取器相比,DMP还直接考虑数据内存的内容来确定预取什么。
DMP 的一种行为可能导致 GoFetch 漏洞:它有时会将内存内容与用于加载其他数据的指针值混淆。 正如研究人员所解释的那样,GoFetch 漏洞可以通过精心设计“加密操作的选定输入,只有当我们正确猜测密钥的某些位时才出现类似指针的值”来利用。 因此,通过对不同位重复这些操作,就可以猜测秘密密钥的所有位。
研究人员进行的测试表明,可以从流行的加密产品(OpenSSL Diffie-Hellman Key Exchange、Go RSA 解密)中提取密钥,也可以从后量子密码学(例如 CRYSTALS-Kyber 和 CRYSTALS-Dilithium)中提取密钥。 然而研究人员写道,“虽然我们展示了对四种不同加密实现的端到端攻击,但鉴于类似的攻击策略,更多程序可能面临风险。”
什么是缓存侧通道漏洞:想象一下,您有一个锁着的保险箱,您不知道密码,但您知道转动拨号盘时发出的声音会根据您所在的号码而变化。 所以,你仔细听转动表盘时发出的声音,即使你不知道实际的数字,你也能通过这种方式算出组合。旁路攻击的工作原理类似。 攻击者不会尝试直接破解加密,而是寻找可以揭示秘密信息的其他线索。 例如,他们可能使用设备来测量计算机执行加密操作时所使用的电量。 通过分析用电模式,即使他们不知道算法,他们也可以找出用于加密数据的密钥。 这可能是绕过安全措施并访问敏感信息的非常有效的方法。