计算机体系结构 E04:推测执行与侧信道边界

核心问题

错误路径被 squash 后,为什么仍可能泄露信息?处理器可以撤销未提交的寄存器和内存写入,但微架构状态未必同步恢复。若 transient 指令按秘密值访问不同 cache line,后续计时可能观察到残留痕迹。

附件:E04-side-channel.json。

范围与证据等级

证据等级为功能执行。模型使用隔离的整数和符号 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
architectural rollback != all microarchitectural state rollback

分支推测、事务内存和异常恢复分析都需要列出状态清单,再逐项标记提交、回滚或残留。只检查寄存器最终值会漏掉观察通道。

验收结果

本批脚本退出 0,验证 shadow 状态在 squash 后未提交、符号 cache trace 保留,并检出错误提交变体。输出保留 real_vulnerability_reproduction=false。

模式速查

状态 本模型结果 真实攻击还需要
寄存器/内存 squash 后为 0 精确恢复机制
cache trace 保留索引 7 可测时延与低噪声
错误提交 被检查器发现 不代表宿主存在该 bug

一手参考资料