linux 中meltdown指令,用代码切身实践体会meltdown漏洞——初学者的体验感受
原标题:用代码切身实践体会meltdown漏洞——初学者的体验感受
本文基于宋宝华老师的一篇文章——《宋宝华: 用代码切身实践体会meltdown漏洞》。作为初学者的小编,在看完这篇文章并实践之后,将自己的实践结果以及实践的感受分享给大家。
小植同学
对 meltdown 代码调试之后,发现执行speculate() 函数时,
对汇编指令进行分析:
“movzx (%[addr]), %%eaxnt”
该指令目的是从内核地址取出数据,这是不被允许的。所以系统要报告异常错误,该操作是串行的。而其他指令是并行执行的,所以该指令已经执行完毕,并获得数据。同时下边的指令也可能已被执行。
“shl $12, %%raxnt”
该指令计算一个数组偏移量。
“movzx (%[target], %%rax, 1), %%rbxn”
该指令引起页错误。
所以,程序接收到段错误信号——SIGSEGV。然后执行异常操作。调整到 nop 空操作。最后跳到到 check() 函数执行。
小升同学
CPU:AMD
Linux发行版:CentOS
通过meltdown获得内核空间数据的整体思路:
假设指定的内核虚拟地址是X,地址X存储的数据是M,使用数据M又计算出另一个地址Y,在计算访问地址Y处元素的时间,这就是meltdown获取内核数据的整体思路。假如2000是存储有要窃取数据的地址,而地址2000存储的数据范围是0-4。规定地址Y的计算方式为,地址2000存储的数据加5000,那么我们就得到了5个地址,5000,5001,5002,5003,5004 。然后计算访问这5个地址的内存的时间,如果访问地址5003的时间最短,则说明地址5003对应的数据在cache中,这样攻击者就得到内核虚拟地址2000存储的数据是3。
meltdown漏洞攻击属于安全领域的侧信道攻击范畴,具体来说属于cache侧信道攻击,cache侧信道包含几种攻击手段,Evict+Time,Prime+Probe,Flush+Reload。而在meltdown论文中采用的是flush+reload的方式,攻击者频繁的使用clflush指令flush一个目标地址,通过计算重新加载(reload)目标地址处数据的时间,攻击者就可以知道该地址处的数据是否在同一时间被加载的cache中。值得注意的是,一次flush+reload只针对一个cacheline,flush+reload攻击的目标是L3cache。
小伟同学
CPU:Intel
Linux发行版:Ubuntu
小晨同学
CPU:AMD
Linux发行版:Ubuntu
小莹同学
CPU:AMD
Linux发行版:Ubuntu
还有一篇分享的文章。返回搜狐,查看更多
责任编辑:
linux 中meltdown指令,用代码切身实践体会meltdown漏洞——初学者的体验感受相关推荐
- 宋宝华: 用代码切身实践体会meltdown漏洞
本文是我在Ubuntu 14.04上面进行的meltdown漏洞的亲测.meltdown漏洞,使得我们可以在用户空间读到内核空间的数据,做越权访问. 我感觉每天YY看技术文章,而不去亲自试验,总是无法 ...
- linux grep命令例子,Linux中grep命令的12个实践例子
grep是每个Linux发行版都预装的一个强有力的文件模式搜索工具.无论何种原因,如果你的系统没有预装它的话,你可以很容易的通过系统的包管理器来安装它(Debian/Ubuntu系中的apt-get和 ...
- Linux中基础指令
Linux中基础指令
- Linux中grep命令的12个实践例子
你是否遇到过需要在文件中查找一个特定的字符串或者样式,但是不知道从哪儿开始?那么,就请grep来帮你吧. grep是每个Linux发行版都预装的一个强有力的文件模式搜索工具.无论何种原因,如果你的系统 ...
- linux中swi指令,Linux系统调用、新增系统调用方法
说明: 系统调用是内核和应用程序间的接口,应用程序要访问硬件设备和其他操作系统资源,可以通过系统调用来完成. 在linux中,系统调用是用户空间访问内核的一种手段,除异常和中断外,他们是进入内核的合法 ...
- Linux中part指令,10 个鲜为人知的 Linux 命令 - Part 2
继续上篇文章<11 个很有用但鲜有人知的 Linux 命令>.在本文中,我们将关注其他几个不为人知的Linux命令,有些在管理桌面和服务器方面被证明是非常有用的. 12. 命令 你在终端上 ...
- linux中swi指令,Arm Linux系统调用流程详细解析SWI
Unix系统通过向内核发出系统调用(system call)实现了用户态进程和硬件设备之间的大部分接口.系统调用是操作系统提供的服务,用户程序通过各种系统调用,来引用内核提供的各种服务,系统调用的执行 ...
- linux中swi指令,ARM中的SWI指令(转)
在需要软件中断处调用 __SWI 0xNum ;Num为SWI中断处理模块的编号,见表SwiFunction ;软件中断 SWI_Exception_Function CMP ...
- linux中vi指令干嘛的,Linux系统中的vi/vim指令【详解】
vi是Unix世界里极为普遍的全屏幕文本编辑器,vim是它的改进版本Vi IMproved的简称.几乎可以说任何一台Unix机器都会提供这套软件. 只要简单的在Shell下执行vi就可以进入 vi 的 ...
- linux中top指令,Linux下top命令详解
原标题:Linux下top命令详解 1.简介 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.top显示系统当前的进程和其他状况 ...
最新文章
- Google排名第一的技术,引数十万人关注!网友:差点我就放弃了!
- 看不见的攻击面:查看 SQLite 数据库就中招?
- 单片机位寻址举例_单片机基础及应用 | 04 80C51单片机指令系统
- MapXtreme 操作地图时出现调用目标发生异常的解决方法--地图状态保存
- Eclipse旧版本Luna SR2(版本4.4.2)下载地址
- C语言程序设计 | 动态内存管理:动态内存函数介绍,常见的动态内存错误,柔性数组
- spring mvc mysql 实例_Spring+Mybatis+SpringMVC+Maven+MySql搭建实例
- 设一组初始记录关键字序列为(25,50,15,35,80,85,20,40,36,70)进行一趟归并后的结果为
- 初识MongoDB(四)
- PhoneGap学习地址 / PhoneGap API介绍:Events
- 乐视超级电视再创辉煌?超5 X55全面屏电视上手体验
- 数字图像处理与python实现 pdf_python数字图像处理的学习路线?
- java解析json的一种方法
- Python使用matplotlib绘制龟兔赛跑中兔子和乌龟的行走轨迹
- tomcat+mysql+腾讯云_腾讯云服务器配置tomcat和mysql
- Java如何实现不同局域网TCP通信+群聊+私聊(云服务器实现)
- 移动流量转赠给好友_中国移动怎么才能转赠手机流量
- vue+element-admin学习连接
- 新周刊:放弃北上广的10个理由
- TalkingData:未来10年是大数据价值变现的阶段