太长了,不看版本

你用的是高性能CPU,所以我可以窥探你的密码? 重点是什么? 这是一位 NGA 用户的比喻。 请注意,这是一个比喻,省略了很多细节:

1.肯德基有卖薯条、鸡块、汉堡、可乐。

2、李x禄去肯德基点了一个汉堡,吃完就走了。

3.狗仔队a 狗仔队在李新禄身后排队,对点餐小姐说:我要和李新禄一样的点单。

4. 点餐的女士说,很抱歉您前面还有人,请稍等。 但后厨听到了,做了一个汉堡。

5、轮到狗仔A点餐了,点餐小姐说:你不能这样点餐,侵犯了人的隐私,保安抄送这个狗仔!

6、狗仔b在狗仔a后面对小姐姐说:薯条、鸡块、汉堡、可乐各点。 如果你饿死了,先给我哪一个。

7.b 狗仔队先拿到了汉堡!

8.b 狗仔队发现李x路今天去肯德基买了汉堡!

计算机运行时,所有使用的数据都要经过内存。 这里不仅有你重要的银行密码,还有你有意无意打开的莫名其妙的小网站小程序。

这些来自外部的野生子程序怎么可能接触不到关键信息呢?

当今的计算机设计有多层防御,其中关键的一层发生在计算机的计算核心 – CPU 中。 CPU将负责检查程序是否在不属于它的领土上探测过大脑。 如果它发现自己触碰了其他人的数据,就会开始拍摄过程。 设计者认为,通过这种方式,可以竖起一堵高墙,将每个程序隔离在自己的小屋中。

但他们错了。 这堵刚刚暴露出来的高墙上,有一个非常隐蔽的缺口。 整个行业都震动了。

这个缺口虽然是隐蔽的,但却是危害极大的。 研究人员通过它成功窃取了浏览器保存的网站密码。 幸运的是,窃取密码的过程非常复杂,以至于现在坏人可能还没有时间真正利用它来作恶; 不幸的是,弥补这一差距极其困难,并且似乎在计算机明显变慢的情况下付出了沉重的代价。

谁也没想到,2023年伊始就迎来了如此大的消息。

过程

2023年的最初几天,Linux系统核心的例行更新被发现在某些场合出现巨大的性能下降。 这一反常现象引发了少数业内人士的关注。 linux核心部署在大量的服务器生产环境中,并且特别注重性能。 因此,这个补丁的仓促发布以及微软和苹果Mac OS的暧昧反应引发了越来越多的讨论。

北京时间1月3日上午,某知名科技新闻网站爆料称,[1],这个针对Linux的补丁是修复巨大CPU硬件安全漏洞的最后手段,并指出罪魁祸首是当今世界排名第一的CPU。 霸主英特尔,这个消息发布后,开始在IT圈广泛传播。 由于该消息具有相当的技术背景,并附有实测数据,因此具有较高的说服力,使得相关讨论和猜测愈演愈烈。

北京时间1月4日上午,英特尔终于按捺不住,发布了新闻稿[2],这意味着这些传闻有些夸大,但并没有掩盖安全漏洞确实存在的事实。 几个小时后,谷歌安全团队 Zero 正式宣布了这两个令人震惊的新漏洞,现在被称为 () 和 ()。

虚拟机cpu序列号修改_职称信息可以修改吗_cpu信息可以修改吗

和 的官方标志

此时大家都知道,该具体漏洞已于2023年6月-7月左右由多个团队独立发现,相关研究人员已通知Intel、AMD、ARM等著名CPU设计(制造)公司以及微软、苹果、linux core开发团队和其他相关组织和团体在所有内部人员之间形成了默认密码[3]。 许多参与者原本计划等到一两周内所有补丁和更新都准备就绪后再公开宣布,没想到一个不知情的网站从 Linux 开源社区的邮件列表中发现了线索,从而引发了一场公关提前危机,因此英特尔也决定在1月4日上午提前发布消息,随后谷歌的研究人员也打破了沉默,推出了早已准备好的漏洞介绍网站和相关论文[4],一切就都准备好了公开。

虚拟机cpu序列号修改_职称信息可以修改吗_cpu信息可以修改吗

我们正在经历什么

可以毫不夸张地说,我们遇到了计算机架构发展史上最大的硬件漏洞,而且很可能没有一个。

目前可以确定的是,“熔断”已经直接击穿了英特尔、微软、Linux、苹果Mac OS联合设立的多重安全防护。 使用一段不是特别复杂并且运行在英特尔处理器上的代码,你可以不是耸人听闻的猜测,而是已经实现并通过视频向世人展示的事实,甚至源代码都是可用的下载[5]。

另一个漏洞“幽灵”则更加难以预测。 它还可以悄无声息地穿透操作系统内核的自我保护,从用户运行空间中读取操作系统内核空间中的数据,并与“熔断”进行比较。 “更可怕的是,它工作在Intel/AMD/ARM三大主流公司的CPU上。可以说,实际上所有PC/手机/服务器都受到影响,而且很难通过软件修复”通过杀毒软件来对抗也是不可能的,而且考虑到这几年CPU出货量几亿颗,已经售出的芯片无法通过微码更新来完美解决,所以也就名副其实了。多年来一直存在安全隐患,这大概就是“鬼”这个名字的由来。

为什么之前没有发现该漏洞?

这两个漏洞具有相同的特征,利用了现代高性能微处理器的关键特征——推测执行和乱序执行。 能够高速运行日益复杂的应用程序的核心支柱。

推测执行技术是指为了提高性能,处理器会提前猜测接下来需要执行什么动作,然后提前执行。 如果发现猜测错误,则会回滚到正常状态。 常用的投机执行技术可以达到80%-90%以上的投机准确率。 需要指出的是,推测执行技术是一大类技术的总称,包括分支预测、预取、推测内存访问、缓存未命中重叠/乱序处理(MSHR)等。 漏洞使用分支预测、推测内存访问和MSHR这三个功能。

乱序执行技术是指当处理器遇到需要暂停的事件时(例如需要加载的数据缓存未命中,需要在高延迟内存中查找),处理器可以跳过暂停事件并继续提前执行。 操作说明。 同样,如果在前瞻执行期间发生错误,也需要回滚到正常状态。 漏洞利用了乱序执行功能。

虚拟机cpu序列号修改_职称信息可以修改吗_cpu信息可以修改吗

乱序执行的微架构框图。 使用了图表的一部分, 使用了图表的一部分。

乱序执行技术最早出现在 20 世纪 60 年代的 CDC 6600 和 IBM 360/91 上。 乱序执行技术的两位关键贡献者 James E. (1994) 和 (1997) 也获得了计算机系统结构学术界的最高荣誉——奖。 至于第一个推测执行模型,由于变种技术太多,无法验证。 最早可验证的分支预测设计是 James E. Smith 于 1981 年发表的。 做出了杰出贡献,于 1999 年荣获 – 奖[6]。

可见,这些技术都是经过数十年开发和验证的成熟技术。 之前曝光的Bug只是导致程序错误的功能性Bug。 改进成倍增加。 例如,模拟器上的验证表明,关闭乱序执行会损失大约一半的性能,关闭推测执行中的分支预测会带回处理器最大指令吞吐量的理论上限。 20世纪90年代的水平,因此这两项技术已经成为高性能微处理器结构中当之无愧的支柱。 根据推测执行和乱序执行的框架设计,一个称为重排序缓冲区(ROB)的组件将负责建立推测状态和正常状态之间的边界。 在ROB的保护下,推测执行(分支预测)和乱序执行状态信息将不会被上层感知。 这是每本计算机体系结构教科书上都写的内容,并被一代又一代的工程师所使用。

现在,这个内容已经被彻底改写了。

漏洞原理

虽然指令可以乱序执行,但为了保证乱序执行的效果不影响机器状态,乱序执行过程中出现的异常错误和安全检查违规必须等到结果出来最终提交指令并确认推测状态正确。 如果发生错误,指令结果将被丢弃,异常处理完成后将恢复到正常状态。 如果乱序执行时指令处理异常,则代码异常发生的位置与实际执行位置不符,破坏了乱序执行不得影响程序状态的规则,从而毁掉了编码者他们努力编写代码感知编程模型。 如果指令通过检查并确认正确,则将该指令的运算结果更新到高速缓存和相关寄存器中,以便软件读取。 因此,指令执行和最终提交检查之间存在一个可用的时间窗口。 根据目前的乱序执行窗口和处理器执行频率,大约需要十几纳秒到几十纳秒。 它可以继续提前执行大约几十到一百多条指令。 这个时间窗口成为 的攻击点。

虚拟机cpu序列号修改_cpu信息可以修改吗_职称信息可以修改吗

CPU并不是顺序执行代码,而是提前执行后面的代码。

正常状态下,对受保护敏感区域的访问会被授权认证过程直接拒绝,但在这个小时间窗口内, 故意插入指令来访问一些本应受保护的关键区域,而这些敏感数据会被引用到处理器核心内部的寄存器参与计算。 直到这一步,ROB仍然保持着高级执行状态——正常状态的边界,整个系统仍然处于保护之中,因为虽然处理器内部提到了敏感数据,但还没有经过安全检查和异常检查确​​认,所以它的值只能用于临时计算,不能用来参与正常计算。 它不会更新到架构的可见寄存器和缓存中,并且不能被上层软件读取。 当检查到它的位置时,CPU就会发现问题并及时停止,这样就不会有问题了。 但这是整个漏洞利用中最巧妙的一步:时差攻击。

现在敏感数据已经被提取到CPU核心参与临时计算,就可以作为内存访问的路标k,将内存中的第k块数据加载到缓存中。 这可能需要数百个时钟周期,即大约数十纳秒。 该时间在乱序执行允许的窗口范围内。 如果窗口范围不够大,可以采用其他手段来扩大窗口。 但最终乱序执行指令还是要走到提交检查这一步。 CPU检查发现该敏感数据被访问,就会丢弃相应指令的结果。 k的值被丢弃后,恶意代码无法读取k的值。 然而,这里缺少一个关键点。 乱序执行时加载到高速缓冲存储器中的第k块数据尚未被清理。 这样后续代码就可以轻松扫描所有相关的内存地址了。 缓存中存储的数据的访问延迟与内存中存储的数据不同。 如果扫描第 10 个内存块,就会找到它的响应。 速度很快,可以确定之前读取的k值为10。

另一个幽灵漏洞的原理与此类似,但它采用推测执行(主要是分支预测)指令,执行与安全检查之间的时间差,在推测执行状态下,此时漏洞利用会触发权限违规的特点不立即被勒死的方法是执行一些恶意代码将敏感数据加载到CPU寄存器中参与临时计算,然后利用这些敏感数据制作内存地址加载到缓存中,然后触发后续的时间差攻击。

效果及防护

和 使用乱序执行和推测执行来绕过权限检查等安全措施,并获得对操作系统内核甚至其他程序内容的访问权限。 其中比较容易触发利用,所以有大家见过的窃取浏览器密码的例子,而漏洞则需要满足一定的条件才能触发被攻击目标程序的分支入口点结构,难度相对较大,所以目前尚未发现基于漏洞的信息泄露实例。 需要指出的是,和漏洞都只能读取敏感信息,无法修改(因为乱序执行/推测执行状态下的修改在检查失败时会被丢弃),这是一个幸事在不幸中。

由于该攻击属于硬件漏洞,所以市面上所有主流操作系统,包括linux、Mac OS都在攻击范围之内,而且很多隔离性不够的半虚拟化解决方案,例如LXC,也受到影响。 因此,该漏洞将极大地影响云计算服务提供商。 目前,阿里巴巴、腾讯等国内大型云服务商均已公布补丁计划。

从行业厂商的角度来看,虽然Intel、AMD、ARM各有各的说辞[7][8][9],但从专业从业者的角度来看,Intel同时受到和的影响也是妥妥的。 然而,AMD和ARM在熔毁漏洞面前只是暂时安全。 的攻击原理同样适用于 AMD 和 ARM,但由于分支预测器的结构不同、管道长度较短、可利用的时间窗口不大等原因,没有像 Intel 那样被 攻破。 另一方面, 对分支预测器注入攻击。 目前各厂商的分支预测器都没有很好的安全防护,所以Intel、ARM、AMD都会受到影响,而分支预测器就是为了提高性能而设计的。 部分地址哈希的模糊匹配模式使得相关防御很难在不损害性能的情况下修补漏洞。

针对漏洞,现有的技术手段主要是通过软件层尽可能将内核页表与用户页表隔离。 该技术的一种实现称为 ,其变体已被主要操作系统采用,称为 。 针对漏洞的临时补救措施。 该技术方案会增加用户态和内核态之间的切换开销。 快速系统调用的初步测试证明,内核系统调用的速度降低到原来速度的42%,利用现代处理器的PCID特性优化后,可以恢复到57%的水平[9]。 具体应用程序的下降取决于用户程序与内核交互的频率。 linxu开发者的测试结果在10%到20%+之间,PCID可以弥补大约5%-7%的性能。

目前,对于漏洞还没有很好的防御措施。 Linux发行版之一的suse最近发布的安全更新显示[10],AMD和Intel已经向相关操作系统厂商推送了微码更新。 此微代码更新将关闭分支预测以暂时阻止 。 由于分支预测对性能影响巨大,即使只关闭部分分支预测,也很容易造成两代左右的性能下降。 如果整个分支预测器关闭,CPU性能将恢复到2000年之前的水平。相关从业者正在继续跟进是否会应用此更新。

参考

好了,今天的主题就讲到这里吧,不管如何,能帮到你我就很开心了,如果您觉得这篇文章写得不错,欢迎点赞和分享给身边的朋友。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注