在阅读项目零关于CVE-2017-5753的解释时(见https://googleprojectzero.blogspot.fr/2018/01/reading-privileged-memory-with-side.html?m=1),我偶然发现了这个断言:
通过测量加载arr2->数据[0x200]和arr2->数据[0x300]所需的时间,攻击者可以确定推测执行期间index2的值是0x200还是0x300
AFAIK对阵列的访问时间并不取决于您正在查看的偏移量,那么如何在此处测量不同的加载时间呢?
由于
答案 0 :(得分:3)
内存延迟取决于缓存命中/未命中。读 Ulrich Drepper What Every Programmer Should Know About Memory。
或者只是阅读Meltdown攻击文件(https://meltdownattack.com/meltdown.pdf),该文件解释了所有这些作为攻击工作方式的背景,包括clflush
+ Read侧通道转换微架构状态(&#39) ; s缓存)到架构状态(你正在运行的非特权代码中的寄存器值)。
这是一篇相当不错的论文,但他们可以更清楚地知道,它依赖于英特尔CPU将仅内核页面映射视为对用户空间代码的推测性执行有效。如果您没有权限从内部读取的映射与未映射的页面相同,则不存在漏洞。据推测,这就是AMD的情况,这就是为什么AMD CPU在微架构上对这种攻击免疫的原因。但英特尔CPU显然使用TLB命中并继续推测执行,直到故障负载试图退出。
它是从https://meltdownattack.com/的首页链接的。
如果您只关注其他漏洞,而不是Meltdown,也许您没有看到它。但是旁道是一样的。