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, 瞬态执行攻击, 硬件安全, 硬件漏洞, 缓存侧信道, 计算机体系结构, 跨平台编译, 逆向工具