一句话:提出基于符号执行的方法 SpecuSym,精确检测推测执行引入的 CPU 缓存时序泄漏。
CPU 缓存是处理器中受限但关键的存储部件,其访问时序侧信道会通过可测量的时间差异泄漏信息。推测执行作为处理器优化却可因分支误预测加剧此类泄漏。已有静态分析虽能定性验证推测执行下无时序泄漏,但无法给出输入与推测流以深入诊断。本文提出基于符号执行的方法 SpecuSym:探索程序状态空间,在条件分支处建模推测行为,沿路径累积缓存副作用;针对指定缓存模型为内存访问构造泄漏谓词,并通过约束求解分析新缓存行为。作者在 KLEE 上实现 SpecuSym,对 15 个开源基准评估,在 3 种缓存设置下从 6 个程序中检测出 2 至 61 个泄漏,并识别出近期工作所报 2 个程序中的误报。
CPU cache is a limited but crucial storage component in modern processors, whereas the cache timing side-channel may inadvertently leak information through the physically measurable timing variance. Speculative execution, an essential processor optimization, and a source of such variances, can cause severe detriment on deliberate branch mispredictions. Despite static analysis could qualitatively verify the timing-leakage-free property under speculative execution, it is incapable of producing endorsements including inputs and speculated flows to diagnose leaks in depth. This work proposes a new symbolic execution based method, SpecuSym, for precisely detecting cache timing leaks introduced by speculative execution. Given a program (leakage-free in non-speculative execution), SpecuSym systematically explores the program state space, models speculative behavior at conditional branches, and accumulates the cache side effects along with subsequent path explorations. During the dynamic execution, SpecuSym constructs leak predicates for memory visits according to the specified cache model and conducts a constraint-solving based cache behavior analysis to inspect the new cache behaviors. We have implemented SpecuSym atop KLEE and evaluated it against 15 open-source benchmarks. Experimental results show that SpecuSym successfully detected from 2 to 61 leaks in 6 programs under 3 different cache settings and identified false positives in 2 programs reported by recent work.
DOI 原文 ·
@inproceedings{paperbot5630,
title = {SpecuSym},
author = {Shengjian Guo and Yueqi Chen and Peng Li and Yueqiang Cheng and Huibo Wang and Meng Wu and Zhiqiang Zuo},
booktitle = {ICSE},
year = {2020},
doi = {10.1145/3377811.3380428}
}