计算机体系结构 E04:推测执行与侧信道边界
计算机体系结构 E04:推测执行与侧信道边界
核心问题
错误路径被 squash 后,为什么仍可能泄露信息?处理器可以撤销未提交的寄存器和内存写入,但微架构状态未必同步恢复。若 transient 指令按秘密值访问不同 cache line,后续计时可能观察到残留痕迹。
范围与证据等级
证据等级为功能执行。模型使用隔离的整数和符号 cache trace,不读取真实敏感数据,不执行 Flush+Reload,不测宿主 CPU。它解释 Spectre 类攻击所需的状态分离,不是漏洞复现或当前硬件安全判定。
攻击是否成立还取决于可控误预测、足够的推测窗口、可访问数据、编码 gadget 和可靠观测通道。单次 cache 命中也可能来自预取或其他执行活动。
核心案例:架构状态回滚,cache trace 保留
错误路径把 shadow register 写为 7、shadow memory 写为 1,并访问以 7 为索引的符号 cache line。squash 后提交的寄存器与内存都恢复为 0,cache trace 仍包含 7。
错误实现若把 shadow 值提交到架构状态,检查器会报告 buggy_commit_detected=true。这个负例防止把“cache 痕迹还在”与“架构状态也错误提交”混为同一种故障。
模式:提交边界之外还要列可观察状态
1 | |
分支推测、事务内存和异常恢复分析都需要列出状态清单,再逐项标记提交、回滚或残留。只检查寄存器最终值会漏掉观察通道。
验收结果
本批脚本退出 0,验证 shadow 状态在 squash 后未提交、符号 cache trace 保留,并检出错误提交变体。输出保留 real_vulnerability_reproduction=false。
模式速查
| 状态 | 本模型结果 | 真实攻击还需要 |
|---|---|---|
| 寄存器/内存 | squash 后为 0 | 精确恢复机制 |
| cache trace | 保留索引 7 | 可测时延与低噪声 |
| 错误提交 | 被检查器发现 | 不代表宿主存在该 bug |
一手参考资料
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.






