计算机安全研究人员设计出了远程利用现代处理器芯片预测执行漏洞的方法。听起来好像很严重,但实际上可能并没有。
目前为止,幽灵攻击尚需恶意代码在脆弱主机本地执行,才可以从本机其他软件的内存中盗取口令、密钥和其他秘密。
如今,名为“网络幽灵”(NetSpectre)的新变种无需在目标主机上执行漏洞利用代码,便可盗取网络中另一台设备上的隐私信息,尽管渗漏得非常慢。数十亿计算机和各种设备都不同程度地笼罩在数据泄露风险之下。
理论上,与执行可利用代码段的服务建立网络连接,便足以非常缓慢地远程探知该应用内存中的数据。这需要精确定时和不断衡量修正,所以,嘈杂的网络环境,比如互联网,就会一定程度上妨碍漏洞利用。
这还只是第一阶段。下一步是要拉取感兴趣的数据而不仅仅是随便抓些临时变量和程序内存中其他无关紧要的东西。这一步可没那么简单。
我们证明了幽灵攻击未必需要本地代码执行,还可以远程加载。而且,利用新的秘密信道,幽灵甚至不一定需要缓存来泄露数据。
题为《网络幽灵:通过网络读取任意内存》的论文写道:该边信道攻击每小时仅能泄露15个比特,或者通过基于AVX的隐秘信道每小时渗漏60比特。也就是说,像是加密密钥或身份验证令牌之类的秘密数据可能需要数日才可以查找收集到。
高价值目标
这一数据泄露方法应引起人们的警惕,尽管数据渗漏速度可能是个限制因素。
速度上的限制,让该攻击仅对执行高价值目标针对性攻击的黑客比较有吸引力,这是广大普通用户的福音。而只要目标系统打全了幽灵补丁,包括这最新变种的补丁,就可以阻止该攻击。但幽灵系攻击变幻莫测,安全界对它的认知也还很粗浅,该问题解决起来并不是那么简单。
幽灵攻击利用现代CPU预测执行引擎所用的分支预测机制,来迫使目标进程以可泄露秘密数据的方式访问内存。现代处理器靠预测执行机制来高速运行软件,它们预测程序流的走向,提前准备好所需代码和数据。通过操作和观察该预测执行的效果,是有可能识别出内存中本不应暴露出的数据的。
远程幽灵攻击中,目标设备需含有执行特定操作的代码,比如循环读取数组且每次读取都检查一遍数组边界。该漏洞利用方法滥用了处理器微架构中引入预测执行的设计决策,并由此辨别出内存中的内容。设计出该攻击的研究人员将这些执行特定操作的代码段称作“幽灵小工具”。
与本地幽灵攻击类似,远程幽灵攻击也要求目标代码中存在“幽灵小工具”。在公开网络接口或API中含有所需“幽灵小工具”的系统,就可遭该远程幽灵攻击,导致任意内存被黑客通过网络读取。攻击者仅仅是向受害者发送一系列精心编制的请求,然后测量响应时间,就可以从受害者的内存中漏出秘密数据。
该攻击会向目标发送多个网络数据包,包中含有总是处于条件语句比较判断边界之内的值,借之将分支预测器训练到预计该条件判断语句的结果是真。
不要越界
举个例子,假定下列代码在带漏洞设备上执行:
if (x < bitstream_length)
if(bitstream[x])
flag = true;
黑客可尝试利用bitstream[x]访问,从该软件私有内存中抽取1比特数据。攻击者发送x落在边界外的一个数据包,那bitstream[x]就是目标内存中的一个秘密比特了。
分支预测器会假定边界检查结果为真,该内存访问得到预测执行。
研究人员在今年早些时候就将自己的发现通报给了英特尔,但英特尔似乎并不是太惊恐。基本上,只要你已经更新了代码和应用以缓解之前的幽灵漏洞利用,那网络幽灵也骚扰不到你。
网络幽灵是边界检查绕过(CVE-2017-5753)漏洞的一个应用,而通过软件代码检查与修改,可以确保预测停止屏障矗立在合适的地方,也就缓解了此类漏洞利用。
英特尔表示,已在《分析潜在边界检查绕过漏洞》白皮书中加入了相关信息,并致谢报告了该信息的研究人员。
Red Hat 则称其一直在与研究人员合作,并在27号发布的博客文章中公布了该漏洞对其产品的影响情况。Red Hat 首席Arm架构师兼计算机微架构主管表示:“我们未在用户空间发现任何可行的幽灵小工具攻击,但我们仍在积极审计通过网络监听的所有守护进程及其他技术栈。”
截至目前,就像其他幽灵与熔断变种及亚变种一样,并未发现有恶意软件在利用这些漏洞。
《网络幽灵:通过网络读取任意内存》的论文:
https://misc0110.net/web/files/netspectre.pdf
《分析潜在边界检查绕过漏洞》白皮书:
声明:本文来自安全牛,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。