paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Finding and understanding bugs in software model checkers

发现并理解软件模型检查器中的缺陷
FSE Proceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering2019匹配度 3/10 · 论文研究的是对软件模型检查器进行模糊测试以发现其自身缺陷,属于程序验证与测试方向,但未涉及用户核心关注的 LLM/Agent 与静态分析/形式化验证的交叉、浮点程序分析或贝叶斯程序分析。与用户画像的 PL/AI 双向交叉主线直接关联较弱,仅可作为形式化验证工具可靠性方面的背景参考。引用 27 inbox
Chengyu Zhang, Ting Su, Yichen Yan, Fuyuan Zhang, Geguang Pu, Zhendong Su
crossref: 2026-09-12

AI 速览

一句话:提出 MCFuzz 模糊测试技术,通过合成分支可达性性质自动发现软件模型检查器中的 62 个真实缺陷。

软件模型检查(SMC)是验证安全攸关软件的重要自动程序验证技术,因此模型检查器自身的可靠性至关重要,但此前少有工作对其进行验证。本文提出一种实用、自动化的模糊测试技术,聚焦控制流可达性(如某分支是否或多少次被到达),并针对有效 fuzzing 的两个关键挑战——测试预言(oracle)与可扩展性——给出解决方案:对确定性程序,利用其具体执行合成合法且有效的分支可达性性质,从而解决 oracle 问题;再将这些单独性质融合为单一安全性质,以提升 fuzzing 的可扩展性并减少人工检查负担。作者实现了工具 MCFuzz,并对三个主流 C 软件模型检查器 CPAchecker、CBMC 和 SeaHorn 进行了广泛测试,共发现 62 个独特缺陷,其中 58 个已被确认、20 个已被修复。论文进一步分析并分类了这些多样化的缺陷,总结了构建可靠鲁棒模型检查器的若干经验,测试工作也获得开发者认可,并促进了工具可用性与文档的改进。

问题
软件模型检查器被广泛用于安全攸关软件的验证,但其自身的可靠性缺乏系统性的自动化验证手段,亟需有效的缺陷发现方法。
方法
提出面向控制流可达性的自动化模糊测试技术:利用确定性程序的具体执行合成合法的分支可达性性质以解决预言问题,并将多个性质融合为单一安全性质以提升可扩展性,实现为 MCFuzz 工具。
评估
将 MCFuzz 应用于 CPAchecker、CBMC 和 SeaHorn 三个主流 C 模型检查器,共发现 62 个独特缺陷(58 个确认、20 个修复),并对缺陷进行分类与经验总结。
原文摘要(Abstract)

Software Model Checking (SMC) is a well-known automatic program verification technique and frequently adopted for checking safety-critical software. Thus, the reliability of SMC tools themselves (i.e., software model checkers) is critical. However, little work exists on validating software model checkers, an important problem that this paper tackles by introducing a practical, automated fuzzing technique. For its simplicity and generality, we focus on control-flow reachability (e.g., whether or how many times a branch is reached) and address two specific challenges for effective fuzzing: oracle and scalability. Given a deterministic program, we (1) leverage its concrete executions to synthesize valid branch reachability properties (thus solving the oracle problem) and (2) fuse such individual properties into a single safety property (thus improving the scalability of fuzzing and reducing manual inspection). We have realized our approach as the MCFuzz tool and applied it to extensively test three state-of-the-art C software model checkers, CPAchecker, CBMC, and SeaHorn. MCFuzz has found 62 unique bugs in all three model checkers -- 58 have been confirmed, and 20 have been fixed. We have further analyzed and categorized these bugs (which are diverse), and summarized several lessons for building reliable and robust model checkers. Our testing effort has been well-appreciated by the model checker developers, and also led to improved tool usability and documentation.

链接与引用

DOI 原文 ·

BibTeX
@inproceedings{paperbot5143,
  title = {Finding and understanding bugs in software model checkers},
  author = {Chengyu Zhang and Ting Su and Yichen Yan and Fuyuan Zhang and Geguang Pu and Zhendong Su},
  booktitle = {FSE},
  year = {2019},
  doi = {10.1145/3338906.3338932}
}