一句话:提出 JVM 模糊测试技术,自动检测 Java 程序中由 JIT 编译引入的时序侧信道。
时序侧信道可由程序执行时间与敏感输入的关联产生。已有检测工作多基于源码分析,却忽略 JIT 编译等运行时优化对时序行为的影响,甚至可能引入新的侧信道。本文提出自动检测 Java 程序中 JIT 诱导时序侧信道的技术:首先给出模式以识别可能被侧信道区分的秘密输入划分,然后通过模糊测试探索 JVM 行为,定位会区分这些划分的时序通道状态。作者在三个侧信道检测数据集上评估,发现许多被标为“安全”的代码变体实际存在 JIT 诱导时序侧信道,直接与四个先进分析工具的结论相矛盾,表明该问题普遍且可自动检测。
Timing side channels arise in software when a program's execution time can be correlated with security-sensitive program input. Recent results on software side-channel detection focus on analysis of program's source code. However, runtime behavior, in particular optimizations introduced during just-in-time (JIT) compilation, can impact or even introduce timing side channels in programs. In this paper, we present a technique for automatically detecting such JIT-induced timing side channels in Java programs. We first introduce patterns to detect partitions of secret input potentially separable by side channels. Then we present an automated approach for exploring behaviors of the Java Virtual Machine (JVM) to identify states where timing channels separating these partitions arise. We evaluate our technique on three datasets used in recent work on side-channel detection. We find that many code variants labeled "safe" with respect to side-channel vulnerabilities are in fact vulnerable to JIT-induced timing side channels. Our results directly contradict the conclusions of four separate state-of-the-art program analysis tools for side-channel detection and demonstrate that JIT-induced side channels are prevalent and can be detected automatically.