前言
手动审计代码能力不够,可以用工具来凑,推荐使用JAVA代码审计神器:Fortify
介绍
Fortify 是一个静态的、白盒的软件源代码安全测试工具。它通过内置的五大主要分析引擎:数据流、语义、结构、控制流、配置流等对应用软件的源代码进行静态的分析,通过与软件安全漏洞规则集进行匹配、查找,从而将源代码中存在的安全漏洞扫描出来,并可导出报告。扫描的结果中包括详细的安全漏洞信息、相关的安全知识、修复意见。
原理
代码转换:Fortify首先将前端代码(如Java、C++等)通过编译器或解释器转换成一种中间表示文件,称为Normal Syntax Tree(NST)。
漏洞分析:通过内置的五大分析引擎,对NST文件进行细致分析,匹配安全漏洞规则库中的特征。
报告生成:一旦发现漏洞,Fortify会抓取相关信息,并生成包含详细漏洞信息的FPR(Fortify Project Result)报告文件,供开发者在AWB(Application Security Workbench)中查看。
首先通过调用语言的编译器或者解释器把前端的语言代码(如JAVA,C/C++源代码)转换成一种中间媒体文件NST(Normal Syntax Tree),将其源代码之间的调用关系,执行环境,上下文等分析清楚。通过分析不同类型问题的静态分析引擎分析NST文件,同时匹配所有规则库中的漏洞特征,将漏洞抓取出来,然后形成包含详细漏洞信息的FPR结果文件,用AWB打开查看。
功能
静态代码分析:Fortify 会对源代码进行静态分析,找出可能导致安全漏洞的代码片段。它能识别多种类型的安全漏洞,如 SQL 注入、跨站脚本(XSS)、缓冲区溢出等。
数据流分析:Fortify 不仅分析单个代码文件,还跟踪应用程序的数据流。这有助于找到更复杂的漏洞,如未经验证的用户输入在应用程序中的传播路径。
漏洞修复建议:当 Fortify 发现潜在的安全漏洞时,它会为开发人员提供修复建议。这有助于开发团队更快地解决问题,降低应用程序的风险。
集成支持:Fortify 可以与多种持续集成(CI)工具(如 Jenkins、Bamboo 等)和应用生命周期管理(ALM)工具(如 Jira、Microsoft Azure DevOps 等)集成,实现自动化的代码扫描和漏洞跟踪。
报告和度量:Fortify 提供了丰富的报告功能,帮助团队了解项目的安全状况和漏洞趋势。通过这些报告,管理层可以更好地了解应用程序的安全风险,并采取相应的措施。
安装
下载地址:
链接: https://pan.baidu.com/s/1GIzf1xi7cCNvkB6I-p7bUg?pwd=uk9d
1、下载Fortify
从网盘下载,文件大小1G左右
解压以后的内容:
2、安装Fortify
双击exe文件安装
同意协议
选择安装位置,默认在C盘,如果C盘空间不足可以选择其他磁盘
默认即可
找到license的位置,默认会定位到exe安装文件同目录下的license文件,不用修改
更新服务器,删掉清空
SCA设置,默认的No
安装样例源码,默认的Yes
准备安装
大概等几分钟以后,安装完成。
3、替换jar包
把解压目录下的fortify-common-20.1.1.0007.jar,复制到安装目录下,覆盖。
如果没有正确替换jar包,会报以下错误:
4、复制规则文件
复制解压出来的规则文件夹到安装文件夹。
如果rules的文件放置不正确,扫描的时候会报以下错误:
5、启动Fortify
第一种方式:左下角windows徽标,输入audit,找到Audit Workbench启动
第二种方式,在bin目录下双击auditworkbench.cmd启动
启动中
是否更新规则文件,可以点Yes
启动成功:
扫描项目,左上角File——Scan Java Project
选择需要扫描的项目文件夹
选择项目的JDK版本
扫描选项
扫描结果:
到此