能力值:
( LV6,RANK:90 )
|
-
-
2 楼
收藏,感谢分享!
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
"然后从kernel中读取一个byte,以这个byte为索引,去访问array所对应的块。 之后立刻循环读取一遍array的各个块,如果之前访问成功了,那么对应的块应该还在缓存中,对应的访问时间要少很多。"
你这个例子中的kernel是R3地址, 这个逻辑能执行通.
但如果kernel真的是一个kernel地址 , 比如 BYTE* kernel = 0xfffff80004888f30 , 在执行kernel[0] , kernel[1] 的时候就异常了, 后面的"立刻循环读取一遍array..." 也就执行不了.
我试过在执行kernel[0]的时候加_try, 但这样就不能重现了.
|
能力值:
( LV12,RANK:340 )
|
-
-
4 楼
tsoo
"然后从kernel中读取一个byte,以这个byte为索引,去访问array所对应的块。之后立刻循环读取一遍array的各个块,如果之前访问成功了,那么对应的块应该还在缓存中,对应 ...
所以说,本文只是验证侧信道时序攻击,不验证Meltdown与Spectre漏洞。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
Access fastest: 0x04 Access fastest: 0x5B Access fastest: 0xF0 Access fastest: 0x0F
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
mark
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
tsoo
"然后从kernel中读取一个byte,以这个byte为索引,去访问array所对应的块。之后立刻循环读取一遍array的各个块,如果之前访问成功了,那么对应的块应该还在缓存中,对应 ...
用分支预测,这样if里面的越权取值即使不执行,数据也会缓存
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
确实,看了好久,才大致明白了代码的原理。 1. 通过比较访问时间窃取了受保护的数据,也被称为侧信道攻击; 2. 由于CPU预执行的存在,受保护的数据被预执行指令加载到cache中,进而使得对受保护数据的访问速度更快; 3. 本例中,假设我们无法直接访问kernel数组;也就是说,我们无法调用AccessArray函数。但是,
由于CPU指令预测机制的存在 ,我们在执行该函数之前,array数组中kernel数组元素作为下标对应的数组元素会被加载到cache中。然后,我们执行GetAccessByte函数的时候会发现,这些数组元素的访问速度会更快。我们进而可以间接获得数组下标,进而得到kernel数组所有元素的值。 其实,理论上一点不复杂。但这个思路确实很特别,让人耳目一新啊。
|
能力值:
( LV1,RANK:0 )
|
-
-
9 楼
写的很好,可以认识一下吗?我们也是专门搞侧信道及物联网安全攻击技术的,我的微信dulei8772
|
|
|