AMD 披露了一类针对其处理器的新型微架构攻击,称为 TSA(瞬态调度程序攻击)。这种攻击允许攻击者绕过 CPU 隔离机制,并获取在其他上下文中处理的数据,例如从用户空间获取内核级处理的信息,或从客户机获取其他客户机使用的数据。
这些漏洞是在微软和苏黎世联邦理工学院的研究人员开发的工具包开发过程中发现的,该工具包用于对内核、虚拟机和进程等不同安全区域之间的微架构隔离进行压力测试。
该攻击方法基于某些指令的执行时间对微架构状态的依赖性。当处理器期望从内存读取数据的指令快速完成(例如,假设数据位于一级缓存中),但未能成功获取数据时,就会出现指令的“错误完成”状态。在这种情况下,即使在确定此状态之前,处理器也可以调度依赖于从内存加载指令执行结果的其他操作的推测性执行。
由于加载操作未完成,与其关联的数据将被处理器置为无效,之后将重复执行加载操作。当正确数据准备就绪时,依赖操作也会重新执行。然而,在执行已修复“错误完成”条件的指令后,不会执行流水线刷新,因此可以将错误数据重定向到依赖操作。
此类操作的执行不会改变缓存和 TLB(Translation Lookaside Buffer,转换后备缓冲区)的状态,也就是说,无法使用传统的缓存状态恢复数据。但这些数据会影响其他指令的执行时间。对执行时间的分析可以作为推测执行其他操作后剩余微架构结构信息泄露的来源。
根据残留数据提取的来源,确定了两个漏洞:
- CVE-2024-36350(TSA-SQ - TSA 存储队列)- 写入操作的临时存储缓冲区(存储队列)发生泄漏,从而导致确定将指令写入内存的结果。
- CVE-2024-36357(TSA-L1 - TSA L1 数据缓存)- 通过 L1D 缓存泄漏。
这些漏洞出现在基于 Zen 19 和 Zen 3 微架构的 AMD 处理器系列 (Fam4h) 中。例如,AMD Ryzen 5000/6000/7000/8000、AMD EPYC Milan/Milan-X/Genoa/Genoa-X/Bergamo/Siena、AMD Instinct MI300A、AMD Ryzen Threadripper PRO 7000 WX、AMD EPYC Embedded 7003/8004/9004/97X4、AMD Ryzen Embedded 5000/7000/V3000 CPU 系列均存在此问题。
为修复该漏洞,已在 12 月份发布的微代码更新和平台初始化 (PI) 固件中纳入了相关更改,这些更新已提供给原始设备制造商 (OEM)。用于防御该漏洞的补丁程序已提交,等待纳入内核。 Linux (内核命令行选项“tsa=off”用于禁用会影响性能的保护功能。)Xen 虚拟机管理程序也已添加了修复程序。要修复此漏洞,需要同时更新微代码并在内核或虚拟机管理程序级别启用保护模式。
来源: opennet.ru
