作者: 愤鸟之眸 时间:2018年2月28日 分类板块:硬件漫谈
本篇文章发表之后,纯硬件栏目将会停止稳定更新(其实一直没稳定过)。
我,愤鸟,对于硬件还是sometimes naive,还要好好学习以提高自己的姿势水平,届时硬件栏目将会恢复稳定更新。
当然,我也不会推出编辑部,不再发文,下个月,我的新坑将会上线,大家拭目以待吧。
下面是本期文章正文。
福无双至,祸不单行,正值岁末年初之际,Intel用户得到了一个大礼–接连爆出的两个漏洞。
是的,你没听错,这两个漏洞都是 Intel 平台爆出的“硬件”漏洞,准确的说,是两组漏洞,一组是 Intel ME的固件漏洞,另一组是代号为Meltdown和Spectre 的真硬件漏洞。
没想到吧,看似坚不可摧,固若金汤的电脑硬件也会有漏洞。其实,硬件有漏洞并不奇怪,当年的奔腾CPU算数都会出错,硬件出现漏洞又有什么好奇怪的呢?
接下来,就让我们逐一看看这两组漏洞。
1.Intel 管理引擎(ME)、服务器平台服务(SPS)和信任执行引擎(TXE)存在多个安全漏洞。(来源CNNVD,CNNVD转自Freebuf)
ME原本的设计初衷是,网络管理员可以远程登陆服务器,修复问题重装系统,不过如果电脑真的出现了严重故障,恐怕这样也于事无补。
ME运行闭源远程管理软件来执行操作,而且包含漏洞,这些漏洞让黑客能够在机器上运用复杂的操作。 ME可以会被用来安装rootkit和其他形式的病毒,它们悄无声息地监控用户,窃取信息或者篡改文件。
SPS基于ME,能让攻击者通过网络远程配置基于Intel的服务器。 TXE是英特尔的硬件验证技术。此前ME上的AMT工具会被空的密码字符串绕过。
事实上,AMT中存在漏洞已经不是什么新鲜事。2017年5月英特尔就曾被爆出AMT功能存在远程提权高危漏洞,当时漏洞就出现在Intel AMT Web界面通过HTTP摘要认证协议认证用户的环节。
半年后,英特尔又公布了更多的固件漏洞。牙膏厂透露,在对其内部源代码进行审核之后,“已经确定了一些可能使部分芯片面临风险的安全漏洞。
英特尔表示,现在出现的这些漏洞可能会使黑客冒充ME,SPS或TXE机制,进而让本地安全功能失效。 “在用户和操作系统的不知情的情况下加载和执行任意代码”,让系统崩溃。由于其中大部分操作需要本地访问,漏洞的严重性稍微低一些。
但谷歌安全研究人员Matthew Garrett表示上述的AMT漏洞如果没有修补,就可能允许远程利用
漏洞修复
英特尔建议Microsoft和Linux用户下载并运行Intel-SA-00086检测工具,检测系统是否容易受到上述漏洞影响。如果受到影响,用户必须从计算机制造商那里获取并安装固件更新。新代码由英特尔开发,但需要由各个硬件供应商签名,才能被引擎接受和安装。
2.由Intel CPU漏洞曝出的两个芯片内核漏洞(愤鸟整理自知乎)
2018年1月3日,知乎上出现了一个问题:如何看待 2018 年 1 月 2 日爆出的 Intel CPU 设计漏洞?
一开始,这组漏洞的影响有限,仅限于Intel的处理器。而几天后,根据Google Zero 团队发布的消息,1995年以来的几乎所有Intel, AMD, ARM处理器都会受到威胁,每台计算机在经过检测前都可被认为是脆弱的。
这组影响巨大的漏洞分别有两个代号,影响范围较大的一组被称为 Spectre ,影响了所有Intel,AMD,ARM处理器;影响范围较小的一组被称为 Meltdown ,已知仅影响Intel 处理器。
先来看看Meltdown(CNNVD-201801-150, CNNVD-201801-151 (CVE-2017-5753,CVE-2017-5715)).
此漏洞源于Intel 处理器用于提升性能的乱序执行和推测执行的实现出问题,导致程序可以越权读取缓存数据。据称,通过此方式进行的攻击,数据破译速率可达500KB/s,错误率低至万分之几。
对 Meltdown 的攻击需要构造这样的代码:
可以通过乱序执行访问到本来无权访问的缓存。
那句被提前执行的代码会根据受保护内容的不同而访问缓存中的不同位置。
CPU发现攻击程序越权操作,终止并且回滚该操作,然而攻击程序取得的数据没有被清除。
攻击程序检测取回数据时间,访问时间短说明CPU已经把数据加载到缓存中,完成数据窃取了。
以下是一个简化的Meltdown攻击的基本指令:
1 ; rcx = kernel address
2 ; rbx = probe array
3 mov al, byte [rcx] 4 shl rax, 0xc
5 mov rbx, qword [rbx + rax]
这样的代码就可以实现越权获取数据,并且把数据转移至攻击程序的合法内存中,而且不会被用户发现。
这个漏洞的产生原因是Intel 的乱序执行实现上出现了问题,在乱序执行时没有检查应用程序所访问的内存是否合法。另据网友说明,AMD和ARM(除A75架构)的乱序执行实现和Intel 不同,因此不会受到这个漏洞影响。
Spectre 漏洞
它的原理和 Meltdown 相似,都是通过乱序执行实现中存在的问题展开攻击。
下面就是,Spectre 的攻击需要的一段代码
if(index1
index2=array_a[index1];
if(index2 < array_b_size);
value = array_b[index2];
}
正常情况下,if中的条件因为不一定得到满足,因此后面的代码不会得到执行。然而,由于乱序执行的存在,花括号中的内容就可以得到执行,这之后只要想办法访问array_b的全部内容,index1的内容就可以被获取了。
对于这个漏洞,AMD、ARM、Intel的绝大部分架构都中招,只是因为这个漏洞利用起来比较麻烦,一定程度上降低了其影响。
然而,这两个漏洞只是打开了利用缓存进行攻击的大门,在Meltdown和Spectre之后,又有一些类似的漏洞被发现,比如 Skyfall 和 Solace.
要完全解决这些漏洞,要么放弃乱序执行,牺牲大量性能,要么对乱序执行机制进行大刀阔斧地修改。
对于我们普通人来说,要防止受到这些漏洞的危害,首先是要给自己的系统打补丁,即使会有一定的性能降低,一般人也体会不到;其次是对外来程序进行检查后再运行,因为Meltdown和Spectre目前只有在本地运行才能实现攻击;最后,硬件产品尽量买新不买旧,一般而言新产品可利用的漏洞会比旧产品少。
这就是本期硬件栏目的文章,我们下个月见。
本文转自淀粉月刊:https://dfkan.com
原作者:愤鸟之眸