SWAPGS一个新的投机执行漏洞

SWAPGS-expoit-2

MGI Bitdefender研究人员发现了一个新漏洞 在现代处理器中推测性执行指令的机制中, 谁叫SWAPGS, 与导致问题的处理器指令名称相对应。

脆弱性 允许无特权的攻击者确定内核内存区域的内容 或运行虚拟机。 该问题已在Intel处理器(x86_64)上得到确认,并且部分影响了没有出现主要攻击媒介的AMD处理器。

先前实施的Spectre和Meltdown反漏洞方法无法抵御SWAPGS攻击 使用Intel处理器,但是已经提出了针对Linux,ChromeOS,Android和Windows的解决方案。

该漏洞属于Spectre v1类 并且基于从处理器缓存中检索数据的想法,这些数据是在推测性执行指令后保留的。

现代CPU的转换预测块使用一些更有可能执行的指令来主动执行,以提高性能,但无需等待确定它们执行的所有因素的计算(例如,当指令转移条件或访问参数尚未计算)。

如果未确认预测,则处理器将丢弃推测性运行的结果,但是在运行期间处理的数据将由处理器进行缓存,并可以使用确定跨通道缓存内容的方法进行恢复。更改对缓存和非缓存数据的访问时间。

关于SWAPGS

新攻击的特殊性在于使用了SWAPGS指令的推测执行期间发生的泄漏, 当控制权从用户空间转移到操作系统内核时,它在操作系统中用于替换GS寄存器值(用户空间中使用的GS值由内核操作中使用的值替换)。

GS中的Linux内核存储per_cpu指针,用于访问内核数据,以及 指向用户空间中的TLS(线程本地存储)。

为了在从内核空间重复访问内核之后或在执行不需要GS寄存器替换的代码时排除对SWAPGS指令的两次调用,在该指令之前执行检查和条件转换。

推测执行机制在执行代码之前先使用SWAPGS指令, 无需等待验证结果,并且如果未确认所选分支,则丢弃结果。

因此, 当推测性地选择了指定执行SWAPGS的分支时,可能会出现这种情况,但在推测执行期间,GS寄存器的值将由SWAPGS指令更改,并将用于CPU缓存的与内存相关的操作。

研究人员提出了两种攻击方案 为此准备了漏洞利用原型。

  • 第一种情况是基于SWAPGS指令即使在实际执行中也不会以推测方式执行的情况,而第二种情况则是相反的,尽管SWAPGS指令是以推测方式执行的,但实际上并非如此。
  • 对于每种情况,都有两个操作选项:攻击者可以在核心区域的特定地址中确定值,并且攻击者可以在核心的随机地址中搜索特定值。

该解决方案要求在主系统和来宾环境上均安装内核更新,然后重新引导系统。 要在Linux中禁用保护,可以使用“ nospectre_v1”选项,该选项还禁用阻止SWAPGS漏洞的措施。

该解决方案可作为Linux内核的修补程序使用。,已包含在版本4.19.65、5.2.7、4.14.137、4.9.188和4.4.188中,而对于不同的Linux发行版,相关的修复程序将在本周及下周提供。


成为第一个发表评论

发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。