首页
文章
漏洞
SRC导航
内容精选
输入关键词搜索
APP 登录| 注册
CVE-2018-3639 | 最新侧信道攻击详细分析
阅读量 116372 | 评论 4
分享到: QQ空间 新浪微博 微信 QQ facebook twitter
发布时间:2018-08-06 16:30:34
本CSZQ最近对CPU相关漏洞感兴趣,于是深入研究了下CVE-2018-3639也就是Spectre4(幽灵4),有不对的地方欢迎指正。
简介
根据微软的一篇博客,已经发现的可用于揣测执行侧信道攻击的分支原语(英文原词在这里,speculation primitives,不太好翻译,就直译了)共有4种,分别是条件分支预测失误(conditional branch misprediction)、间接分支预测失误(indirect branch misprediction)、异常传递或延期(exception delivery or deferral)以及今天的主角揣测存储绕过(Speculative Store Bypass)。
详细分析
直接上代码的最重要部分,此代码经过个人添加了注释并修改过一些BUG,可以在文章最后下载源码对照查看每个变量的含义:
最重要的代码在115行和122行,在C语言层面看不出任何问题,请查看汇编代码:
汇编代码中红色部分为115行代码,绿色部分为122行代码,紫色部分即为出现问题的关键代码。
这两行代码出现问题的原因是执行当前代码的核心认为两条指令仅存在输出相关,因此可以使用寄存器重命名的方式并行执行,在《计算机体系结构:量化研究方法(第五版)》中可以找到相关解释:
并行执行一定会出问题吗,那不一定,还需要让执行单元先执行testfun+138指令再执行test+135指令,这样才能保证testfun+138会错误的影响cache。示例代码能够达成这个条件的原因是test+135指令与testfun+128指令相关,因此需要等待前面代码执行完毕,而test+138则没有这个顾虑。
继续深入到核心内部的执行单元,查看其到底是如何完成并行执行的,下图是intel的sandy bridge微架构执行单元:
查询AMD的17代处理器微架构文档,查询到如下信息:
所以可以判断上述两条宏观指令分别被翻译为单条存储相关微指令和单条加载相关微指令,结合上述寄存器重命名技术,因此可以判断在此微架构中使用port2和port4来并行执行两条指令,真相大白。
虽然在test+135存储指令执行完毕后,test+138指令由于错误会回退,但是已经受到影响的cache不会回退,所以可以结合 rdtscp 指令对 cache line 进行时间测试观察是否cache hit即可判断出到数据是多少。
还记得幽灵1么,它主要是由于错误的分支预测导致的 cache line 缓存了错误的数据,而幽灵4,主要是由于错误的揣测执行(暗自揣测圣意认为两条指令无关)造成的。
不负责任的猜想
Meltdown,忘记从哪里看到的一个说法,虽然AMD也有异常抑制技术,但是不受到该漏洞影响的原因是核心的执行单元有限,个人觉得应该是AMD的Store和load执行单元为同一个所以免疫,有待后续查证,附带上几个Intel和AMD的架构以供参考:
Intel Haswell微架构:
Intel sandy bridge微架构:
AMD 17th 架构
DEMO程序编译命令:
gcc -o Spec4 Speculative4.c -Wall -DHIT_THRESHOLD=50 -DNO_INTERRUPTS -ggdb
参考文献
漏洞PoC地址:
https://www.exploit-db.com/exploits/44695/
微软针对CVE-2018-3639的解释:
https://blogs.technet.microsoft.com/srd/2018/05/21/analysis-and-mitigation-of-speculative-store-bypass-cve-2018-3639/
intel sandy bridge微架构详解:
https://en.wikichip.org/wiki/intel/microarchitectures/sandy_bridge_(client)#MSROM_.26_Stack_Engine
intel sandy bridge微架构详解(中文):
http://www.mouseos.com/arch/intel_microarchitecture.html
AMD 17代处理器优化说明:
https://developer.amd.com/wordpress/media/2013/12/55723_3_00.ZIP
架构相关的一本书:
《计算机体系结构:量化研究方法(第五版)》
Intel官方手册:
64-ia-32-architectures-optimization-manual.pdf
其他额外资料
AMD开发手册:
https://developer.amd.com/resources/developer-guides-manuals/
已知的CPU漏洞汇总:
https://wiki.osdev.org/CPU_Bugs
以上文章为 CSZQ 原创,转载请注明出处。
本文转载自: pediy.com
如若转载,请注明出处: https://bbs.pediy.com/thread-245988.htm
安全客 - 有思想的安全新媒体
侧信道攻击 安全研究 CVE-2018-3639
安全客 官方小编 分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读
三层网络靶场搭建&MSF内网渗透
2019-02-22 14:30:46
Drupal SA-CORE-2019-003 远程命令执行分析
2019-02-22 11:30:15
RSAC 2019:最全大会亮点议题抢先揭秘
2019-02-22 10:32:46
Pony Loader窃密木马样本分析
2019-02-22 10:30:17
|发表评论
发表你的评论吧
昵称
Dir溢出大神
换一个
|评论列表
创世之枪 · 2018-08-06 10:21:25 回复
源码 链接: https://share.weiyun.com/5IpOr1P (密码:sUGo)
神奇小子 · 2018-08-06 17:57:37 回复
密码错误
创世之枪 · 2018-08-06 23:25:48 回复
区分大小写
越南邻国宰相 · 2018-08-06 19:57:14 回复
密码正确呀
安全客
有思想的安全新媒体
文章
1137
粉丝
52
TA的文章
安全客 RSAC 2019 专题报道
2019-02-22 14:30:51
从RSA 2019创新沙盒“十强”看网络安全技术动向
2019-02-22 14:27:10
RSAC 2019:最全大会亮点议题抢先揭秘
2019-02-22 10:32:46
关于境内大量家用路由器DNS被篡改情况通报
2019-02-21 13:35:02
GitHub上发布后即登顶的老司机渗透教程,你的小本本备好了吗?
2019-02-20 19:35:06
输入关键字搜索内容
相关文章
JavaScript侧信道时间测量
利用分块传输吊打所有WAF
一网打尽核心网及终端协议实现漏洞:韩国科学技术院LTEFuzz新方法
针对WhatsApp、Telegram及Signal应用的侧信道攻击技术研究
如何利用.NET实现Gargoyle
漏洞预警 | 英特尔CPU曝严重的PortSmash超线程漏洞 敏感数据可被盗
9月3日每日安全热点 - Linus Torvalds坦率讲述英特尔安全漏洞
热门推荐
文章目录
简介
详细分析
不负责任的猜想
参考文献
安全客Logo
安全客
安全客
关于我们
加入我们
联系我们
用户协议
商务合作
合作内容
联系方式
友情链接
内容须知
投稿须知
转载须知
合作单位
安全客
安全客
Copyright © 360网络攻防实验室 All Rights Reserved 京ICP备08010314号-66
Loading...0daybank
文章评论