原标题:用代码切身实践体会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漏洞——初学者的体验感受相关推荐

  1. 宋宝华: 用代码切身实践体会meltdown漏洞

    本文是我在Ubuntu 14.04上面进行的meltdown漏洞的亲测.meltdown漏洞,使得我们可以在用户空间读到内核空间的数据,做越权访问. 我感觉每天YY看技术文章,而不去亲自试验,总是无法 ...

  2. linux grep命令例子,Linux中grep命令的12个实践例子

    grep是每个Linux发行版都预装的一个强有力的文件模式搜索工具.无论何种原因,如果你的系统没有预装它的话,你可以很容易的通过系统的包管理器来安装它(Debian/Ubuntu系中的apt-get和 ...

  3. Linux中基础指令

    Linux中基础指令

  4. Linux中grep命令的12个实践例子

    你是否遇到过需要在文件中查找一个特定的字符串或者样式,但是不知道从哪儿开始?那么,就请grep来帮你吧. grep是每个Linux发行版都预装的一个强有力的文件模式搜索工具.无论何种原因,如果你的系统 ...

  5. linux中swi指令,Linux系统调用、新增系统调用方法

    说明: 系统调用是内核和应用程序间的接口,应用程序要访问硬件设备和其他操作系统资源,可以通过系统调用来完成. 在linux中,系统调用是用户空间访问内核的一种手段,除异常和中断外,他们是进入内核的合法 ...

  6. Linux中part指令,10 个鲜为人知的 Linux 命令 - Part 2

    继续上篇文章<11 个很有用但鲜有人知的 Linux 命令>.在本文中,我们将关注其他几个不为人知的Linux命令,有些在管理桌面和服务器方面被证明是非常有用的. 12. 命令 你在终端上 ...

  7. linux中swi指令,Arm Linux系统调用流程详细解析SWI

    Unix系统通过向内核发出系统调用(system call)实现了用户态进程和硬件设备之间的大部分接口.系统调用是操作系统提供的服务,用户程序通过各种系统调用,来引用内核提供的各种服务,系统调用的执行 ...

  8. linux中swi指令,ARM中的SWI指令(转)

    在需要软件中断处调用 __SWI  0xNum           ;Num为SWI中断处理模块的编号,见表SwiFunction ;软件中断 SWI_Exception_Function CMP   ...

  9. linux中vi指令干嘛的,Linux系统中的vi/vim指令【详解】

    vi是Unix世界里极为普遍的全屏幕文本编辑器,vim是它的改进版本Vi IMproved的简称.几乎可以说任何一台Unix机器都会提供这套软件. 只要简单的在Shell下执行vi就可以进入 vi 的 ...

  10. linux中top指令,Linux下top命令详解

    原标题:Linux下top命令详解 1.简介 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.top显示系统当前的进程和其他状况 ...

最新文章

  1. Google排名第一的技术,引数十万人关注!网友:差点我就放弃了!
  2. 看不见的攻击面:查看 SQLite 数据库就中招?
  3. 单片机位寻址举例_单片机基础及应用 | 04 80C51单片机指令系统
  4. MapXtreme 操作地图时出现调用目标发生异常的解决方法--地图状态保存
  5. Eclipse旧版本Luna SR2(版本4.4.2)下载地址
  6. C语言程序设计 | 动态内存管理:动态内存函数介绍,常见的动态内存错误,柔性数组
  7. spring mvc mysql 实例_Spring+Mybatis+SpringMVC+Maven+MySql搭建实例
  8. 设一组初始记录关键字序列为(25,50,15,35,80,85,20,40,36,70)进行一趟归并后的结果为
  9. 初识MongoDB(四)
  10. PhoneGap学习地址 / PhoneGap API介绍:Events
  11. 乐视超级电视再创辉煌?超5 X55全面屏电视上手体验
  12. 数字图像处理与python实现 pdf_python数字图像处理的学习路线?
  13. java解析json的一种方法
  14. Python使用matplotlib绘制龟兔赛跑中兔子和乌龟的行走轨迹
  15. tomcat+mysql+腾讯云_腾讯云服务器配置tomcat和mysql
  16. Java如何实现不同局域网TCP通信+群聊+私聊(云服务器实现)
  17. 移动流量转赠给好友_中国移动怎么才能转赠手机流量
  18. vue+element-admin学习连接
  19. 新周刊:放弃北上广的10个理由
  20. TalkingData:未来10年是大数据价值变现的阶段

热门文章

  1. s3c2440的时钟体系
  2. Win7更换锁屏和开机画面
  3. python基础----Day06
  4. 7-16 新浪微博热门话题 (30分)
  5. ribbon实现负载均衡
  6. Android图片拼接
  7. 亚马逊查询订单listorders方法
  8. 结构体习题:有5个职工,每个职工的数据包括:职工号、姓名、工资,编写程序要求从键盘上输入职工们的数据,输出高于平均工资的职工信息及高于平均工资的职工人数。——[C语言]入门基础编程 1092
  9. 什么是指纹浏览器,修改浏览器指纹工具
  10. android怎样连接指定wifi,手机连接指定WiFi的实现