代码审计工具消除误报的方法汇总
2021-06-22 17:34 加个小鸡腿 阅读(1019) 评论(0) 编辑 收藏 举报转自: https://zhuanlan.zhihu.com/p/360459701
Fority详细介绍:https://www.cnblogs.com/linwenbin/p/11046188.html
Fortify的安装和使用: https://www.cnblogs.com/dearflt/p/13853508.html
6款自动化应用安全测试工具 : http://www.itcast.cn/news/20200731/11081662871.shtml
Fortify工具使用下面两种方式消除误报:
(1)第一种方法使用注解消除误报
例如代码: Public class User { public finalstatic String PASSWORD_LABEL = "123456"; privateString userId;privateString userKey;publicvoid printUserData() { System.out.println("Fortify[userId=" + userId + ", " + PASSWORD_LABEL + "=" +userKey + "]"); } }
扫描时会在publicfinal static String PASSWORD_LABEL="123456";报告PasswordManagementHardcoded:Password漏洞。
使用注解后"123456"不会报出硬编码漏洞。
@FortifyNotPasswordpublicfinal static String PASSWORD_LABEL = "123456";@FortifyPasswordprivate String userKey;
(2)通过添加定制规则消除误报
A. 例如编写了一个函数做净化处理,通过定制规则,让工具不再报出;
B. 覆盖规则,不再报出,对于password变量,覆盖其规则,则下次password的硬编码不会报出;
C. 裁剪规则,规则文件后缀为bin,转成xml(有工具可以实现),再裁剪编辑后,转换为bin文件
尚未找到转换工具,需要自己编写)
Sonarqube通过注解消除误报,两种方法:
(1) 在被误判的代码行后面添加注释: //NOSONAR
(2) 在类或方法上面加上@SuppressWarnings注解
例如: @SuppressWarning(“squid:S1456”) publicclass Example { } ,squid:S456则是扫描的缺陷规则编号。
Checkmarx和CoBot消除误报方法:
通过人工复核,消除误报。也就是通过人工标记缺陷误报,不用报出。所有工具都支持该方法消除误报。
Wukong工具消除误报方法:
通过添加定制规则,把某一类缺陷规则,添加对净化函数的判断处理来,来消除误报。导入定制的规则后,既可以实现增加规则,报出缺陷,或减少误报。