nitin1806/SLB-Attack
GitHub: nitin1806/SLB-Attack
在 gem5 模拟器的 RISC-V 乱序处理器模型上验证推测性加载绕过攻击,通过缓存侧信道逐字节泄露秘密数据。
Stars: 0 | Forks: 0
# gem5 RISC-V 的推测性加载绕过 POC
本文件夹包含一个基于 PDF 规范 **[SRV_Speculative_Load_Bypass.pdf]** 的小型概念验证。其目的是在 `gem5` RISC-V 乱序核心上演示瞬态执行模式,在此模式中,依赖于秘密的字节会影响缓存状态,并在随后通过时序分析被推断出来。
## 文件
- **slb_poc.c**: 面向模拟器的 C 语言 POC
- **run_gem5_riscv.py**: 最小化的 gem5 SE 模式 RISC-V 运行器
## POC 的作用
1. 训练一条良性路径,该路径反复将公共字节编码到缓存中。
2. 创建一个存储/加载序列,旨在对 O3 CPU 上的内存依赖预测施加压力。
3. 使用瞬态观测到的字节去访问位于 `probe[secret * 512]` 处的探测数组。
4. 对一个短密钥字符串的每个字节重复此过程。
5. 测量所有 256 个探测条目的重载延迟,并挑选出具有最强缓存信号的字节。
## 构建
您需要一个 RISC-V 交叉编译器以及一个支持 RISC-V 的 gem5 构建版本。一个典型的构建命令是:
```
riscv64-linux-gnu-gcc -O2 -static -o slb_poc.riscv slb_poc.c
```
## 在 gem5 中运行
从您的 gem5 根目录运行类似以下的命令:
```
build/RISCV/gem5.opt /home/nitin/Desktop/SLB/run_gem5_riscv.py
```
如果您的 gem5 签出代码没有在配置脚本中直接暴露 `L1ICache` / `L1DCache`,请将这些对象替换为您本地 gem5 版本中使用的缓存辅助类。
## 预期输出
程序将输出:
- 针对每个秘密字节输出一行,包含预期值、恢复值和投票数,
- 完整的预期秘密字符串,
- 完整的恢复秘密字符串。
## 注意事项
- 这是一个紧凑的学术 POC,而不是一个经过充分调优的漏洞利用程序。
- 在实际操作中,缓存命中阈值和训练计数通常需要针对特定的 gem5 CPU 模型和缓存配置进行调整。
- 如果您想要更强有力的演示,下一步通常是使用仪表化工具监测 gem5 统计数据,并检查多次运行中的缓存命中行为。
标签:Cache定时攻击, gem5模拟器, meg, Meltdown类漏洞, OpenCanary, RISC-V, RISC-V安全研究, SLB攻击, Spectre类漏洞, 乱序执行, 侧信道分析, 信息安全, 内存依赖预测, 处理器安全, 安全概念验证, 实时处理, 客户端加密, 微架构安全, 微架构攻击, 推测执行, 漏洞POC, 瞬态执行攻击, 硬件安全, 硬件漏洞, 缓存侧信道, 计算机体系结构, 跨平台编译, 逆向工具