首页
社区
课程
招聘
[原创]浅谈侧信道时序攻击【附Demo】
发表于: 2018-1-12 22:25 12272

[原创]浅谈侧信道时序攻击【附Demo】

bxc 活跃值
6
2018-1-12 22:25
12272

最近快被Meltdown与Spectre这两个CPU漏洞刷了屏了,于是有空自己写了个demo玩玩。

虽然没能成功演示上面的两个漏洞,不过大概搞清楚了利用原理。
Meltdown与Spectre 成功获取受保护数据的方式,目前据我所知,好像都是基于侧信道时序攻击的。
不同的是 Meltdown是利用CPU的乱序执行泄漏数据,而Spectre是利用分支预测泄漏数据。
泄露的手段就是读取一个byte,然后以byte为数组索引,访问某个大数组的元素。
然后逐个测试各个元素的访问速度,之前访问过的元素,如果还在缓存中,访问起来就要快不少。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 1
支持
分享
最新回复 (8)
雪    币: 292
活跃值: (815)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
收藏,感谢分享!
2018-1-13 12:40
0
雪    币: 216
活跃值: (250)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3

"然后从kernel中读取一个byte,以这个byte为索引,去访问array所对应的块。

之后立刻循环读取一遍array的各个块,如果之前访问成功了,那么对应的块应该还在缓存中,对应的访问时间要少很多。"


你这个例子中的kernel是R3地址, 这个逻辑能执行通.


但如果kernel真的是一个kernel地址 , 比如 BYTE* kernel = 0xfffff80004888f30 ,  在执行kernel[0]  , kernel[1] 的时候就异常了,  后面的"立刻循环读取一遍array..." 也就执行不了.


我试过在执行kernel[0]的时候加_try,   但这样就不能重现了.

2018-1-15 09:18
0
雪    币: 7048
活跃值: (3527)
能力值: ( LV12,RANK:340 )
在线值:
发帖
回帖
粉丝
4
tsoo "然后从kernel中读取一个byte,以这个byte为索引,去访问array所对应的块。之后立刻循环读取一遍array的各个块,如果之前访问成功了,那么对应的块应该还在缓存中,对应 ...
所以说,本文只是验证侧信道时序攻击,不验证Meltdown与Spectre漏洞。
2018-1-15 19:14
0
雪    币: 40
活跃值: (680)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
Access  fastest:  0x04
Access  fastest:  0x5B
Access  fastest:  0xF0
Access  fastest:  0x0F
2018-1-17 09:41
0
雪    币: 300
活跃值: (2477)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
mark
2018-1-23 20:17
0
雪    币: 290
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
tsoo "然后从kernel中读取一个byte,以这个byte为索引,去访问array所对应的块。之后立刻循环读取一遍array的各个块,如果之前访问成功了,那么对应的块应该还在缓存中,对应 ...
用分支预测,这样if里面的越权取值即使不执行,数据也会缓存
2018-1-25 09:14
0
雪    币: 268
活跃值: (114)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
确实,看了好久,才大致明白了代码的原理。
1. 通过比较访问时间窃取了受保护的数据,也被称为侧信道攻击;
2. 由于CPU预执行的存在,受保护的数据被预执行指令加载到cache中,进而使得对受保护数据的访问速度更快;
3. 本例中,假设我们无法直接访问kernel数组;也就是说,我们无法调用AccessArray函数。但是, 由于CPU指令预测机制的存在 ,我们在执行该函数之前,array数组中kernel数组元素作为下标对应的数组元素会被加载到cache中。然后,我们执行GetAccessByte函数的时候会发现,这些数组元素的访问速度会更快。我们进而可以间接获得数组下标,进而得到kernel数组所有元素的值。
其实,理论上一点不复杂。但这个思路确实很特别,让人耳目一新啊。

2018-1-30 10:34
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
写的很好,可以认识一下吗?我们也是专门搞侧信道及物联网安全攻击技术的,我的微信dulei8772
2020-6-22 10:55
0
游客
登录 | 注册 方可回帖
返回
//