历史上的今天
今天是:2024年11月03日(星期日)
2021年11月03日 | ARM架构CPU漏洞
2021-11-03 来源:eefocus
cve-2017-5753 边界检查绕过 Spectre(幽灵)
cve-2018-3693 边界检查绕过
cve-2017-5715 分支目标注入 Spectre(幽灵)
cve-2017-5754 未授权数据缓存加载 Meltdown(熔断)
cve-2018-3640 恶意系统注册读取
cve-2018-3639 推理存储绕过
Meltdown漏洞,低权限用户可以访问内核的内容,获取本地操作系统的信息。Meltdown漏洞影响几乎所有的Intel CPU和部分ARM CPU.
Spectre则影响所有的Intel CPU和AMD CPU,以及主流的ARM CPU。当用户通过浏览器访问了包含Spectre恶意利用程序的网站时,用户的如账号,密码,邮箱等个人隐秘信息可能会泄漏;在云服务场景中,利用Spectre可以突破用户间的隔离,窃取其他用户的数据。
现代CPU为了提高处理性能,会采用乱序执行(Out-of-Order-Execution)和预测执行(SpeculativePrediction)。乱序执行是指CPU并不是严格按照指令的顺序串行执行,而是根据相关当前掌握的信息预测某个条件判断的结果,然后选择对应的分支提前执行。乱序执行和预测执行在遇到异常或预测执行前的正确状态,然后选择对应正确的指令继续执行,这种异常处理基址保证了程序能够正确的执行。CPU恢复状态时并不会恢复CPU缓存的内容,而这两组漏洞正式利用了这一设计上的缺陷进行测信道攻击

乱序执行的每个阶段:
1.获取指令,解码后存放到执行缓冲区Reservations Stations
2.乱序执行指令,结果保存在一个结果序列中
3.退休期Retired Circle,重新排列结果序列及安全检查(如地址访问的权限检查),提交结果到寄存器
//rcx = kernel address
//rbx = probe array
1.mov al,byte[rcx]
2.shl rax,0xc
3.mov rbx,qword[rbx+rax]
Meltdown漏洞的利用过程有4个步骤:
1.指令获取解码
2.乱序执行3条指令,指令2和指令3要等指令1中的读取内存地址的内容完成后才开始执行,指令3会将要访问的rbx数组元素所在的页加载到CPU Cache中
3.对2的结果进行重新排列,对1-3条指令进行安全检测,发现访问违例,会丢弃当前执行的所有结果,恢复CPU状态到乱序执行之前的状态,但并不会恢复CPU Cache的状态
4.通过缓存测信道攻击,可以知道哪一个数组元素被访问,也即对应的内存页存放在CPU Cache中,从而推测出内核地址的内容
Spectre的原理是,当CPU发现分支预测错误时会丢弃分支执行的结果,恢复CPU的状态,但是不会恢复CPU Cache的状态,利用这一点可以突破进程间的访问限制(如浏览器沙箱)获取其他进程的数据。
if(x < array1_size){
y = array2[array1[x]*256];
//do something using Y that is observable when speculatively executed
}
具体攻击过程分为三个阶段:
1.训练CPU的分支预测单元使其运行代码时会进行特定的预测执行
2.预测执行使得CPU将要访问的地址的内容读取到CPU Cache中
3.通过缓存测信攻击,可以知道哪一个数组元素被访问过,也即对应的内存页存放在CPU Cache中,从而推测出地址的内容
漏洞验证Poc
https://github.com/Eugnis/spectre-attack
https://github.com/feruxmax/meltdown
https://github.com/gkaindl/meltdown-poc
https://github.com/turbo/KPTI-PoC-Collection
上一篇:ARM WFI和WFE指令
下一篇:ARM微处理器的工作状态
史海拾趣
|
本帖最后由 paulhyde 于 2014-9-15 09:47 编辑 开学即是大三了,可是依然觉得心里空荡荡的,对电子专业的掌握情况实在是少的可怜。 明年的全国电子设计大赛,我们这一届自然是绝对的主力,可是以现在的实力应战,毫无疑问,肯定是铩羽而归。虽然 ...… 查看全部问答> |
|
行业背景 数字视频监控行业最重要的产品就是DVS和DVR。 DVR(Digital Video Recorder,硬盘录像机)是随着计算机技术的发展,在最近几年中才逐渐发展起来的视频监控设备。在安防行业中,传统的视频监控工程中普遍使用磁带式的长延时录像机,这种 ...… 查看全部问答> |
|
自己自定义裁剪了一个WinCE操作系统,经过一段时间的琢磨,WinCE下LCD的驱动程序基本上调试通过了,但是系统启动以后LCD屏没有任何显示。请问: 如何才可以让系统在启动的时候可以显示WinCE界面,就像WinXP一样呢: 是否需要在系统定制的时候有 ...… 查看全部问答> |
|
我做毕业设计,用VC++开发USB的驱动程序,找到了相关的书籍 并安装了DriverStudio3.1,但是找不到XP系统下可用的DDK 急啊 网上找了好多,都是过期的地址,下载不了 哪位能提供一下呢,… 查看全部问答> |
|
ccs编译问题error: unrecognized token j = *(UNIT_VOL_BASEADDR + wUintIndex ); 直流电压遥测 WriteBYC((wUintIndex + YCPOSITION_DCA1),j); //变化遥测 Report.DCVol[wUintIndex] = j; 程序老 ...… 查看全部问答> |
|
本人现有一款产品是用TMS320F2812做的,现准备用STM32来做,大家看能否实现. 要求: 1、采集16路模拟量,可用外部AD扩展(能用内部AD也行); 2、开入、开出等。 有做个电力测控产品的朋友可帮忙参谋一下,我可提供2812平台的软硬件供参考。… 查看全部问答> |
|
论坛LM3S811的开发板活动已经基本完成,大家一定不想让冷落他在一旁吃灰,所以加入我们的TI LM3S811 DIY活动中来吧!本次DIY活动,站方将分配为几个小组,每个小组有特定的DIY方向。 本小组主攻方向:示波器 简介:本DIY是基于虚拟仪器和LM ...… 查看全部问答> |
|
参加了Altera的发布会,他们要推出SoC FPGA。其实就是在FPGA架构中集成了硬核ARM处理器,然后处理器和FPGA之间使用宽带互联。先公布的是集成了双核ARM Cortex-A9 MPCore处理器和用28nm工艺的FPGA。其实在今年春天的时候,Xilinx也宣布和ARM合作,推 ...… 查看全部问答> |




