Fortify过滤器怎么设置,以及Fortify过滤器把有效漏洞隐藏了又该怎么处理,这里的关键是先要分清楚“为了方便查看而做的过滤”和“在扫描阶段就直接把结果排除掉”这两件事情。在Fortify里面,是可以通过filter set、filter file、问题视图条件这些方式,去减少结果当中的噪音的,但如果规则设得太宽,就有可能把真实的漏洞也一起藏起来。官方的文档里面也提到过,使用filter set所隐藏的问题,当它在扫描阶段被应用的时候,是有可能不会被写入到FPR结果文件里面去的,对这一类的配置,需要特别谨慎。
一、Fortify过滤器怎么设置
Fortify的过滤器,一般是用来缩小问题的范围的,比如只看高风险的问题、只看某一个规则组、只看某一类文件,或者暂时把已经确认不处理的问题隐藏起来。在做设置的时候,不要一上来就大面积地去排除,最好是从查看层面的过滤开始入手。
1、先按照风险的等级去过滤
通过Priority、Severity或者Fortify Priority Order,先去查看Critical、High这一类优先级比较高的问题。这种过滤方式,比较适合初次进行审计的时候使用。高风险的问题放在前面先处理,低风险的问题排在后面再分批去查看,这样就不容易被大量的Code Quality,或者是低等级的问题给淹没。Fortify SSC的OVERVIEW和AUDIT页面,也支持按照Fortify Priority去查看Critical、High、Medium、Low和All这些问题的分类。
2、再按照规则和目录去过滤
对照Rule Category、Analyzer和File Path,去缩小问题的范围。比如说,只看SQL Injection、Path Manipulation、Command Injection这类安全方面的问题,再或者只看业务源码的目录,而不去看测试目录、示例代码和第三方的代码。这里要留意的是,对目录的排除,不能随便就写成大范围的通配符。比如说,把common、utils、framework这一类目录直接隐藏掉,就有可能把公共安全函数里面真实存在的问题,也一起给盖住了。
3、在创建过滤器之前,先把默认的配置复制一份
在Audit Workbench里面创建新的filter set的时候,官方的文档建议,是从已有的filter set复制一份以后,再去进行修改,而不是直接去改动默认的配置。创建的入口,一般是Tools下面的Project Configuration里面的Filter Sets,再去新增过滤器,并且选择已有的配置作为基础。这样做的好处,是可以把原始的视图保留下来,后面如果发现过滤的规则不合适,还能够切回到默认的结果去重新检查。
二、Fortify过滤器把有效漏洞隐藏了怎么办
当有效的漏洞被隐藏的时候,不要急着去重新扫描。先要判断一下,这个问题是被视图的过滤给隐藏掉了,还是在扫描的阶段就已经被排除掉了。如果只是视图层面的过滤,那通常还是能找回来的;但如果在扫描的时候就没有写入到FPR文件里面,那就可能需要去调整配置,然后再重新扫描了。
1、先把隐藏的问题显示出来
在SSC或者Audit Workbench里面,去检查当前视图的配置,确认一下是不是启用了隐藏规则、过滤条件,或者是suppressed issues的显示限制。Fortify SSC的文档里面也说明了,hidden issues是因为当前的filter set规则没有把它们显示出来,这类问题可以通过查看隐藏问题的相关设置,把它们给显示出来。在Audit Workbench里面,被suppress的问题,也可以通过Options下面的Show Suppressed Issues来显示出来,然后再去执行unsuppress。
2、检查过滤器的规则是不是设得过宽了
对照Filter Set、Rule Category、Folder和File Extension,去看一看是不是把有效的范围给排除掉了。比如说,原本只是想把测试的代码隐藏起来,结果却写成了把整个src/test和一部分共用的目录都给排除掉了;又或者,原本只是想把代码质量这一类的问题隐藏起来,却把某些安全的规则组也一起排除出去了。发现了这种情况,就要先把过滤的条件收窄,然后再重新去查看问题的列表。
3、确认是不是在扫描阶段就已经被排除了
如果是使用了filter file,或者在扫描阶段使用了filter set来排除结果,那就需要去检查扫描的命令和issue template。Fortify的文档里面也说明了,filter file可以按照漏洞的实例、规则和漏洞的类别,把问题从分析结果里面移除掉;而filter set,也可以在扫描的阶段,就把隐藏的问题从FPR当中给排除出去。在这种情况之下,结果文件里面很可能原本就没有这些问题。想要恢复查看,就只能去调整过滤的配置,然后再重新扫描,而不是单纯地切换一下页面的过滤条件就能解决的。
三、Fortify过滤器设置后怎么避免误隐藏
过滤器并不是配置完一次,就可以一直不去管它的。项目的代码、规则包、目录结构发生了变化以后,原来的过滤规则,就可能变得不再合适了。尤其是在安全审计的场景下面,过滤器要能够给出解释,不能只是为了把问题的数量变少就去使用它。
1、保留一个完整结果的视图
在项目里面,最好是保留All Issues或者默认的filter set,不要只保留那一份被压缩过的视图。在做审计之前,可以先去看一遍完整的结果,然后再按照优先级,分层次地去处理。这样即便是某一个过滤器出了问题,也不会完全失去对原始结果的判断。
2、过滤规则要附带说明
每一条过滤规则,最好是注上它的原因,比如说第三方库不纳入整改、测试代码是单独去管理的、低优先级的问题放到后面再批量处理。没有附带说明的隐藏规则,到了后面就很难判断,这到底是一种合理的降噪,还是把风险给藏起来了。
3、重大的版本变更之后要重新核对
在规则包升级、代码目录调整、扫描配置发生变化以后,都需要重新去检查过滤器。特别是新增了模块、公共组件发生了迁移、框架目录出现了变化的时候,旧的那些路径过滤,是很容易误伤到真实业务代码的。
总结
Fortify过滤器怎么设置,以及Fortify过滤器把有效漏洞隐藏了怎么办,这里面的关键在于,要把查看过滤、问题抑制,还有扫描阶段的排除,这几件事情给区分清楚。日常做审计的时候,可以按照风险等级、规则类别和目录的范围去过滤,但是不要一上来就大范围地去做排除。发现有效的漏洞被隐藏了以后,要先把隐藏的问题和suppressed issues给显示出来,然后再去检查filter set、filter file和扫描的配置。如果问题在扫描的阶段就已经被排除掉了,那就需要去调整配置,然后再重新扫描。过滤器的目标,是用来减少噪音,而不是让真实的风险,从报告里面消失掉。