安全研究人员发现了另一个漏洞,它会影响许多AMD和英特尔微处理器列表,可以绕过目前的防御系统,导致基于Spectre的投机执行攻击。 苏黎世联邦理工学院的研究人员约翰内斯维克纳和卡维拉扎维称之为Retbleed,这些问题被追踪为CVE202229900(AMD)和CVE202229901(英特尔),芯片制造商发布软件缓解作为协调披露过程的一部分。 Retbleed也是被称为SpectreBTI(CVE20175715或SpectreV2)的一类Spectre攻击的最新补充,该攻击利用一种称为Speculativeexecution的优化技术的副作用,通过计时侧信道欺骗程序访问其内存空间中的任意位置并泄露私人信息。 Speculativeexecution试图通过预测下一步将执行哪条指令来填补程序的指令管线化,从而提高性能,同时还会在猜测错误的情况下撤销执行结果。 像Spectre这样的攻击利用了这样一个事实:这些错误执行的指令(这是错误预测的结果)必然会在缓存中留下执行的痕迹,导致出现这样一种情况:一个流氓程序可以欺骗处理器执行错误的代码路径,并推断出与受害者有关的秘密数据。 换句话说,Spectre是一种短暂执行攻击的实例,它依赖于硬件设计缺陷来影响推测执行的指令序列,并从受害者的内存地址空间中泄露加密密钥或密码。 反过来,这是通过微架构的侧通道实现的,比如FlushReload,它测量从与受害者共享的缓存执行内存读取所花费的时间,但不是在刷新某些共享内存之前,从而导致快速或慢速的读取,这取决于受害者是否访问了被监控的缓存线,因为它被驱逐了。 虽然像Retpoline这样的保护措施已经被设计用来防止分支目标注入(BTI),但是Retbleed的设计目的是绕过这种对策并实现推测性的代码执行。 研究人员解释说:Retpolines的工作原理是替换间接跳转(在运行时确定分支目标的分支)和返回调用。 Retbleed旨在劫持内核中的返回指令,以便在内核上下文中获得任意的推测性代码执行。如果在受害者返回指令中对寄存器和或内存有足够的控制,攻击者就可以泄漏任意的内核数据。 简而言之,其核心思想是将返回指令视为投机执行的攻击向量,并强制将返回值像间接分支一样进行预测,从而有效地撤销Retpoline提供的保护。 作为一条新的防线,AMD已经引入了Jmp2Ret,而Intel已经建议使用增强的间接分支限制性投机(eIBRS)来解决潜在的漏洞,即使Retpoline的缓解措施已经到位。 Windows操作系统默认使用IBRS,因此不需要更新,英特尔在一份咨询报告中表示,并指出,该公司与Linux社区合作,针对这一缺陷提供可用的软件更新。