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