我有一台运行 Windows 10 LTSB 2016(内部版本 1607)的 Dell XPS 15 9560。CPU 是 Intel i7 7700HQ。近一个月以来,我一直在尝试确保这台机器能够抵御最近发现的 Spectre 漏洞(CVE-2017-5715),但没有成功。我知道需要微代码/BIOS 更新才能完全实施此漏洞的缓解措施,但这不是我今天关心的问题。我的问题是,应该解决此 CVE 的 Windows 更新显然没有解决。
微软目前已发布了 2 个与此问题相关的补丁,第一个是KB4056890,于 1 月初发布。另一部,KB4057142,现已取代该补丁。我还为这台机器安装了最新的 BIOS,但这不是重点。
无论哪种情况,运行 powershell 的新 SpeculationControl cmdlet 都会显示一些令人担忧的事情:
Hardware support for branch target injection mitigation is present: False
Windows OS support for branch target injection mitigation is present: False
Windows OS support for branch target injection mitigation is enabled: False
Speculation control settings for CVE-2017-5754 [rogue data cache load]
Hardware requires kernel VA shadowing: True
Windows OS support for kernel VA shadow is present: True
Windows OS support for kernel VA shadow is enabled: True
Windows OS support for PCID performance optimization is enabled: True [not required for security]
BTIHardwarePresent : False
BTIWindowsSupportPresent : False
BTIWindowsSupportEnabled : False
BTIDisabledBySystemPolicy : False
BTIDisabledByNoHardwareSupport : False
KVAShadowRequired : True
KVAShadowWindowsSupportPresent : True
KVAShadowWindowsSupportEnabled : True
KVAShadowPcidEnabled : True
强调这两行:
Windows 操作系统是否支持分支目标注入缓解:False
BTIWindowsSupportPresent : 假
Powershell 的 Get-Hotfix cmdlet 验证是否存在最新版本的 spectre/meltdown 补丁:
<12:37:48 2 C:\> Get-HotFix
Source Description HotFixID InstalledBy InstalledOn
------ ----------- -------- ----------- -----------
...
BLAH-PC Update KB4057142 NT AUTHORITY\SYSTEM 1/26/2018 00:00:00
...
我的理解是,无论 CPU 微代码的状态如何,一旦应用了操作系统补丁,这些行都应该显示为“true”。我还尝试设置和取消设置提到的注册表项在本文中在“独立禁用针对 Spectre Variant 2 的缓解措施”标题下,根本没有效果。
为什么这个完全修补和更新的 Windows 10 副本仍然无法支持缓解 CVE-2017-5715?我该怎么做才能启用对这些缓解措施的支持?
答案1
我知道需要微代码/BIOS 更新才能完全实现此漏洞的缓解措施,但这不是我今天关心的问题。我的问题是,本应解决此 CVE 的 Windows 更新显然没有解决此问题。
这真的不应该是一个问题。英特尔撤下的微代码是缓解 Spectre 变体 2 所必需的,如果您的系统上没有安装它,则无法使用 Microsoft 发布的补丁。
根据我们自己的经验,系统不稳定在某些情况下会导致数据丢失或损坏。1 月 22 日,英特尔建议客户停止在受影响的处理器上部署当前微码版本,同时对更新的解决方案进行额外测试。我们了解到,英特尔正在继续调查当前微码版本的潜在影响,并鼓励客户持续查看他们的指导意见,以指导他们的决策。”
此时,您真的不想要英特尔编写的修复程序,如果您安装了当前修复程序,您会后悔的。 微软发布紧急周末更新以删除有缺陷的英特尔补丁
无论哪种情况,运行 PowerShell 的新 SpeculationControl cmdlet 都会显示一些令人担忧的事情。
这不应该令人担忧。这是您应该预料到的情况,因为系统尚未收到所需的微代码,无法使用特定指令在内核中执行缓解步骤。
我的理解是,无论 CPU 微码的状态如何,一旦应用了操作系统补丁,这些行就应该显示为“true”。为什么这个完全修补和更新的 Windows 10 版本仍然无法支持缓解 CVE-2017-5715?
您错了。2017-5715 需要微码。如果没有微码,相关更新所做的内核更改将无法使用,并会被忽略。
我可以做些什么来支持这些缓解措施?
在更新的固件发布后安装它,但请确保在英特尔发布更新的修复程序后才执行此操作。
我还尝试设置和取消设置本文标题“独立禁用针对 Spectre Variant 2 的缓解措施”下提到的注册表项,但完全没有任何效果。
如果您尚未修补固件,则此键将被忽略,因此可以使用所需的固件。如果您有 AMD 系统,也会使用它,但您没有。
为什么这个经过完全修补和更新的 Windows 10 副本仍然无法支持缓解 CVE-2017-5715?
英特尔撤回了所需的微码,微软发布了一个可选补丁,禁用了当前不稳定的微码。变体 2 无法通过内核更改本身来缓解。Spectre 变体 2 需要戴尔更新固件才能接收微码。英特尔目前尚未发布修复/更正的微码。