SYMSAN: Time and Space Efficient Concolic Execution via Dynamic Data-flow Analysis
SYMSAN: Time and Space Efficient Concolic Execution via Dynamic Data-flow Analysis
复制标题
DOI:
--
复制
发表时间:
2022
期刊:
影响因子:
--
通讯作者:
Ju Chen;Wookhyun Han;Mingjun Yin;Haochen Zeng;Chengyu Song;Byoungyoung Lee;Heng Yin;I. Shin
中科院分区:
文献类型:
--
作者:
Ju Chen;Wookhyun Han;Mingjun Yin;Haochen Zeng;Chengyu Song;Byoungyoung Lee;Heng Yin;I. Shin
Concolic execution is a powerful program analysis technique for systematically exploring execution paths. Compared to random-mutation-based fuzzing, concolic execution is especially good at exploring paths that are guarded by complex and tight branch predicates. The drawback, however, is that concolic execution engines are much slower than native execution. While recent advances in concolic execution have significantly reduced its performance overhead, our analysis shows that state-of-the-art concolic executors overlook the overhead for managing symbolic expressions. Based on the observation that concolic execution can be modeled as a special form of dynamic data-flow analysis, we propose to leverage existing highly-optimized data-flow analysis frameworks to implement concolic executors. To validate this idea, we implemented a prototype S YM S AN based on the data-flow sanitizer of LLVM and evaluated it against the state-of-the-art concolic executors SymCC and SymQEMU with three sets of programs: nbench, the DARPA Cyber Grand Challenge dataset, and real-world applications from Google’s Fuzzbench and binutils. The results showed that S YM S AN has a much lower overhead for managing symbolic expressions. The reduced overhead can also lead to faster concolic execution and improved code coverage.