【软件测试】Fortify 代码安全扫描

在这里插入图片描述

Fortify 是一套由 Micro Focus(现属 OpenText)公司开发的、业界领先的 静态应用程序安全测试工具集。它的核心任务是帮助开发者在软件开发生命周期的早期 发现、分析和修复源代码中的安全漏洞和质量缺陷

您可以把它想象成一个功能极其强大的 “代码安全扫描仪” 或 “安全专家助手”。

1.核心概念:静态应用程序安全测试

Fortify 的核心技术是 SAST静态应用程序安全测试Static Application Security Testing)。

  • 静态分析:在不实际运行程序的情况下,直接对源代码(JavaC/C++C#.NETJavaScriptPythonPHP 等 20+ 种语言)进行扫描和分析。
  • 对比动态分析:动态分析是在程序运行时进行测试(例如通过模拟黑客攻击),而 SAST 在编码、测试阶段就能提前介入。

优势左移安全。将安全问题尽可能 “左移” 到开发周期的早期阶段解决,这比软件上线后才发现漏洞再修复的成本要低得多。

2.Fortify 产品家族的主要组成部分

Fortify 不是一个单一的工具,而是一个产品生态链,主要包括:

  • 1️⃣ Fortify Static Code Analyzer
    • 核心引擎:这是执行源代码扫描的 “大脑”。它使用先进的数据流分析、控制流分析、语义分析等技术,模拟漏洞被利用的路径,从而精准地发现潜在的安全风险。
    • 支持语言:覆盖非常广泛,从后端到前端,几乎涵盖所有主流编程语言。
  • 2️⃣ Fortify WebInspect
    • 这是一个 动态应用程序安全测试 工具,用于在程序运行时进行安全测试,作为 SCA 的补充,提供更全面的安全视角。
  • 3️⃣ Software Security Center
    • 中央管理平台:这是一个 Web 控制台,用于集中管理安全扫描任务、分析结果、生成报告和跟踪漏洞修复进度。
    • 协作枢纽:开发人员、安全团队和管理层可以在这里协同工作。安全工程师可以定制规则,开发人员可以查看分配给自己的漏洞并上传修复后的代码进行验证。
  • 4️⃣ Fortify ScanCentral
    • 解决大规模项目扫描性能问题。它允许将扫描任务分发到 “扫描农场” 中进行分布式、并行扫描,大大提高了扫描速度。

在这里插入图片描述

🚀 https://idol-support.microfocus.com/find/public/search/query

3.Fortify 的工作流程

一个典型的使用流程如下:

  • 1️⃣ 扫描:开发人员提交代码后,CI/CD 流水线自动触发 Fortify SCA 对代码进行扫描。或者,开发人员也可以在本地 IDE 中使用插件进行快速扫描。
  • 2️⃣ 分析:扫描引擎将源代码解析成中间模型,然后根据内置的、包含数千条规则的 “安全知识库” 进行模式匹配和数据分析,找出潜在的漏洞。
  • 3️⃣ 结果汇总:扫描结果被上传到 Software Security Center。
  • 4️⃣ 审计与分类:安全工程师或资深开发人员会对扫描出的 “问题” 进行审阅,确认其是否为真正的漏洞、风险等级(严重、高、中、低)以及是否需要修复。这一步非常重要,可以避免误报干扰开发团队。
  • 5️⃣ 任务分配与修复:确认后的漏洞会被分配给相应的开发人员,并集成到 Jira 等项目管理工具中进行跟踪。
  • 6️⃣ 验证与报告:开发人员修复代码后,重新扫描以验证漏洞是否已解决。SSC 会生成各种合规性和管理报告,展示安全状况的改善趋势。

4.Fortify 能发现哪些类型的安全问题?

Fortify 的安全知识库非常庞大,能够检测数百种漏洞类型,主要包括:

  • 注入漏洞:SQL 注入、OS 命令注入、LDAP 注入等。
  • 跨站脚本:反射型 XSS、存储型 XSS。
  • 缓冲区溢出:主要针对 C/C++ 代码。
  • 不安全的配置:弱加密、错误的权限设置等。
  • 敏感信息泄露:硬编码的密码、密钥泄露等。
  • 代码质量隐患:资源未释放、空指针解引用等。
  • 合规性违反:违反 OWASP Top 10、CWE/SANS Top 25、PCI-DSS、HIPAA 等业界安全标准。

5.Fortify 的优势与挑战

5.1 优势

  • 早期检测:在编码阶段就能发现问题。
  • 全面性:支持语言多,漏洞覆盖全。
  • 深度分析:不仅仅是模式匹配,还能进行数据流跟踪,发现更复杂的漏洞。
  • 集成性好:能与主流 IDE、CI/CD 工具、缺陷跟踪系统无缝集成。
  • 降低修复成本:越早发现漏洞,修复成本越低。

5.2 挑战

  • 误报:静态分析工具普遍存在一定比例的误报,需要人工审计。
  • 学习成本:工具功能强大,配置和优化需要专业知识。
  • 成本高昂:商业许可证价格不菲,通常为大中型企业所采用。
  • 无法发现运行时漏洞:对于依赖特定环境配置或第三方服务的漏洞,SAST 无能为力,需要 DAST 工具补充。

6.Fortify 与 Sonar 的区别

Fortify 和 SonarQube 都是顶级的代码质量与安全工具,但它们的设计初衷和侧重点有显著不同。

简单来说:

  • Fortify专业的安全卫士,它的核心目标是精准地查找并消灭安全漏洞,尤其擅长高级别的安全威胁。
  • SonarQube全面的代码质检员,它的目标是全面提升代码的整体健康度,其安全功能是整体质量模型的一部分。

下面我们从几个维度进行详细对比。

6.1 核心异同点对比表

特性
Fortify
SonarQube
核心定位应用程序安全测试 工具,专注于安全漏洞。代码质量平台,统一管理代码的 可靠性、安全性和可维护性
主要强项深度安全漏洞检测(尤其是 SAST)。拥有极其强大的安全知识库和精准的污点跟踪技术。代码质量度量技术债管理丰富的质量规则。提供全局代码健康度视图。
技术类型主要是 SAST,其产品线也包括 DAST、SCA 等,形成安全生态。主要是 静态代码分析,覆盖 代码质量漏洞安全漏洞
漏洞检测深度非常深。通过数据流分析、控制流分析追踪污点传播路径,能发现复杂的逻辑漏洞。比较广泛。能检测 OWASP Top 10 等常见安全漏洞,但在深度和精准度上通常不及 Fortify。
规则库侧重安全漏洞规则库 是其核心,由安全研究团队持续更新,针对各种攻击向量。规则库非常全面,包含 代码缺陷代码异味安全漏洞测试覆盖率 等。安全规则是其中一个子集。
报告视角安全工程师视角。报告侧重于漏洞的风险等级、CVSS 评分、攻击方法和修复建议。开发团队和管理层视角。报告提供整体代码质量评分、技术债、重复代码率等宏观指标。
集成与流程深度集成到 安全 SDL 流程中,与缺陷跟踪系统(如 Jira)和 CI/CD 紧密集成,强调漏洞生命周期管理。深度集成到 DevOps / DevSecOps 流程中,作为代码门禁,是开发人员每日工作的必备工具。
商业模式商业闭源软件,价格昂贵,通常为大中型企业所用。有强大的 开源社区版,以及功能更丰富的 商业版,入门门槛低。

6.2 通俗比喻:汽车制造厂

  • SonarQube 就像 总装线上的质量检测站。它检查一切:螺丝是否拧紧(代码缺陷 / Bug)、线路布局是否整洁(代码异味)、车门缝隙是否均匀(代码规范)、以及是否有明显的安全隐患,比如刹车线外露(基础安全漏洞)。它的目标是确保下线的每辆车整体质量达标。

  • Fortify 就像 专业的碰撞安全实验室。它不关心车门缝隙,而是用高速摄像机、传感器等专业设备,模拟极端碰撞情况,分析车架结构是否在撞击时能有效吸能,安全气囊能否精准弹出(复杂的、深度的安全漏洞)。它的目标是发现那些在普通路测中无法发现的、致命的安全缺陷。

🚀 一辆好车,既需要总装线的全面质检,也需要专业的安全实验室测试。

6.3 如何选择?它们是对手还是伙伴?

实际上,在现代开发流程中,它们更多是互补的伙伴关系,而非非此即彼的选择。

6.3.1 典型的分工协作场景:

  • 开发阶段(每日):使用 SonarQube
    • 原因:扫描速度快,反馈及时,能与开发者的IDE集成。开发者每次提交代码后,能立刻看到代码质量问题和基础的安全漏洞,并快速修复。这实现了安全的“左移”。
  • 代码合并/发布前(关键节点):使用 Fortify
    • 原因:进行深度、全面的安全扫描。虽然扫描速度较慢,但它能挖掘出 SonarQube 可能无法发现的、更深层次的安全漏洞。这个扫描结果由安全团队进行审计,并将确认的漏洞分配给开发者修复。

6.3.2 选择建议

  • 如果你的首要目标是提升开发效率、改善代码可维护性、建立代码质量文化,并且安全需求是基础级别的,那么 SonarQube 可能是更合适、更具性价比的选择。
  • 如果你的应用处于高安全要求的行业(如金融、政务、医疗),或者需要满足严格的安全合规性要求,且拥有专业的安全团队,那么 Fortify 是必不可少的标准配置。通常,企业会 同时使用两者,用 SonarQube 管质量,用 Fortify 管深度安全。

6.4 总结

Fortify
SonarQube
核心问题这代码是否会被黑客攻击?这代码是否健康、易于维护?
理想角色深度安全审计官代码质量教练

最好的实践是让 “教练”(SonarQube)在日常开发中培养开发者的良好习惯,防止大部分问题;再让 “审计官”(Fortify)在关键节点进行专业审查,确保万无一失。

7.总结

Fortify 代码安全是一套企业级的、以 SAST 技术为核心的软件安全解决方案。它通过自动化扫描源代码,帮助组织系统化地管理应用安全,将安全实践无缝嵌入到 DevOps 流程中,最终目标是打造出更安全、更可靠的软件产品。

对于追求高质量和安全性的软件开发团队来说,Fortify 是一个非常重要的专业工具。

fortify扫描工具的说明手册,对实际工作有指导作用,讲的比较清晰。 Fortify SCA分析原理 Front-End 3rd party IDE Java Pug-In C/C++ MicrOsoL NET IBM.eclipse Audit workbench PLSQL XML Analysis Engine Semantic fdi/ fpr Gobal Data flow N Control Flow Configuration Structural Fortify Manager NST Rules builder Custom Pre-Packaged FORTIFY Fortify SCA分析过程 SCA Engine Intermediate Scan phase fles Using Analyzers Tt transation (NST) .Rules Analysis Result File -b build id 阶段一:转换阶段( Translation) 阶段二:分析阶段(Scan o sourceanalyzer-b <build-id>-clean o sourceanalyzer -b <build-id> sourceanalyzer-b <build-id> -Xmx1250m-scan-f results fpr FORTIFY Fortify SCA扫描的工作 Visual studio Eclipse, IBM RAD 面 Audit Workbench Java,. Net Fortify Global Build Tool C, C/C++ Analysis JSP Touchless Build Fortify PL/SQL IDE Intermediate FPR TSOL Model Cold Command Line Interface Fusion 运己 Fortify I m Manager Secure Coding Rules Fortify Customized Rules Rules FORTIFY Fortify SCA扫描的五种方式 插件方式: Plug-In(Eclipse, vs WsAd,rad) 命令行方式 Command line ●扫描目录方式: Audit workbench scan Folder 与其他工具集成: Scan with ANt, Makefile ●编译监控器方式: Fortify SCA Build Monitor FORTIFY Fortify SCA扫描的四个步骤 Fortify SCA扫描总共可以分为四个步骤: ●1. Clean:清除阶段: sourceanalyzer -b proName -clean 2. Translation:转换阶段 3.ShoW-fe:查看阶段 sourceanalyzer -b proName -show-files 4.scan:扫描阶段 sourceanalyzer-b proName -Xmx1250m -scan -f proName. fpr FORTIFY Fortify SCA命令行参数说明 查看SCA扫描命令及参数→> sourceanalyzer ca\ C:\VIRDoS\syste32\cd. exe 川 icrosoft Windows XP[版不5.1268g Kc版权所有1985-2 061 Microsoft Gorp :Documents and settings anming >sourceanalyzer --he lp Fortify Source Code Analyze4..日.回153 Copyright (c>2003-2006 Fortify Software Usage Bu⊥1d Java: sourceanalyzer -b <buildid> <files> sourceanalyzer -b <buildid> javac <compiler opts> <files> G/C++: sourceanalyzer -b <buildid> <compiler> <compiler opts> <files> NET: sourceanalyzer -b <buildin> <exe file> scan〓 sourceanalyzer -b <buildid> -scan -f results. fpr Output opt ions -format <fmt> Controls the output format. Valid options are auto, fpr. fvdl, and text. Default is auto for which type will be determined automatically based on file extension 一£<fi1e> The file to which results are written Default is stdout build-pro ject <name> The name of the project being scanned. Will be inc luded in the output bu⊥1d-1abe1<labe1> The1abe1 of the project being scanned.W主工1 be inc luded in the output build-version <version> The version of the project being scanned. wil1RTIFY. e uale OFTWARE Fortify SCA转换源代码 转换Java代码 Java程序命令行语法 JaVa命令行语法例子 转换J2EE应用程序 使用 Find bugs 转换NET源代码 o. NET Versions 1.1 and 2.0 Visual studio. net version 2003 o Visual studio.net version 2005 转换CC++代码 ●转换 PL/SQLITSQL FORTIFY SCA转换JAVA源代码命令 sourceanalyzer -b <build-id> -cp <classpath> <file-list> ●附注参数:-Xmx;- encoding-jdk;- appserver- appserver- veron -appserver-home Table 1: File specifiers File specifier Description darna盈e All files found under the named directory or any subdirectories dx己盈e/古古 Any file named Example. java found under the named Example java directory or any subdirectories dx22盈e/,ava Any file with the extension. j ava found in the named directory dxna盈e吉/古,java Any file wth the extension j ava found under the named directory or any subdirectories d工22a盈e/方/吉 All files found under the named directory or ary subdirectories (same as dirname FORTIFY
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据与AI实验室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值