首页
社区
课程
招聘
[原创][原创]CVE-2018-3639 最新侧信道攻击详细分析,深入架构和微指令,由超级帅的CSZQ分享
发表于: 2018-8-2 21:47 7704

[原创][原创]CVE-2018-3639 最新侧信道攻击详细分析,深入架构和微指令,由超级帅的CSZQ分享

2018-8-2 21:47
7704

晚上好,本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 进行时间测试即可判断出到数据是多少。


还记得幽灵1么,它主要是由于错误的分支预测导致的 cache line 缓存了错误的数据,而幽灵4,主要是由于错误的揣测执行(暗自揣测圣意认为两条指令无关)造成的

Meltdown,忘记从哪里看到的一个说法,虽然AMD也有异常抑制技术,但是不受到该漏洞影响的原因是核心的执行单元有限,个人觉得应该是AMD的Store和load执行单元为同一个所以免疫,有待后续查证,附带上几个Intel和AMD的架构以供参考:

Intel Haswell微架构:


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2018-8-3 14:37 被CSZQ编辑 ,原因: 增加更多证据
上传的附件:
收藏
免费 1
支持
分享
最新回复 (8)
雪    币: 14525
活跃值: (17543)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
2
为什么你能看懂这么多国外的资源。。。专业是超大规模集成电路设计吗??
2018-8-5 15:07
0
雪    币: 1421
活跃值: (71)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
3
pureGavin 为什么你能看懂这么多国外的资源。。。专业是超大规模集成电路设计吗??
这。。。。我大学专业是海洋油气工程。。。。自学的
2018-8-5 19:50
0
雪    币: 14525
活跃值: (17543)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
4
CSZQ 这。。。。我大学专业是海洋油气工程。。。。自学的[em_38]
关键是这么多文献,你是怎么找到并且看进去的??这里好多都是人类并不能看懂的解释。。。
2018-8-6 08:58
0
雪    币: 279
活跃值: (329)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
凭什么,凭什么你的九年义务教育学的这么好~~!
2018-8-6 11:25
0
雪    币: 279
活跃值: (329)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
顶一个
最后于 2018-8-6 11:32 被carllon编辑 ,原因:
2018-8-6 11:31
0
雪    币: 1620
活跃值: (17)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
大佬这用的是什么软件分析的啊,求安利
2018-8-6 21:05
0
雪    币: 7048
活跃值: (3527)
能力值: ( LV12,RANK:340 )
在线值:
发帖
回帖
粉丝
8
感谢分享~~~
2018-8-7 20:58
0
雪    币: 207
活跃值: (351)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
这个必须赞啊,大牛
2018-8-14 11:38
0
游客
登录 | 注册 方可回帖
返回
//