几周前,我们在博客上分享了 EntrySign 漏洞 这使得可以在 AMD 处理器的微码更新期间逃避数字签名验证机制。
如 最初,这看起来像是一个仅限于 Zen 1 到 Zen 4 代的错误, 现在它扩展到 Ryzen 9000、EPYC 9005、Ryzen AI 300 和 Ryzen 9000HX 等最新芯片。该缺陷允许在特定条件下通过绕过数字签名验证机制来修改CPU微代码,这将对虚拟化系统的安全性造成严重影响。
问题的根源 在 CMAC算法使用不当 在微码验证过程中。 AMD 传统上采用私钥 RSA 对这些更新的内容进行数字签名以及补丁中包含的公钥,用于验证微码的真实性 在装载时。然而,应该保证这种完整性的公钥哈希是使用 AES-CMAC 生成的,这是一种加密 MAC,与健壮哈希函数不同,它不能保证不会发生碰撞。
这种设计, 再加上 AMD 使用了通用加密密钥 适用于自 Zen 1 以来的所有 CPU,使得研究人员能够从任何受影响的处理器中提取密钥 并重复使用它来操作其他计算机上的微码补丁。令人惊讶的是,这个密钥与 NIST SP 800-38B 加密实践的公开示例相匹配,表明对良好加密实践的使用不够谨慎。
伪造的微码,有效的签名
由于这一弱点, 研究人员设法生成与 AMD 原始密钥产生相同哈希值的公钥。,他们 允许构建能够绕过完整性控制的假补丁。这些碰撞是通过在微码末尾插入额外的块来实现的,看似随机但经过精心计算,从而使数字签名保持完整。这样,就可以改变处理器的内部行为,而不会触发警报机制。
分析工具促进了这一过程 例如 Zentool,这是一套开源实用程序,可让您研究 AMD 的微代码并准备修改后的补丁。要实现这种类型的攻击,攻击者必须拥有 Ring 0 权限,即访问操作系统的最高级别,如果虚拟机管理程序受到威胁或通过 VT-x 或 AMD-V 等技术的不安全配置,这在虚拟化环境中是可行的。
对 AMD SEV 和安全虚拟化的影响
除了微代码操纵之外,EntrySign 还对 AMD SEV(安全加密虚拟化)及其扩展 SEV-SNP(安全嵌套分页)构成直接威胁,这些技术旨在确保虚拟机的完整性和机密性,即使在面对来自虚拟机管理程序或主机系统的攻击时也是如此。该漏洞可能会干扰受保护的处理器寄存器、修改嵌套页表以及改变客户系统的行为,从而严重损害其安全性。
AMD 响应和缓解措施
在这种情况下, AMD 已开始发布修复该漏洞的微码更新。或者,尽管在使用 SEV-SNP 的系统上也需要更新 SEV 模块固件,但这需要 BIOS 更新。 该公司已经向制造商发送了新的包裹 名为 ComboAM5PI 1.2.0.3c AGESA,但据估计最终补丁可能需要数周甚至数月才能提供给最终用户。
除此之外, AMD 工程师已经为 Linux 内核提出了一个补丁,可以阻止微代码加载。 非官方。此措施旨在防止第三方修改补丁的传播,例如由爱好者从提取的 BIOS 片段创建的补丁。同时,强烈建议等待官方 BIOS 更新,不要安装未经验证的版本。
最后, 如果您有兴趣了解更多有关它的信息,您可以在中查看详细信息 以下链接。