我不知道该说什么,关于侧通道缓解还是side channel mitigations

文章目录
  1. 1. 前言
  2. 2. Q:什么是侧信道攻击?
  3. 3. Q:侧信道攻击有什么类型?
  4. 4. Q:侧信道攻击有什么例子?
  5. 5. Spectre
  6. 6. Meltdown
  7. 7. Q:开启侧信道攻击缓解措施具体能够对什么攻击生效?
  8. 8. Q:开启侧信道攻击缓解措施是否有必要?
  9. 9. Q:开启侧信道攻击缓解措施之后虚拟机性能会下降多少?
  10. 10. 后记

前言

在新配置的电脑中安装vmware并装上虚拟机之后,出现了“您正在运行的此虚拟机已启用侧通道缓解。侧通道缓解可增强安全性,但也会降低性能。”的一个提示,这勾起了我的好奇心。而在中文网络上搜索了一下发现没有太多可以参考的内容,于是决定自己搜集一下资料做个小总结。

在进入正题之前,首先额外说一个小坑,是关于开启amd-v虚拟化的提示,不开启的话无法使用虚拟机,提示如下:

此主机支持 AMD-V,但 AMD-V 处于禁用状态。
如果已在 BIOS/固件设置中禁用 AMD-V,或主机自更改此设置后从未重新启动,则 AMD-V 可能被禁用。
(1) 确认 BIOS/固件设置中启用了 AMD-V。
(2) 如果此 BIOS/固件设置已更改,请重新启动主机。
(3) 如果您在安装 VMware Workstation 之后从未重新启动主机,请重新启动。
(4) 将主机的 BIOS/固件更新至最新版本。
此主机不支持“AMD RVI”硬件辅助的 MMU 虚拟化。
模块“CPUIDEarly”启动失败。
未能启动虚拟机。

这里用一下csdn的图

在AMD-V上我折腾了一阵子,主要是开启SVM功能之后整个物理机变得非常不稳定,时不时蓝屏。最后在关闭了Hyper-V后解决了这些问题。

说回到主题,在vmware中每次打开虚拟机都会出现一个提示:

您正在运行的此虚拟机已启用侧通道缓解。侧通道缓解可增强安全性,但也会降低性能。
要禁用缓解,请在虚拟机设置的“高级”面板中更改侧通道缓解设置。有关更多详细信息,请参阅 VMware 知识库文章 79832,网址为 https://kb.vmware.com/s/article/79832。

这里再用一下windowsloop的图

可以看出中英文的区别,中文更接近于机翻(习惯了,vmware的官网知识库都是机翻的),其中的”侧信道缓解”在英文中是”side channel mitigations”,大家都反馈“每个词都没错,但不是最佳选择,凑一块语法也不对。就是不知所云,不走心的机翻的感觉。”我也觉得翻译为侧信道攻击缓解措施更贴切。

接下来的内容我会以问答形式来表达。

Q:什么是侧信道攻击?

在这里我们使用wikipedia上的定义,在密码学中,旁道攻击又称侧信道攻击、边信道攻击(英语:Side-channel attack)是一种攻击方式,它基于从密码系统的物理实现中获取的信息而非暴力破解法或是算法中的理论性弱点(较之密码分析)。例如:时间信息、功率消耗、电磁泄露或甚是声音可以提供额外的信息来源,这可被利用于对系统的进一步破解。某些侧信道攻击还要求攻击者有关于密码系统内部操作的技术性信息,不过,其他诸如差分电力分析的方法在黑盒攻击中效果明显。许多卓有成效的侧信道攻击基于由保罗·科切开拓的统计学方法。

Q:侧信道攻击有什么类型?

根据借助的介质,旁路攻击分为多个大类,包括:

  • 缓存攻击,通过获取对缓存的访问权而获取缓存内的一些敏感信息,例如攻击者获取云端主机物理主机的访问权而获取存储器的访问权;
  • 计时攻击,通过设备运算的用时来推断出所使用的运算操作,或者通过对比运算的时间推定资料位于哪个存储设备,或者利用通信的时间差进行资料窃取;
  • 基于功耗监控的旁路攻击,同一设备不同的硬件电路单元的运作功耗也是不一样的,因此一个程序运行时的功耗会随着程序使用哪一种硬件电路单元而变动,据此推断出资料输出位于哪一个硬件单元,进而窃取资料;
  • 电磁攻击,设备运算时会泄漏电磁辐射,经过得当分析的话可解析出这些泄漏的电磁辐射中包含的信息(比如文本、声音、图像等),这种攻击方式除了用于密码学攻击以外也被用于非密码学攻击等窃听行为,如TEMPEST攻击(例如范·埃克窃听、辐射监测);
  • 声学密码分析,通过捕捉设备在运算时泄漏的声学信号捉取信息(与功率分析类似);
  • 差别错误分析,隐密资料在程序运行发生错误并输出错误信息时被发现;
  • 数据残留,可使理应被删除的敏感资料被读取出来(例如冷启动攻击);
  • 软件初始化错误攻击,现时较为少见,行锤攻击是该类攻击方式的一个实例,在这种攻击实现中,被禁止访问的存储器位置旁边的存储器空间如果被频繁访问将会有状态保留丢失的风险;
  • 光学方式,即隐密资料被一些视觉光学仪器(如高清晰度相机、高清晰度摄影机等设备)捕捉。
    所有的攻击类型都利用了加密/解密系统在进行加密/解密操作时算法逻辑没有被发现缺陷,但是通过物理效应提供了有用的额外信息(这也是称为“旁路”的缘由),而这些物理信息往往包含了密钥、密码、密文等隐密资料。

Q:侧信道攻击有什么例子?

在vmware中给的那个链接里我们可以看到这么一句:

The root cause of the performance degradation is most likely due to mitigations for side channel attacks such as Spectre and Meltdown.

我们就以SpectreMeltdown为例。

Spectre

幽灵(英语:Spectre)是一个存在于分支预测实现中的硬件缺陷及安全漏洞,含有预测执行功能的现代微处理器均受其影响,漏洞利用是基于时间的旁路攻击,允许恶意进程获得其他程序在映射内存中的资料内容。Spectre是一系列的漏洞,基于攻击行为类型,赋予了两个通用漏洞披露ID,分别是CVE-2017-5753(bounds check bypass,边界检查绕过)和CVE-2017-5715(branch target injection,分支目标注入),于2018年1月随同另一个也基于推测运行机制的、属于重量级信息安全漏洞的硬件缺陷“Meltdown”(熔毁)一同公布。由于该缺陷是推测运行机制导致的,加上不同处理器架构对推测运行又有不同的实现方式,因此这个缺陷无法获得根源上的修复而只能采取“见招拆招”式的方法防范,而且因机制所致,各种解决方案还有不可预料的性能下降。

CVE-2017-5753依赖于运行中的即时编译(JIT)系统,用于Javascript的JIT引擎已被发现存在此漏洞。网站可以读取浏览器中存储的另一个网站的数据,或者浏览器本身的内存。对此Firefox 57.0.4(部分)及Chrome 64通过为每个网站分配专用的浏览器进程来阻挡此类攻击;操作系统则是通过改写的编译器重新编译以阻挡利用该漏洞进行攻击的行为。

针对CVE-2017-5715,除了软件层面上进行修改以外,处理器也需要通过微码更新来阻挡这类攻击。

随着幽灵缺陷派生的安全漏洞(攻击手段变体,包括CVE-2018-3693、CVE-2018-3640、CVE-2018-3639等)被逐一发现,英特尔等CPU开发商不得不在修复既有缺陷的同时资助第三方信息安全团队继续发掘潜在的缺陷以破财消灾。

Meltdown

熔断(英语:Meltdown),也译崩溃,编号CVE-2017-5754,正式名称为“Rogue Data Cache Load”,常译作“恶意数据缓存加载”,是一个存在于英特尔大部分x86/x86-64微处理器、部分IBM POWER架构处理器以及部分ARM架构处理器中的关于推测运行机制的硬件设计缺陷及安全漏洞。该缺陷使得低权限的进程无论是否获取特权,均可以获取受高权限保护的内存空间中的资料,漏洞利用是基于时间的旁路攻击。2018年1月,该缺陷随另一个基于推测运行机制的重量级信息安全漏洞、硬件缺陷“Spectre”(幽灵)在通用漏洞披露中公布。

由于英特尔处理器及IBM POWER处理器均在市场上占据极大的份额(出现缺陷的ARM处理器在缺陷被发现时尚未正式面市),这种涉及信息安全的硬件缺陷影响范围甚广,包括几乎整个x86、POWER服务器领域、几乎整个小型主机及大型主机市场、个人电脑市场等都无一幸免,另外该缺陷的危险程度之高(无需特权即可访问敏感资料所在的存储器空间),曾一度令信息安全人员及机构怀疑缺陷的真实性,而提前公布这些缺陷还极有可能引发全球性的信息安全灾难,因而选择先与处理器厂商及核心客户联系协商备妥修补方案再另行公布。目前该硬件缺陷可通过软件实现规避,包括Linux系、Android、OS X/macOS、Windows等等都有相应的修复程序(像是Linux的内核页表隔离技术),但是软件规避将导致处理器性能的显著下降。而从根本上修复该缺陷的方法(包括修复“幽灵”缺陷)是重新设计处理器的微架构,为此英特尔、IBM及ARM都将新处理器微架构的推出时程大幅押后。

Q:开启侧信道攻击缓解措施具体能够对什么攻击生效?

这是个很有趣的问题,我查遍了整个vmware的知识库(看英文真的好痛苦),也没找到它对自己的这个功能的详细解释。但是勇敢狐狸不怕困难在我的查找下,还是能够从侧面对这个问题做出一些回答的。

根据vmware知识库另一篇讲如何缓解MDS漏洞的文章中中,我们可以看到vmware在侧信道攻击方面的防御努力。MDS是一个典型的侧信道攻击,它所涉及的CVE漏洞有CVE-2018-12126、CVE-2018-12127、CVE-2018-12130 和 CVE-2019-11091等。

而在英特尔的这个链接中中,我们可以看到这么一句:

对于那些未能在硬件中解决 MDS 的产品,英特尔将与原始设备制造商 (OEM) 在定期更新的流程中发布处理器微码更新 (MCU)。这些将与操作系统和虚拟机管理程序软件的对应更新相结合。

我觉得可以认为vmware和inter有**交易这个更新已经在vmware中实现了。

Q:开启侧信道攻击缓解措施是否有必要?

虽然很多安全观点都是一个仁者见仁智者见智(说人话就是随便你)的问题,但是对于侧信道攻击,我还是觉得它不是一个常规意义上的严重性的漏洞。

从使用难度上来说,侧信道攻击技术含量很高,这意味着它的使用门槛也很高;从易用性上来说,vmware默认开启这个功能,大部分人不会想着去关闭它,所以即使真有一个能够利用这个漏洞的工具,它也很难找到目标;

更何况在英特尔的文章中对于MDS有过这么一个看法:

在研究环境的受控条件外利用 MDS 漏洞是一项复杂的工作。MDS 漏洞已被行业标准的“通用漏洞评分系统 (CVSS)”划分为低到中级严重性,而且值得注意的是,并没有任何实际利用这些漏洞的报告

虽然在quore上依然有一些工程师认为侧信道攻击是一个非常被低估的漏洞,但是…你懂的(耸肩)。

Q:开启侧信道攻击缓解措施之后虚拟机性能会下降多少?

我知道这个问题很多人关心,但是这是个很不好回答的问题…

在reddit、csdn、博客园、V2EX论坛上,你可以找到一些对于侧信道攻击的吐槽,例如说如果不关闭,自己的虚拟机会非常卡;或是吐槽这个功能会在创建虚拟机时默认开启导致自己每次都要手动关闭(我直接关闭了提示假装它不存在);也有人说它无关紧要…

根据在英特尔的文章中的解释,MDS的漏洞缓解策略只会影响不到5%的性能,我们有理由相信vmware不会给自己挖一个特别影响性能的坑,所以嘛…还是开着吧。

后记

这个文章写于上班摸鱼期间,大概花费了我一整个下午。如果你读完了全文却依然很迷惑,那你首先不该埋怨我,让我们一起把锅丢给不完整的vmware知识库吧而应该重新理解其中的几个概念:

  • side channel mitigations
  • 侧信道攻击(旁路攻击)
  • MDS(Microarchitectural Data Sampling)

如果依然存有迷惑,欢迎讨论。