一句话:提出结合静态分析错误轨迹与动态符号执行的技术,用轨迹引导搜索并剪枝,快速确认告警并生成触发输入。
静态分析工具常产生大量告警,人工甄别成本高。本文报告一种经验性技术:当静态分析给出程序的部分错误轨迹,并为轨迹各步标注其认为对触发缺陷重要的条件时,动态符号执行可加以利用。方法将搜索启发式地导向最贴近静态轨迹的路径,并利用各步条件剪枝搜索空间。若告警为真阳性,该策略有望快速确认缺陷并生成触发输入。论文以经验报告形式描述实现过程与观察,重点在于静态分析与动态符号执行的协同,而非全新理论。
This paper reports on our experience implementing a technique for sifting through static analysis reports using dynamic symbolic execution. Our insight is that if a static analysis tool produces a partial trace through the program under analysis, annotated with conditions that the analyser believes are important for the bug to trigger, then a dynamic symbolic execution tool may be able to exploit the trace by (a) guiding the search heuristically so that paths that follow the trace most closely are prioritised for exploration, and (b) pruning the search using the conditions associated with each step of the trace. This may allow the bug to be quickly confirmed using dynamic symbolic execution, if it turns out to be a true positive, yielding an input that triggers the bug.
DOI 原文 ·
@inproceedings{paperbot7378,
title = {Combining static analysis error traces with dynamic symbolic execution (experience paper)},
author = {Frank Busse and Pritam Gharat and Cristian Cadar and Alastair F. Donaldson},
booktitle = {ISSTA},
year = {2022},
doi = {10.1145/3533767.3534384}
}