SymFit: Making the Common (Concrete) Case Fast for Binary-Code Concolic Execution

Authors: 

Zhenxiao Qi, Jie Hu, Zhaoqi Xiao, and Heng Yin, UC Riverside

Abstract: 

Concolic execution is a powerful technique in software testing, as it can systematically explore the code paths and is capable of traversing complex branches. It combines concrete execution for environment modeling and symbolic execution for path exploration. While significant research efforts in concolic execution have been directed toward the improvement of symbolic execution and constraint solving, our study pivots toward the often overlooked yet most common aspect: concrete execution. Our analysis shows that state-of-the-art binary concolic executors have largely overlooked the overhead in the execution of concrete instructions. In light of this observation, we propose optimizations to make the common (concrete) case fast. To validate this idea, we develop the prototype, SymFit, and evaluate it on standard benchmarks and real-world applications. The results showed that the performance of pure concrete execution is much faster than the baseline SymQEMU, and is comparable to the vanilla QEMU. Moreover, we showed that the fast symbolic tracing capability of SymFit can significantly improve the efficiency of crash deduplication.

Open Access Media

USENIX is committed to Open Access to the research presented at our events. Papers and proceedings are freely available to everyone once the event begins. Any video, audio, and/or slides that are posted after the event are also free and open to everyone. Support USENIX and our commitment to Open Access.

BibTeX
@inproceedings {299639,
author = {Zhenxiao Qi and Jie Hu and Zhaoqi Xiao and Heng Yin},
title = {{SymFit}: Making the Common (Concrete) Case Fast for {Binary-Code} Concolic Execution},
booktitle = {33rd USENIX Security Symposium (USENIX Security 24)},
year = {2024},
isbn = {978-1-939133-44-1},
address = {Philadelphia, PA},
pages = {415--432},
url = {https://www.usenix.org/conference/usenixsecurity24/presentation/qi},
publisher = {USENIX Association},
month = aug
}