中文

Cottontail:面向高度结构化测试输入生成的 LLM 驱动 Concolic 执行

软件工程 2025-10-15 v2

摘要

我们如何执行 Concolic 执行以生成高度结构化的测试输入,从而系统性地测试解析程序?现有的 Concolic 执行引擎受到以下几点的严重限制:(1)与输入结构无关的路径约束选择,导致测试工作浪费或覆盖率缺失;(2)有限的约束求解能力,产生大量语法无效的测试输入;(3)依赖手动获取高度结构化的种子输入,导致测试不连续。本文提出 Cottontail,一种新型 LLM 驱动的 Concolic 执行引擎,以缓解上述限制。首先构建名为表达性结构覆盖树(ESCT)的更完整程序路径表示,以选择结构感知的路径约束。随后,设计基于 Solve-Complete 范式的 LLM 驱动约束求解器,智能求解路径约束以获取不仅满足约束且符合输入语法的测试输入。最后,采用历史引导的种子获取方法,在测试开始前或测试饱和后获取新的高度结构化测试输入。我们在 SymCC 基础上实现了 Cottontail,并评估了四种不同格式(XML、SQL、JavaScript 与 JSON)的八个经过广泛测试的开源库。Cottontail 在行覆盖率和分支覆盖率上平均分别比基线方法高出 30.73% 和 41.32%。此外,Cottontail 发现了六个先前未知的漏洞(已分配六个 CVE)。我们已向开发者报告了这些问题,其中四个目前已修复。

关键词

引用

@article{arxiv.2504.17542,
  title  = {Cottontail: Large Language Model-Driven Concolic Execution for Highly Structured Test Input Generation},
  author = {Haoxin Tu and Seongmin Lee and Yuxian Li and Peng Chen and Lingxiao Jiang and Marcel Böhme},
  journal= {arXiv preprint arXiv:2504.17542},
  year   = {2025}
}

备注

To appear on the 2026 IEEE Symposium on Security and Privacy (22 pages, with detailed Appendix)