Spectre 攻击的那个 PoC 有人复现了吗

2018-01-04 20:06:42 +08:00
 yksoft1

漏洞论文: https://spectreattack.com/spectre.pdf 。 我试了一下最后附录贴出的 Windows 下 C 语言 PoC,用 mingw-w64 32 位版编译出来了。 因为用了 clflush 和 rdtscp 两个指令,理论上应该只有支持 SSE2 还是 SSE3 的 CPU 可以运行这个。跑了自己的一些机器, Core i7-2720QM Win8.1:

Core i5-2520M WinXP SP3 WEPOS:

在支持 SSE3 但没有分支预测的 Atom N270、N2600 上都崩溃,错误 0xc000001d

Atom Z3735F 执行成功了。。

在 Dothan 核心的赛扬 900 ( eeepc 701 )上崩溃

另外,Meltdown 的 Windows x64 下的 poc 找到了,但是好几个人都复现不成功。

7513 次点击
所在节点    分享发现
26 条回复
redsonic
2018-01-05 21:18:44 +08:00
@yksoft1 update: 刚才有疏忽,单核芯模式 core duo2 中招。dothan 应该都是单核心吧,所以中招。这样看老的 tsc 不准反而打掩护了。
yksoft1
2018-01-05 21:45:27 +08:00
@xqdoo00o
#include <sys/mman.h>

我现在没有任何 Linux 或 OSX 的环境。。。


@redsonic 你编译的时候优化开关是啥?我的 A4-1200,不开优化只有一部分能读出,-O2 全部读出
redsonic
2018-01-05 21:56:07 +08:00
@yksoft1 开不开优化结果都一样
yksoft1
2018-01-05 22:15:12 +08:00
@redsonic 我现在实现了一个支持三种计时方式( rdtscp、mfence+rdtsc、lfence+rdtsc )的版本。用-O2 参数编译,稍微跑了一下。
i5 U 560、i7 2720QM、i5 2520M:三种方式全都正确跑出
Dothan 核心 赛扬 353: 第一种崩溃,后两种正确跑出但有时会有不正确的结果
AMD A4-1200:第一种全部正确跑出而且程序跑得很快,后两种完全跑不出正确结果
Atom N270: 第一种崩溃,后两种完全跑不出正确结果。

其他人跑的:
赛扬 D 356:第一种崩溃,后两种完全跑不出正确结果。
还在等 Athlon 64 X2 5000+、 某个 Penryn 核心的至强的结果
现在我估计 Prescott 的 U 应该不行,Dothan 却可以。
redsonic
2018-01-05 22:32:42 +08:00
搜到霓虹那边关于 tsc 的一张表应该能判别哪些 cpu 会受到影响
http://www.02.246.ne.jp/~torutk/cxx/clock/cpucounter.html
yksoft1
2018-01-05 23:29:50 +08:00
AMD Athlon 64 X2 5000+( K8 架构):三种方式全都正确跑出
奔腾双核 E6500K ( Penryn 架构,Wolfdale 核心):多核模式下,第一种崩溃,后两种完全跑不出正确结果。

现在给人的感觉是,这个东西需要非常精确的 TSC 时序才能够成功。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/420141

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX