Vigorous Pro

The world can always use more heroes.

  1. 1. 什么是 Retpoline 呢?
  2. 2. 启用方法
  3. 3. 参考链接

微软在 Windows 10 1809版本引入了 Retpoline 修复补丁。但是却不是默认开启的,本文将会简单的说明 Retpoline ,以及手动启用方法。

2019-03-07 请注意,当前版本会导致某些情况下出现性能下降!!!在微软重新发布前建议卸载 KB4482887 补丁

2019-03-20 官方已于 2019-03-12 日放出修复补丁 KB4489899 强烈建议安装

什么是 Retpoline 呢?

2018年1月4日,Google 在其安全博客上详细介绍了新技术 “Retpoline”,该技术能够以微不足道的处理器开销克服 Spectre 漏洞。它涉及在编译器编译时让间接分支跳转到不同的目标,减少易受攻击的乱序执行发生。虽然这项技术面向x86指令集开发,Google 工程师认为该技术也可以用于其他处理器。
简单来说,就是谷歌为了解决/减少目前 Meltdown 和 Spectre 漏洞补丁对性能产生的 5% - 30% 的影响,开发了名为 Retpoline 的基于软件的修复方案。Retpoline 方案旨在提高 Windows 和 Linux 平台中 Spectre Variant 2 的性能。

微软的一篇博客文章中表示,目前在 Windows 客户端设备上默认禁用此功能,当然该文章中也写明了启用方法。
需要注意的是, Retpoline 将会在 19H1 版本默认启用。下面我便会写出尝鲜办法。

启用方法

首先,以管理员身份打开命令提示符或 PowerShell 并输入以下内容。

1
2
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 0x400
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 0x400

接下来,重启计算机,重启完成后,以管理员身份运行 PowerShell 并输入以下内容

1
2
3
4
Install-Module -Name SpeculationControl
Set-ExecutionPolicy RemoteSigned
Import-Module SpeculationControl
Get-SpeculationControlSettings

安装过程全部回复 Y,完成后,会返回一大堆信息,如果内容与下面一致即说明启用成功。

1
2
3
4
5
6
7
Speculation control settings for CVE-2017-5715 [branch target injection]
Hardware support for branch target injection mitigation is present: True
Windows OS support for branch target injection mitigation is present: True
Windows OS support for branch target injection mitigation is enabled: True

BTIKernelRetpolineEnabled : True
BTIKernelImportOptimizationEnabled : True

参考链接

Google, 성능저하 없이 Spectre 취약점을 패치할 수 있는 Retpoline 공개
Mitigating Spectre variant 2 with Retpoline on Windows
幽灵漏洞
Retpoline: a software construct for preventing branch-target-injection

本文作者 : Edison Jwa
本文使用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议
本文链接 : https://www.wevg.org/archives/enable-retpoline-win10/

本文最后更新于 天前,文中所描述的信息可能已发生改变