iamshivambhatt/Hardware-Vulnerability-with-Proof-of-Concept-

GitHub: iamshivambhatt/Hardware-Vulnerability-with-Proof-of-Concept-

该项目是一份关于 Spectre V2 硬件侧信道漏洞的完整研究与实验材料,包含 PoC 复现、缓存时序分析演示及缓解策略文档。

Stars: 0 | Forks: 0

# 🛡️ Spectre Variant 2 (CVE-2017-5715) — 硬件漏洞研究

一篇深入的研究论文及实践概念验证,探索现代 CPU 上的推测执行攻击。

## 📖 概述 本项目是对 **Spectre Variant 2 (CVE-2017-5715)**(也称为 **分支目标注入**)的研究与基于实验环境的探索。这是一种影响实现了推测执行和分支预测的 CPU 的硬件级侧信道漏洞。 本项目的目标是: - 理解 Spectre Variant 2 的 **微架构根本原因** - 在隔离的虚拟实验室中重现一个可用的 **概念验证** - 通过 **缓存时序侧信道分析** 分析并验证泄露的数据 - 记录现实世界中的 **缓解策略** ## 📑 目录 - [什么是 Spectre Variant 2?](#-what-is-spectre-variant-2) - [攻击原理](#-how-the-attack-works) - [实验环境](#-lab-environment) - [概念验证演示](#-proof-of-concept-walkthrough) - [演示视频](#-demo-video) - [缓解策略](#-mitigation-strategies) - [仓库结构](#-repository-structure) - [参考文献](#-references) - [作者](#-author) ## 🔍 什么是 Spectre Variant 2? **CVE-2017-5715** 是一种微处理器漏洞,允许攻击者诱骗 CPU 的分支预测器,使其沿着错误(“推测”)的路径执行指令。虽然 CPU 会正确地丢弃这种错误预测的 *结果*,但它未能完全抹除 *副作用* —— 最明显的是 CPU 缓存状态的变化。这些残留的缓存变化可以通过时序分析进行测量,使攻击者能够推断出本不应被访问的机密数据。 与传统的软件漏洞不同,Spectre 利用的是现代 CPU 的 **硬件设计**,使其极难被彻底修补,并且需要微码、OS 和编译器级别的缓解措施相结合。 ## ⚙️ 攻击原理 1. **错误训练分支预测器** —— 以可预测的模式重复执行一个分支,以便 CPU 学会去预期它。 2. **触发错误预测** —— 强制 CPU 推测性地执行另一条由攻击者选择的路径。 3. **推测性的越界读取** —— CPU 推测性地访问它本不该访问的内存,在意识到错误之前将机密数据拉入缓存。 4. **回滚与残留** —— CPU 丢弃推测的结果,但在推测期间触碰过的缓存行仍然保持“热”状态。 5. **Flush + Reload 时序攻击** —— 攻击者对跨缓存的内存访问进行计时,以检测哪一行被缓存,从而逐字节地恢复机密数据。 ## 🖥️ 实验环境 | 组件 | 详情 | |---|---| | **操作系统** | Ubuntu 14.04 LTS | | **内核版本** | 4.4.0-148-generic | | **CPU** | 12代 Intel® Core™ i5-12450H | | **虚拟化** | VMware Workstation | | **PoC 仓库** | [crozone/SpectrePoC](https://github.com/crozone/SpectrePoC) | ## 🧪 概念验证演示 ### 1. 环境设置 ``` sudo apt update sudo apt install git git clone https://github.com/crozone/SpectrePoC cd SpectrePoC make ``` ### 2. 识别 CPU 漏洞状态 Linux 通过 sysfs 直接公开 CPU 的漏洞/缓解状态: ``` grep . /sys/devices/system/cpu/vulnerabilities/* ``` 这证实了测试 CPU **容易受到 `spectre_v2` 攻击**,而其他相关漏洞(Meltdown、L1TF、MDS)则已缓解或不受影响。 ### 3. 执行 PoC ``` ./spectre.out ``` 该工具反复报告 `Success` 结果以及一个置信度“得分”,该得分源自缓存时序差异 —— 每次成功读取代表一个原本无法访问的内存泄露字节,完全通过推测侧信道重构而来。 ### 4. 分析 - ✅ 成功对分支预测器进行了错误训练 - ✅ 推测性地执行了未经授权的内存读取 - ✅ 使用 Flush+Reload 时序分析来重构泄露的字节 ## 🎥 演示视频 本仓库包含一个完整的 PoC 录制演示 —— 从环境设置到成功提取数据 —— 以直观地验证该攻击。 ▶️ **[观看 PoC 演示视频](./demo/spectre-poc-demo.mp4)** ## 🛡️ 缓解策略 - **修补固件和 OS** —— 应用最新的微码和内核更新,其中包含 retpoline 和其他推测屏障缓解措施。 - **遵循供应商指南** —— Intel、AMD 和 OS 供应商会针对不同代际的 CPU 发布特定的缓解说明。 - **启用 OS/浏览器级别的保护** —— 站点隔离、`Indirect Branch Restricted Speculation` (IBRS) 及类似的缓解措施可减少跨边界泄露。 - **保持端点安全处于最新状态** —— 虽然这不是直接的修复方法,但保持最新的安全工具有助于检测将 Spectre 与其他攻击链相结合的利用企图。 ## 📂 仓库结构 ``` . ├── README.md ├── Research_Paper_-_CVE-2017-5715_Spectre_by_Shivam_Bhatt.pdf └── demo/ └── spectre-poc-demo.mp4 ``` ## 📚 参考文献 - crozone. (2023). *SpectrePoC*. GitHub. https://github.com/crozone/SpectrePoC - Microsoft. (n.d.). *Update to enable mitigation against Spectre, Variant 2*. - Wikipedia. (n.d.). *Spectre (security vulnerability)*. https://en.wikipedia.org/wiki/Spectre_(security_vulnerability) - Wikipedia. (n.d.). *Side-channel attack*. https://en.wikipedia.org/wiki/Side-channel_attack - Wikipedia. (n.d.). *Row Hammer*. https://en.wikipedia.org/wiki/Row_hammer - Twingate Team. (2024). *What is Row Hammer? How It Works & Examples*. ## 👤 作者 **Shivam Bhatt** 网络安全研究生文凭(荣誉) — NAIT 🔗 欢迎在 [LinkedIn](#) 上与我联系,或就网络安全研究寻求合作。

⭐ 如果您觉得这项研究有用,请考虑为本仓库点赞!

标签:CPU侧信道攻击, Go语言工具, 底侧安全, 情报收集, 概念验证, 漏洞研究, 硬件安全