paperbot · PL 论文追踪

全部论文 待读 收藏

P2 An empirical study on the effectiveness of static C code analyzers for vulnerability detection

静态 C 代码分析器漏洞检测有效性的实证研究
ISSTA Proceedings of the 31st ACM SIGSOFT International Symposium on Software Testing and Analysis2022匹配度 4/10 · 论文是静态C代码分析器漏洞检测的实证研究,属于静态分析与安全领域,但不涉及LLM/Agent、浮点程序分析或贝叶斯程序分析,与画像的核心交叉方向无直接关联;其真实项目基准和漏报分析可作背景参考。引用 121 inbox
Stephan Lipp, Sebastian Banescu, Alexander Pretschner
crossref: 2026-09-12

AI 速览

一句话:实证评估六款静态C分析器,发现真实项目漏洞漏报率47%–80%,组合工具可降漏报但增误报。

静态代码分析常用于扫描安全漏洞,但现有工具技术路线多样,且既有研究多依赖合成数据集或缺乏按漏洞类型的细分分析,难以客观比较其真实有效性。本文提出一种基于 CVE 报告自动评估静态代码分析器有效性的方法,并对五款开源与一款商业静态 C 代码分析器进行实证研究,覆盖 27 个软件项目、共 115 万行代码和 192 个真实漏洞。结果表明,尽管这些工具在合成缺陷基准上表现良好,但在真实程序基准中仍漏报 47% 至 80% 的漏洞;组合多个分析器的结果可将漏报率降至 30% 至 69%,代价是额外标记函数比例增加 15 个百分点。许多漏洞仍未被检测到,尤其是经典内存相关安全缺陷之外的漏洞。

问题
现有静态分析工具比较研究常使用合成数据集,且未按漏洞类型进行细分评估,导致结论难以推广到真实程序。本文关注如何客观评估静态 C 代码分析器在真实漏洞检测中的有效性。
方法
提出一种基于 CVE 报告自动构建真实漏洞基准并评估静态分析器的方法;选取五款开源和一款商业静态 C 代码分析器,在 27 个项目、115 万行代码和 192 个真实漏洞上进行测试。
评估
通过 CVE 报告建立 ground truth,统计各工具在真实项目上的漏报率,并分析组合多工具结果后的漏报率与额外标记函数代价。结果显示单个工具漏报 47%–80%,组合后降至 30%–69%,但多标记 15 个百分点的函数。
原文摘要(Abstract)

Static code analysis is often used to scan source code for security vulnerabilities. Given the wide range of existing solutions implementing different analysis techniques, it is very challenging to perform an objective comparison between static analysis tools to determine which ones are most effective at detecting vulnerabilities. Existing studies are thereby limited in that (1) they use synthetic datasets, whose vulnerabilities do not reflect the complexity of security bugs that can be found in practice and/or (2) they do not provide differentiated analyses w.r.t. the types of vulnerabilities output by the static analyzers. Hence, their conclusions about an analyzer's capability to detect vulnerabilities may not generalize to real-world programs. In this paper, we propose a methodology for automatically evaluating the effectiveness of static code analyzers based on CVE reports. We evaluate five free and open-source and one commercial static C code analyzer(s) against 27 software projects containing a total of 1.15 million lines of code and 192 vulnerabilities (ground truth). While static C analyzers have been shown to perform well in benchmarks with synthetic bugs, our results indicate that state-of-the-art tools miss in-between 47% and 80% of the vulnerabilities in a benchmark set of real-world programs. Moreover, our study finds that this false negative rate can be reduced to 30% to 69% when combining the results of static analyzers, at the cost of 15 percentage points more functions flagged. Many vulnerabilities hence remain undetected, especially those beyond the classical memory-related security bugs.

链接与引用

DOI 原文 · PDF(开放获取) ·

BibTeX
@inproceedings{paperbot7426,
  title = {An empirical study on the effectiveness of static C code analyzers for vulnerability detection},
  author = {Stephan Lipp and Sebastian Banescu and Alexander Pretschner},
  booktitle = {ISSTA},
  year = {2022},
  doi = {10.1145/3533767.3534380}
}