Linux处理Intel TDX和AMD SEV的x86 32位软件安全问题

2023年 12月 9日 45.7k 0


AMD 安全的加密虚拟化(SEV)和英特尔信任域扩展(TDX)旨在帮助为虚拟机提供更好的安全性,是两家公司在机密计算方面投资的关键要素。事实证明,他们在VM安全目标上有一个共同的敌人:x86 32位软件。

由于32位软件和潜在的VMM滥用,周四为Linux 6.7合并的补丁正在解决一个安全矢量。Intel TDX和AMD SEV不仅保护VM免受其他VM的侵害,还确保与VMM/Hypervisor本身分离。由于x86 32位语义,在这个日益关注安全的世界中存在问题。其中一块补丁合并昨天,Linux6.7在TDX和SEV上运行时,默认禁用了32位支持。英特尔Linux工程师Kirill Shutemov在补丁消息中解释说:

INT 0x80指令用于32位x86 Linux系统调用。内核期望接收INT 0x80指令导致的软件中断。但是,同一向量上的外部中断触发同一处理程序。

内核将向量0x80上的外部中断解释为来自用户空间的32位系统调用。

VMM可以在任何时间向任意向量注入外部中断。即使对于VMM不受信任的TDX和SEV访客也是如此。

总而言之,这允许不受信任的VMM在任何给定点触发int80系统调用处理。此时客户寄存器文件的内容定义了触发什么系统调用及其参数。它打开来宾操作系统,以便从VMM端进行操作。

默认情况下,禁用TDX和SEV的32位仿真。用户可以使用ia32_emulation=y命令行选项覆盖它。“

舒特莫夫在随后的补丁中已恢复 还有一些额外的变化:

“在TDX上禁用了32位模拟,以防止VMM在向量0x80上插入中断可能造成的攻击。

既然int80_emulation()已经检查了外部中断,就可以取消限制了。

为了区分软件中断和外部中断,int80_emulation()会检查与0x80向量相关的APIC ISR位。对于软件中断,此位将为0。

在TDX上,VAPIC状态(包括ISR)受到保护,不能被VMM操纵。ISR位由微码流在处理发布的中断期间设置。“

从昨天的补丁开始,在AMD SEV下运行的x86 32位软件支持在默认情况下仍然处于禁用状态。

所有这些改进AMD SEV和英特尔TDX安全性以防止VMM滥用INT 0x80的补丁都被设置为从Linux 6.0起支持的内核版本。

On the plus side, these changes for cleaning up the code did lead to the kernel getting rid of a bunch of Assembly-written entry code and replaced by C code.

相关文章

塑造我成为 CTO 之路的“秘诀”
“人工智能教母”的公司估值达 10 亿美金
教授吐槽:985 高校成高级蓝翔!研究生基本废了,只为房子、票子……
Windows 蓝屏中断提醒开发者:Rust 比 C/C++ 更好
Claude 3.5 Sonnet 在伽利略幻觉指数中名列前茅
上海新增 11 款已完成登记生成式 AI 服务

发布评论