网络安全研究人员发现了2种针对Intel处理器的攻击方式——SGAxe和CrossTalk攻击,可以从CPU的trusted execution environments (TEE,可信执行环境)中窃取机密信息。与Intel的Software Guard Extensions (SGX)类似,TEE是处理器中的一个区域,用于确保代码和数据的机密性和完整性性。TEE可以防止恶意攻击者对敏感软件和数据进行修改,以防攻破目标虚拟机。
SGAxe攻击:从SGX Enclave中窃取敏感数据
SGAxe攻击是CacheOut (CVE-2020-0549)攻击的一个变种,攻击者可以从CPU的 L1 Cache中提取相关内容。CacheOut攻击是一种推测攻击,可以窃取SGX数据。研究人员称通过对Intel提供和签名的SGX enclave进行攻击,可以通过网络提取出用于证明enclave真实性的secret attestation key(秘密认证密钥),然后就可以传递伪造的enclaves。
研究人员称Intel虽然采取了措施来应对针对SGX的侧信道攻击,比如微代码更新和新的架构,但这些措施并没有什么好的效果。
漏洞利用会导致瞬时执行攻击,可以从更新的Intel机器中恢复SGX加密密钥,而该密钥是Intel 认证服务器信任的。认证是SGX的一部分,可以让enclave向第三方证明在真实的Intel处理器上正确地进行了初始化。这一思路是为了确保CPU中运行的软件不会被修改。
在攻击中,研究人员使用CacheOut 来在Intel的生产quoting enclave地址空间中恢复sealing key。然后用sealing key可以解密quoting enclave的存储,获取机器的EPID认证密钥。
然后攻击者就可以创建一个Intel认证机制的伪造的enclave,打破了安全保证。一旦机器生产认证密钥被黑,那么服务器提供的所有机密都可以被客户端不可信的主机应用读取,同时客户端上运行的enclave生成的所有结果都将不再可靠。这就使得所有基于SGX的DRM应用没有用了,所有所谓的机密消息都可以被恢复。
Intel 在1月通过微代码更新的方式向OEM厂商发布了CacheOut 的补丁,随后通过BIOS更新的方式分发到终端用户。SGAxe的环节方式需要对CacheOut 攻击的本质进行修复。芯片厂商可以执行TCB(可信计算基)恢复的方式来让之前签名的所有认证密钥无效。
CrossTalk攻击:从CPU核心窃取信息
第二个攻击名叫CrossTalk攻击,对应的漏洞CVE编号为CVE-2020-0543。攻击利用了跨CPU核心可读的staging 缓存来对核心发起瞬时执行攻击,从单个CPU核心中运行的安全enclave中提取完整的ECDSA 私钥信息。
staging 缓存中有之前跨CPU核心执行的核下指令(offcore-instructions)的结果,比如,含有硬件DRNG返回的随机数、bootguard 状态哈希值和其他敏感数据。
CrossTalk的工作原理是在瞬时执行时读取staging缓存来泄露之前执行的受害者指令可以访问的敏感数据。由于该缓存中含有RDRAND 和 RDSEED 指令的执行结果,因此非授权方可以记录生成的随机数,然后入侵SGX enclave中的加密操作,包括前面提到的远程认证过程。
PoC代码参见:https://github.com/vusec/ridl
PoC视频参见:https://www.youtube.com/embed/7tba2ayE3cI
漏洞影响
这两个攻击影响Intel 2015年到2019年发布的所有CPU,从Xeon E3到E CPU。
漏洞修复
针对现有的瞬时执行攻击的修复方案大部分通过对边界的部分隔离技术来实现,由于攻击是跨核心的,因此对该攻击是无效的。微代码更新可能是唯一的解决方案。
研究人员称早在2018年9月就向Intel 提交了窃取信息的PoC 代码,2019年7月提交了跨核心 RDRAND/RDSEED 信息泄露的PoC。由于漏洞修复的困难性,Intel在漏洞提交后21个月通过微代码更新的方式向软件厂商发布了补丁。Intel建议受影响的处理器用户更新厂商提供的最新固件来解决相关的安全问题。
更多关于CrossTalk攻击的信息参见https://www.vusec.net/projects/crosstalk/
本文翻译自:https://thehackernews.com/2020/06/intel-sgaxe-crosstalk-attacks.html如若转载,请注明原文地址: