如何选择一款适合自己的静态代码检测工具?
最近几年出现了新一代静态代码检测工具,这些新的代码检测工具能够基于控制流和数据流分析发现新型缺陷。现在无需实际运行代码即可检测缓冲区溢出、内存泄漏和空指针取消引用等错误。
随着企业DevsecOps的建设及网络安全意识不断加强,C和C++的静态代码分析市场正在迅速变化。现有的代码检查器供应商也被迫将数据流和控制流功能添加到他们的工具中。因此,这些工具的潜在用户很难为工作选择合适的工具。
符合条件的静态代码检测工具
满足以下基本要求:
支持C/ C++ 、Java、C#等主流编程语言
无需运行代码即可检测控制流和/或数据流缺陷
可以检测安全编码规范、运行时缺陷和安全漏洞
目前常用的检测工具
CppCheck(开源)
WuKong(中科天齐信创)
Coverity (Synopsys)
Fortify(HP)
开源检测工具存在哪些问题?
目前,静态代码检测工具在多数人眼里仍旧是误报、漏报率高的代名词,甚至因为造成的“噪音”过多,一度被开发人员嫌弃,在选择上更多会倾向于简单免费的开源检测工具。但和国内一些信创产品相比,开源检测工具不但安全性不够透明,而且在很多方面存在不足。
首先,开源检测工具更多的是侧重于安全编码规范的检测,对于安全漏洞及缺陷覆盖类型少,而且检测器数量种类少,不能完整支持各种行标及国标;
其次,工具检测的语言数受限,要支持生产上检测多种语言,集成多种工具,需要很大工作量;
第三,误报、漏报率等也高,结果无法保障,降低工作效率;
最后,从技术上来说,缺少及时的技术支持,升级缓慢,无法检测最新的漏洞。
而对于国产信创产品如WuKong,不但支持检测安全编码规范,而且还能发现运行时缺陷和安全漏洞;支持GB、GJB、ISO等国际、国家(军用)标准;在语言上支持C/C++、Java、Python、JS、HTML、PHP等多种主流编程语言,误报率、漏报率低。有专业人员在工具上做技术支持,定期升级、支持对最新安全漏洞的检测。同时涉及多种专利属自主研发,安全性有保障。
在工具选择上,从哪些方面评估工具是否适合?
是否易于安装?获得第一个结果需要多长时间?
是否使用方便?检测时间需要多久?
更改配置需要花费多少时间?
是否有任何可用于IDE编程的插件?
是否支持Jira?
处理TIOBE测试套件需要多长时间?
在TIOBE测试套件中发现了多少误报?有多少假阴性?
可用的规则集是否足够完整?
是否可以在批处理模式下运行?如果是这样,将数据导出到另一个程序有多容易?
使用什么定价模式,许可费用是多少?
获得支持需要多长时间?答案的质量如何?
是否安全可控并支持个性化定制?
网络安全无小事,当前安全检测逐渐“左移”,静态代码安全检测工具在敏捷开发过程中起着重要作用。并且静态代码安全检测在一定程度上可以发现一些运行时出现的安全漏洞,在不执行代码的情况下,最大程度地发现代码问题,协助开发人员第一时间发现问题并修正,不但大大提高了软件自身安全性,而且帮助企业降低维护网络安全成本,减少经济损失,避免企业声誉遭到打击。
参读链接:
https://www.tiobe.com/static-code-checkers-survey/