Skip to main content
QUICK REVIEW

[论文解读] Adversarial Symbolic Execution for Detecting Concurrency-Related Cache Timing Leaks

Shengjian Guo, Meng Wu|arXiv (Cornell University)|Jul 9, 2018
Parallel Computing and Optimization Techniques被引用 3
一句话总结

本文提出对抗性符号执行(SymSC),一种通过符号化探索线程交错执行并使用SMT求解建模缓存行为来检测密码程序中由并发引起的缓存时序侧信道泄漏的方法。该方法在真实世界密码算法中发现了先前工具未能检测到的现实泄漏,表明在并发环境下时序泄漏的无泄漏性并非组合性质。

ABSTRACT

The timing characteristics of cache, a high-speed storage between the fast CPU and the slowmemory, may reveal sensitive information of a program, thus allowing an adversary to conduct side-channel attacks. Existing methods for detecting timing leaks either ignore cache all together or focus only on passive leaks generated by the program itself, without considering leaks that are made possible by concurrently running some other threads. In this work, we show that timing-leak-freedom is not a compositional property: a program that is not leaky when running alone may become leaky when interleaved with other threads. Thus, we develop a new method, named adversarial symbolic execution, to detect such leaks. It systematically explores both the feasible program paths and their interleavings while modeling the cache, and leverages an SMT solver to decide if there are timing leaks. We have implemented our method in LLVM and evaluated it on a set of real-world ciphers with 14,455 lines of C code in total. Our experiments demonstrate both the efficiency of our method and its effectiveness in detecting side-channel leaks.

研究动机与目标

  • 解决现有工具忽略并发程序中缓存时序泄漏的问题。
  • 证明时序泄漏无泄漏性并非组合性质:一个程序在孤立执行时可能是安全的,但与对抗性线程交错执行时可能产生泄漏。
  • 开发一种系统化方法,用于检测由并发线程间干扰引发的缓存时序泄漏。
  • 在符号执行过程中准确建模缓存行为,同时最小化计算开销。
  • 在真实世界密码实现上评估该方法,并证明其在发现先前未检测到的泄漏方面的有效性。

提出的方法

  • 符号化执行受害线程(如密码函数)和潜在对抗性线程,探索所有可行路径和交错执行。
  • 在符号执行过程中构建动态缓存行为约束,以建模内存访问导致缓存命中或未命中的情况。
  • 利用SMT求解器检查缓存行为的输入依赖性差异:在相同交错下,两个不同输入导致不同的命中/未命中模式。
  • 基于缓存行为约束对冗余交错执行进行实时剪枝,以缓解路径和交错爆炸问题。
  • 根据缓存配置(如关联度、行大小)建模缓存行为,并跨线程跟踪缓存行访问模式。
  • 在未提供时自动生成对抗性线程和交错调度,实现泄漏检测的完全自动化。

实验结果

研究问题

  • RQ1一个在孤立执行时具有时序无泄漏性的程序,当与另一线程并发执行时是否会变得容易受到缓存时序侧信道攻击?
  • RQ2何种系统化探索策略能够检测出暴露缓存时序泄漏的对抗性交错执行?
  • RQ3如何在符号执行过程中准确建模缓存行为,以检测数据依赖的命中/未命中模式?
  • RQ4现实世界密码实现中存在多大程度的并发引起的缓存时序泄漏?
  • RQ5带有SMT求解的符号执行能否检测出触发此类泄漏的具体输入和交错执行?

主要发现

  • 本研究证明了时序无泄漏性并非组合性质:即使指令计数相同,并发执行也可能暴露缓存时序泄漏。
  • SymSC成功在总计14,455行C代码的20个真实世界密码程序中检测到具体的缓存时序泄漏。
  • 该方法识别出先前仅关注顺序执行的工具未能发现的、涉及对抗性线程干扰的真实攻击场景。
  • 缓存行为约束有效实现了对冗余交错的剪枝,尽管面临状态空间爆炸问题,仍显著提升了可扩展性。
  • 该工具生成了导致缓存行为分化的具体输入和交错调度,证明了所检测泄漏的实际可利用性。
  • 现有任何工具均无法检测此类并发引起的缓存时序泄漏,确立了SymSC是首个解决该问题的方法。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。