【代码审计】Fortify浅用

admin 2026-04-16 04:57:32 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详细介绍了使用Fortify工具进行Java项目代码审计的全流程,包括工具启动、JDK版本选择、扫描参数配置、漏洞扫描执行等关键步骤。重点分析了因未导入完整Maven依赖导致的漏报问题,并提供了配置阿里云镜像、修改本地仓库路径等具体解决方案。通过SQL注入漏洞的实例演示了Fortify的Diagram视图和函数调用栈分析功能,最后简要说明了报告导出和工具获取方式。 综合评分: 82 文章分类: 代码审计,安全工具,漏洞分析,WEB安全,安全开发


cover_image

【代码审计】Fortify浅用

原创

十月的进阶之路 十月的进阶之路

十月的进阶之路

2026年4月15日 16:08 重庆

在小说阅读器读本章

去阅读

快乐的一天从摸鱼开始,又从摸鱼结束

目录

  1. 启动Fortify工具
  2. 选择项目JDK版本
  3. 扫描参数配置
  4. 启动漏洞扫描
  5. 扫描漏洞数量分析(含Maven依赖配置)
  6. 漏洞抽样分析(以SQL注入为例)
  7. 审计报告导出
  8. Fortify工具获取与安装

1. 启动Fortify

启动Fortify工具后,首先需区分项目类型,重点区分Java项目与其他类型项目,便于后续针对性配置扫描规则。

2. 选择项目的JDK版本

根据当前审计项目的实际JDK版本进行选择,确保扫描环境与项目运行环境一致,避免因版本不匹配导致扫描异常或结果偏差。

3. 扫描配置

进入扫描配置界面,按以下标准配置参数,兼顾安全风险覆盖与代码质量检测,适配Java EE项目场景:

  1. 安全关注度:Show me all issues that may have security implications 覆盖全量安全风险,适配远程+本地双重防护,不遗漏潜在安全隐患;
  2. 代码质量:Show me all code quality issues 兼顾安全检测与代码规范、项目稳定性,同步排查代码层面的非安全类问题;
  3. 是否Java EE应用:Yes 启用Java EE专属扫描规则,针对性检测Java EE项目特有的安全漏洞;
  4. 是否高权限运行:Yes 强化高权限场景下的风险检测,确保高权限操作相关的漏洞无遗漏。

4. 开始扫描

配置完成后,点击开始扫描,扫描时长根据项目大小而定,期间无需手动操作,等待扫描完成即可。

5. 扫描漏洞数量分析

扫描完成后,查看初步扫描结果,会发现存在较多漏报情况——甚至基础的SQL注入漏洞都未被检测出来。

核心原因是未导入项目完整依赖,导致Fortify无法全面解析项目代码,扫描结果不准确。因此,需通过Maven导入项目完整依赖,同时配置国内镜像解决网络访问问题,具体操作如下。

5.1 配置Maven镜像与本地仓库

在用户目录(路径:C:\Users\xxx\.m2\)下,找到settings.xml文件(若不存在则新建),添加如下配置:

<?xml version="1.0"&nbsp;encoding="UTF-8"?>
<settings&nbsp;xmlns="http://maven.apache.org/SETTINGS/1.0.0"
&nbsp; &nbsp;&nbsp;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
&nbsp; &nbsp;&nbsp;xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

&nbsp; &nbsp;&nbsp;<!-- 阿里云镜像(解决Maven网络访问问题)-->
&nbsp; &nbsp;&nbsp;<mirrors>
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<mirror>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<id>aliyunmaven</id>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<mirrorOf>central</mirrorOf>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<name>Aliyun Maven</name>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<url>https://maven.aliyun.com/repository/public</url>
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</mirror>
&nbsp; &nbsp;&nbsp;</mirrors>

&nbsp; &nbsp;&nbsp;<!-- 本地仓库位置(建议修改到指定路径,避免C盘占用过大) -->
&nbsp; &nbsp;&nbsp;<localRepository>D:/local_repository</localRepository>

</settings>

5.2 导入项目依赖

打开项目根目录(含pom.xml文件),执行如下Maven命令,导入项目所有第三方依赖:

mvn clean compile

5.3 项目迁移(无Maven环境场景)

若需将项目迁移到无Maven环境的电脑上进行审计,可执行如下命令,将所有第三方依赖包合并到项目中,便于直接移动整个项目:

mvn dependency:copy-dependencies

执行完成后,所有依赖jar包会自动复制到项目目录下的 target/dependency/ 文件夹中。

5.4 重新扫描验证

导入完整依赖后,重启Fortify工具,重新执行扫描操作,得到的扫描结果会大幅完善,之前未检测出的SQL注入等漏洞也能被精准识别。

6. 漏洞抽样分析

选取扫描结果中的一个SQL注入漏洞,结合FortifyDiagram视图进行深度分析,可清晰发现:数据从source(输入源)到sink(执行点)的传输过程中,未经过任何过滤处理,且未使用预编译语句,最终导致SQL注入漏洞产生。

同时,Fortify提供完整的函数调用栈,可直观追溯漏洞产生的代码路径,便于快速定位问题根源、分析漏洞危害。

注: 其他漏洞不再详细分析,该靶场代码已在前期通过手工方式完整审计过。

7. 报告导出

实际审计工作中,一般不使用Fortify自带的报告导出功能,相关操作界面参考如下。

8. Fortify工具获取以及安装教程

网上一大把,不写了。

摸鱼跑路,byby~~


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:十月的进阶之路 十月的进阶之路 十月的进阶之路《【代码审计】Fortify浅用》

评论:0   参与:  0