一句话:介绍 KLEE 的新内存分配器 KDAlloc 及其重放工具,通过确定性内存分配提升符号执行的确定性与缺陷发现能力。
内存分配器对符号执行具有重要影响:非确定性的堆分配会破坏执行的可复现性,并妨碍缺陷的发现与重放。本文以工具演示的形式介绍 KLEE 的新分配器 KDAlloc,从用户视角讨论其在改进确定性执行和缺陷发现能力方面的主要收益。KDAlloc 为符号执行提供确定性的内存分配,使得相同输入下堆地址保持一致。作者还提出一个面向 KLEE 的新重放工具,使原生执行也能集成 KDAlloc,从而获得与符号执行期间相同的堆地址。该重放工具帮助开发者在原生环境中重放和分析由符号执行发现的缺陷,提升符号执行结果的可复现性与实用性。
The memory allocator can have an important impact in symbolic execution. Taking a user-centric view, this tool demonstration paper discusses some of the main benefits provided by KLEE's new allocator KDAlloc in terms of improved deterministic execution and bug-finding capabilities. We then introduce a new replay tool for KLEE which enables the native execution to integrate KDAlloc and receive the same heap addresses as during symbolic execution.
@inproceedings{paperbot8067,
title = {KDAlloc: The KLEE Deterministic Allocator: Deterministic Memory Allocation during Symbolic Execution and Test Case Replay},
author = {Daniel Schemmel and Julian Büning and Frank Busse and Martin Nowack and Cristian Cadar},
booktitle = {ISSTA},
year = {2023},
doi = {10.1145/3597926.3604921}
}