Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
spectre-attack-demo — 使用已公开的"Spectre"漏洞(CVE-2017-5753 和 CVE-2017-5715)的示例 | Kitploit
工具/GitHubGitHub/pedrolucasoliva/spectre-attack-demo
漏洞分析漏洞利用密码学硬件安全学习与教育二进制利用
GitHubpedrolucasoliva/spectre-attack-demo

spectre-attack-demo

使用已公开的"Spectre"漏洞(CVE-2017-5753 和 CVE-2017-5715)的示例

查看仓库
1118年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Spectre 攻击示例

使用2018年1月2日披露的“Spectre”漏洞(CVE-2017-5753和CVE-2017-5715)的示例

Spectre打破了不同应用程序之间的隔离。它允许攻击者欺骗那些遵循最佳实践的无错误程序,使其泄露秘密。事实上,这些最佳实践的安全检查反而增加了攻击面,并可能使应用程序更容易受到Spectre攻击。

  • Spectre paper - Spectre论文及代码来源

语言

C语言,使用库:

  • stdio.h
  • stdlib.h
  • stdint.h
  • intrin.h - 用于 rdtscp 和 clflush

示例的作用是什么?

我们在内存中放入文本 “The Magic Words are Squeamish Ossifrage.”,然后尝试利用漏洞读取它。如果系统存在漏洞,你将在输出中看到相同的文本从内存中读取。


在这段代码中,如果 victim_function() 中的编译指令严格按照程序顺序执行,由于 array1 的大小为16,该函数只会读取 array1[0..15]。然而,当进行推测执行时,越界读取是可能的。readMemoryByte() 函数多次对 victim_function() 进行训练调用,使分支预测器预期 x 为有效值,然后使用越界的 x 进行调用。条件分支预测错误,后续的推测执行利用越界的 x 读取一个秘密字节。随后,推测代码读取 array2[array1[x] * 512],从而将 array1[x] 的值泄露到缓存状态中。为了完成攻击,使用简单的刷新+探测(flush+probe)来识别 array2 中哪个缓存行被加载,从而揭示内存内容。该攻击重复多次,因此即使目标字节最初未被缓存,第一次迭代也会将其带入缓存。

未优化的代码在 i7 Surface Pro 3 上读取速度约为 10KB/秒。

来源

  • Spectre exploits info
  • CVE-2017-5753 - 变体1:边界检查绕过
  • CVE-2017-5715 - 变体2:分支目标注入
  • Intel affected CPUs list
下载工具