历史上的今天
返回首页

历史上的今天

今天是:2025年03月27日(星期四)

正在发生

2018年03月27日 | 如何评量漏洞解决方案效能的降低程度?

2018-03-27 来源:21IC中国电子网

自从 1 月 Google Project Zero 团队揭露 Intel CPU 的 Meltdown 缺陷,以及所有现代 CPU 都有的 Spectre 缺陷以后,影响面之广人人自危。由于是硬件缺陷,各大厂商也只能努力推出修补更新加以弥补。几个月过去了,相关资讯似乎不再常见,然而真的没问题了吗?解决方案都很理想吗?该如何精准评量效能的降低程度呢?



目前各系统的安全更新主要是从系统软件面去做处理,理论上会让程序有 2% 到 30% 不等的降速状况。那实际影响到底有多大?知名网络串流影片公司 Netflix 表示,针对 Meltdown 的 Linux 安全修补预估让串流效能降低了 0.1%~6% 之间,而这还只是做了 4 个 Meltdown patch 修补的其中之一而已。


Netflix 的经验与评估


布伦丹·格雷格(Brendan Gregg)是 Netflix 工程师,同时也是 dTrace 专家、硬盘领域知名人士,他制定了一个“微标竿”(microbenchmark)来评估针对 Meltdown CPU 设计缺陷的 Linux 核心分页表隔离(KPTI)修补,并提出精准可管理的执行效能下降预测,格雷格表示他的工作以下列 5 个因素来评估修补所产生的开销(overhead):


系统呼叫率(Syscall rate) :数量多到某种程度才会有可观的明显影响,一颗 CPU 每秒有 5 万个系统呼叫的情况下,额外开销可能有 2%,伴随着系统呼叫率的增加而这个数字又会再上升。在 Netflix,除了资料库以外,高系统呼叫率在云端中不常见。


前后文切换(Context switches) :这个增加的额外开销类似系统呼叫率的部分,格雷格认为前后文切换率可以简单地添加到系统呼叫率里用于后续的评估。


分页错误率(Page fault rate) :错误率高时,还会增加一点额外开销。


存储器工作集大小(热资料) :Working set size(hot data),超过 10MB 资料量存取,会因为 TLB(CPU 的页表快取)冲洗,导致额外开销。这可以将 1% 的开销(系统呼叫循环)变成 7%。这个很重的额外开销可以透过两个方法降低:1. Linux 4.14 开始的 pcid;2. 使用巨大的分页。


快取存取类型(Cache access pattern) :有些存取类型从快取良好到快取不良转变时,会让额外开销遽增,最糟糕可能会额外增加 10% 的额外开销,例如 7% 的开销增加到 17%。


格雷格的结论是,在某些情况下,软件修补所增加的开销,高达 800%,但如果对系统做精细的调校,对效能的影响不至于让人那么无法接受。Gregg 大幅降低修补带来的新程序码带给 Linux 的额外开销,Netflix 使用的是 AWS 基础设施 ,格雷格的结论是:基于系统呼叫率,KPTI 的开销在 0.1%到 6% 之间,他有自信把开销降到 2%。


他还考虑到他的雇主 Netflix 使用的 AWS 基础设施的影响,并得出结论“由于我们的系统调用率,KPTI 的开销在 0.1% 到 6% 之间,我预计我们会把它降低到低于 2% 调整”,这个成绩虽然不错,格雷格还没有估计进修补对 hypervisors 跟 microcode 对效能损失的影响。


使用 Linux 服务器的业者(包含一般使用者)可以针对电脑的使用情境重编核心自行调整,降低修补所带来的效能下降问题,但对于广大一般 Windows、MacOS X 的电脑使用者而言,就没这么幸运了,没有漏洞的 CPU 才是釜底抽薪的方案 。


Intel 提出分区系统的缓解修补


Intel 在这次的 CPU 漏洞风暴可以说是跌个满头包,不断被动的应付。终于在 3 月 15 日上午,Intel 宣布针对 Meltdown 和 Specter v2 漏洞,提出分区系统的硬件缓解(mitigations)修补,将会实做在 Xeon server/HEDT platform 下一代的 Cascade Lake,以及第 8 代酷睿(Core)处理器里。


要特别注意的是,Intel 在硬件做出来的改变只能缓解 Meltdown(Intel 称为“variant 3”)和 Specter v2,是透过新的分区系统减轻了漏洞,同时改善了行程(process)和特权级别(privilege-level)分离,类似“防护墙”的做法。


Intel 2018 的 Meltdown 与 Spectre 缓解计划如下:


Meltdown :以硬件解决


Spectre variant 1 :绕过边界检查(bounds check bypass)的漏洞,目前只能以软件解决


Spectre variant 2 :分支目标注入(branch target injection)漏洞,以硬件解决

很不幸的是 Spectre variant 1 目前还只能靠各软件开发人员来解决,而 Spectre 最被大家担心的其实一直都是 v1,整个产业的研究人员对 v1 还没有深度的理解,不知如何处理,好在 Specter v1 只能用于攻击同级的行程而无法攻击管理级的行程,也就是说黑客能透过程序穿透进一般使用者等级的程序与资料,而无法穿透进更安全的系统管理层级。


虽然是不全面的缓解,但有总比没有好。此外,Intel 已经针对过去 5 年发布的所有 CPU 产品提供 microcode 更新,甚至 Core 架构系列,第二代的 Sandy Bridge 以后都有提供,Intel 还计划继续处理最久达 2007 的 cpu 产品的 microcode 更新,包含第一代酷睿处理器(Nehalem / Gulftown / Westmere / Lynnfield / Clarksfield / Bloomfield / Arrandale / Clarkdale)和 45nm Core 2 处理器(Penryn / 的 Yorkfield / Wolfdale 处理器 / Hapertown) ,但是 65 纳米 Core 2(Conroe 等)不在内,然而最大的课题应该是:主机板业者愿不愿意提供采用旧 CPU 的机板 BIOS 更新?品牌电脑业者针对过保固的产品是否愿意提供更新呢?


毕竟是硬件有缺陷,总是要修补,但追根究底还是要改良硬件设计来彻底解决 Meltdown 与 Spectre 的漏洞。Intel 最终可能在 2018 末、2019 初发布的第九代酷睿处理器架构 Ice Lake,透过改变设计解决上述问题。在此之前,终端消费者还是要关注好自身的权益,请原购买产品的公司提出解决方案。

推荐阅读

史海拾趣

DAPAudio公司的发展小趣事

DAPAudio公司自成立以来,一直将技术创新作为公司发展的核心动力。在音频处理领域,DAPAudio率先推出了基于先进算法的数字音频处理器,其独特的音质优化技术迅速赢得了市场的认可。随着技术的不断迭代和更新,DAPAudio的产品逐渐在高端音频市场占据了一席之地。

EDI [Electronic devices inc.]公司的发展小趣事

随着科技的进步,Eclipse Magnetics公司开始关注航空航天领域的需求。他们发现,在复杂的航空系统中,精确的磁性控制至关重要。于是,公司投入大量研发资源,成功开发出一系列高性能的磁性产品,为航空航天领域提供了可靠的解决方案。这一突破不仅巩固了Eclipse Magnetics在电子行业中的地位,还为公司赢得了众多知名客户的信任。

意华(CZT)公司的发展小趣事

为了实现公司的长远发展,意华于2010年开始筹备上市工作。经过多年的准备和努力,意华成功在资本市场上市,为公司的发展注入了新的活力。上市后,意华通过资本市场融资和资本运作,加速了公司的扩张和技术创新步伐。同时,公司也更加注重规范运作和透明度提升,赢得了投资者的信任和支持。

C&H Technology公司的发展小趣事

为了进一步提升竞争力,C&H Technology积极寻求与其他企业的战略合作。公司与一家知名的手机制造商签订了长期合作协议,共同开发定制化芯片解决方案。同时,C&H Technology还与一家领先的半导体生产企业建立了战略联盟,共同研发新型半导体材料和生产工艺。这些战略合作不仅为公司带来了更多的商业机会,也提升了公司的技术水平和品牌影响力。

Broyce Control公司的发展小趣事

进入21世纪,Broyce Control已经成为电气和电子产品设计、制造和供应领域的佼佼者。公司不仅在技术上持续创新,还注重与行业伙伴的合作与交流。通过参与国际标准的制定和推广,Broyce Control逐渐在行业内树立了领导地位。同时,公司还积极承担社会责任,推动可持续发展和环保理念的实践,为行业的健康发展做出了积极贡献。

Dongguan Jingyue Electronics Co Ltd公司的发展小趣事

Dongguan Jingyue Electronics Co Ltd非常重视人才战略和团队建设。公司深知人才是企业发展的根本,因此不断加大对人才的投入力度。通过引进优秀人才、加强员工培训、建立激励机制等方式,公司打造了一支高素质、专业化的团队。这支团队不仅为公司的发展提供了有力支持,也为公司的创新和发展注入了新的活力。

问答坊 | AI 解惑

Windows CE中的命令提示行的和PC机上的XP中的有啥区别?

网上说:     Windows CE和Windows XP Embedded存在诸多本质区别。首先,Windows CE是一款全32位、Unicode操作系统,它不支持MS-DOS或Windows 3.x应用。         这里说的MS-DOS不就是台式机上的命令提示行中DOS ...…

查看全部问答>

串口通讯中的DCB结构

串口通讯中的DCB结构 我看很多程序,它里面使用了BCD结构,但是BCD结果不是在winbase.h中定义的吗, 程序里面并没有#include \"winbase.h\",但是编译确实成功的,为什么? 我是学了VC现在学EVC,觉得有点困扰,EVC很多库函数都不一样了,怎么找 ...…

查看全部问答>

求关于嵌入式软件低功耗的论文

急求关于软件低功耗的文章!!! 搜到很多都是收费的,要不就是类似的,拜托各位高手帮帮忙!!! 谢谢了!!!…

查看全部问答>

bootloader中的一些问题

小弟关于bootloader中有几个问题不清楚,麻烦兄弟们帮忙解释下, 1,其中涉及到内存映射,它的作用是什么? 2,cpu又是如何区分flash和ram的地址呢,难到有控制flash和ram地址的寄存器吗? 3,如果flash的os要加载到ram中执行,又是如何实现拷贝的呢,如 ...…

查看全部问答>

急求Lcd 中“-”的编码?

急求Lcd 中“-”的编码? 顺便问下Lcd中是怎样进行汉字编码的!…

查看全部问答>

wince 6和VS2005 共存问题

   在安装了wince6以后发现vs2005的本地帮助文档不能用了,在修复了本地文档之后,原来的wince6项目又不能用了,在修复wince6,本地文档继续不能用。太郁闷了,大家有什么解决办法啊?…

查看全部问答>

EVC环境下为什么delete对象无法释放内存

我写了一个很简单的程序,窗口上就两个按钮,用于动态分配和释放内存.打开WinCE.net的SystemProperties的Memory选项卡查看内存情况,发现分配可以,但按了释放内存的按钮却不能释放内存,不知原因,望高手指点!…

查看全部问答>

求救,STM32F101VCT6下载出现问题,

请教各位一个问题,我们现在用STM32F101VCT6的MCU,用IAR J-LINK下载出现一个错误提示: “Could not write CPU register MSP:Written:0xFFFFFFFF,Read 0xFFFFFFFC” 是什么原因的呢??…

查看全部问答>

24L01的问题

本帖最后由 paulhyde 于 2014-9-15 09:01 编辑 我用NRF24L01传输温度,开始温度还随时能变化,变几下就不动了,用手捏也不动,需要复位才可能正常工作,有时候复位好多次才行,这是为什么?(用其他方法测试也都要复位,是nrf24L01出现什么问题了 ...…

查看全部问答>

vc33怎么用c语言实现扩展精度?

vc33中float是32位,十进制是8位有效位。如果8位有效位不够用,怎么用扩展精度使有效位更多?…

查看全部问答>