投机执行域中指针运算的范围跟踪系统存在不足。
攻击者可以通过侧信道提取内核数据。
这是一个概念验证,你可以从我们的映射(map)最后一个元素起越界读取最多 0x5fff 字节的数据。
此问题已在 5.12 中修复 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/patch/kernel/bpf/verifier.c?id=7fedb63a8307dda0ec3b8969a3b233a1dd7ea8e0 ,并向后移植到多个 LTS 内核。
然而,如果你仍然对这个工作原理感兴趣,并希望亲眼看到 Spectre 漏洞利用的实际运行,你可以以 sudo 身份运行该程序。这样 Spectre 缓解措施就不会生效。
用法:
sudo ./bpf_exploit 0 3 0x0 0x5ff0
其中 0 和 3 对应两个不同的线程,它们运行在不同的物理核心上,漏洞利用才能生效。
关于此问题的更多信息和详细解释,请参阅我的学士论文 [尚未完成]