我特别关注那些检测 C/C++ 代码中的漏洞的。我见过一堆专有工具,但没有开源工具。
任何人都可以推荐好的开源工具来扫描源代码中的漏洞吗?
FlawFinder 的 David Wheeler 列出了 (30) 个 OSS/FS 和 (14) 个专有静态分析工具:
不。
在这种情况下,“好”主要与“扫描源代码的工具”相矛盾。尤其是免费的——这里不要敲开源,大多数商业的也很烂。
我见过的最好的(商业)工具(我已经对此进行了相当多的研究)——远远超过 Checkmarx。(披露——虽然我不为他们工作,但我过去曾与他们合作过)。
排名靠后的是 IBM / Ounce(现在称为 IBM Rational Appscan Source code Edition,或类似的东西......)。
再往下是“第二层”商业工具,例如 Klockworcks 等……在我的名单上远远落后的是现任者Fortify(现在归惠普所有)。
请注意,所有这些都是商业的,而且相当昂贵。
排名靠后的是免费/开源工具——仅仅因为这些工具可以进行简单的文本搜索,几乎可以用 grep 来完成。
在这个列表中 - RATS、ITS4、FlawFinder、其他一些......但它们非常等效,它们没有太多逻辑,没有编译等。
如果您在 C 和 C++ 之外寻找 - 它并没有太大的不同,除了一些 OWASP 工具,例如 .NET 的 O2、Java 的 LAPSE...
Fortify 发布了 RATS:http ://code.google.com/p/rough-auditing-tool-for-security/ 。您可以尝试一下,但是,我对商业和开源工具的结果都不是很满意。可能商业工具显示出更好的结果。问题是,由于多种原因,今天许多明显的错误已经灭绝。是的,仍然有错误和蹩脚的软件(并且将永远存在),这些工具会发现这些错误,但不是那些棘手的。您仍然需要手动完成大部分工作。