Meltdown PoC详细代码审查

时间:2018-01-29 14:14:31

标签: c security assembly nasm exploit

我在周末阅读了关于Meltdown and Spectre

的所有内容

我也已经阅读了SpectreMeltdown的.pdf文件 对于那些寻求更多关于这些漏洞的知识的人来说,这是必读的,但遗憾的是,这些漏洞并没有提供详细的解释。

我在github上发现了各种PoC,这非常有趣但我缺乏完全理解它的知识。关于具体部分的更多解释我会感激不尽:

从这个链接https://github.com/dendisuhubdy/meltdown/blob/master/src/poc.c和其他git存储库中,在这个漏洞利用的概念中有许多有趣的部分。

时间读取

/* Time reads. Order is lightly mixed up to prevent stride prediction */
    for (i = 0; i < 256; i++) {
        mix_i = ((i * 167) + 13) & 255;
        addr = &array2[mix_i * 512];
        time1 = __rdtscp(&junk); /* READ TIMER */
        junk = *addr; /* MEMORY ACCESS TO TIME */
        time2 = __rdtscp(&junk) - time1; /* READ TIMER & COMPUTE ELAPSED TIME */
        if (time2 <= CACHE_HIT_THRESHOLD && mix_i != array1[tries % array1_size])
            results[mix_i]++; /* cache hit - add +1 to score for this value */
    }

为什么我们使用素数167和13?

 /* Locate highest & second-highest results results tallies in j/k */

为什么我们关心获得最大值?

其他部分解释也非常受欢迎!!

0 个答案:

没有答案