Fortify介绍
Fortify是一款强大的静态代码扫描分析工具,其发现代码漏洞缺陷的能力十分强悍,主要是将代码经过编译,依托于其强大的内置规则库来发现漏洞的。其次fortify SCA团队在开发此商业工具时,也提供了自定义规则的接口,只要经过正版授权后,便可以在此基础上自定义规则,来增强Fortify SCA的漏洞识别能力,同时经过自定义规则,也可以降低误报,使静态分析的准确度和性。
默认情况下,Fortify SCA使用安装的安全编码规则包来检查源代码,并定义一系列可能出现的问题,如可者李勇的安全漏洞和不良的编码缺陷。
安全编码规则中的规则分析受支持语言的和扩展的API包中的函数,并将分析结果记录在Fortify SCA中。每一个问题的解释包含了对问题的描述和建议的解决方案,一边更好的解决程序中的漏洞和缺陷。也可以通过创建自定义规则包来准确地分析特定的应用程序,验证专门的安全规则以及细化Fortify SCA所报告的问题。
Fortify编写自定义规则原理
要编写有效的自定义规则,就必须熟悉一直的安全漏洞类别和通常与他们相关的函数类型。深入理解各类经常出现在特定类型漏洞的函数,有利于在编写自定义规则过程中能够准确地找到与安全相关的函数。任何一门语言,都有其庞大的开源框架和lib库。所以自定义规则,既要精通安全漏洞原理,又要熟练掌握一门或几门开发语言,一般自定义规则用的比较多的语言有java、C/C++、PHP等。其次必须识别与安全相关的函数,并熟悉这些函数的特性以此来确定能够体现各个函数具体行为和与之相关的漏洞类别的正确规则形式。一旦确定好了这种联系,使用自定义规则编辑器来创建规则就相对简单了。
Fortify相比codeql的优势在于:
商用工具,拥有许多预设规则,比较成熟。规则开发模式比较局限,但是对于某些特定场景的规则开发相对简单。适合大规模规则的扫描。
Fortify是一款商业级的源码扫描工具,其工作原理和codeql类似,甚至一些规则编写的语法都很相似。
HP Fortify SCA采用的X-Tier数据流程分析技术,完整分析各种程序语言之执行流程、数据输入/输出及程序语法,即使同一个应用系统中包含了不同语言的源代码,也可以完整分析及串接。透过HP Fortify SCA持续更新的检查规则(Rulepack),让蕞新的弱点可以被发现并修补,使用者也可以自行定义审计规则,针对特殊程序编写规则或要求进行检查。