Fortify SCA 命令行使用 (v2024.4)

admin 2025年5月15日16:48:31评论0 views字数 6209阅读20分41秒阅读模式

Fortify SCA 命令行使用 (v2024.4)

△△△点击上方“蓝字”关注我们了解更多精彩
0x00 前言
免责声明:继续阅读文章视为您已同意[NOVASEC免责声明].

综合使用了多款代码审计工具后,总结出对人工代码审计工具的如下要求:

1支持UI进行人工判定2人工分析要支持代码跳转3支持自定义分析规则(进阶)
seay的结果过多时,经常不知道自己审计到哪里了,人工审计不是特别友好。如果有二开版本可以排除部分结果也是不错的。
Fortify使用上是其中最令人满意的一款,安装简单,多语言支持,流审计效果不错,UI界面操作便于人工审计。缺点是自定义规则比较复杂,但是不影响常见场景的使用。

在深入使用 Fortify SCA 2024.4.0 版本时,发现通过UI分析项目会存在以下问题:

1部分情况下通过UI扫描会报错,大部分是RPC调用的问题2通过UI扫描无法准确把握分析进度,即使程序错误
经过验证发现最好还是在 sourceanalyzer.exe 命令行模式下进行PHP项目扫描,然后再通过Auditworkbench UI分析代码。
1
0x01 FortifySCA命令使用流程
1. 编译项目src -> 得到NST2. 分析项目NST -> 得到fpr文件3. 审计项目Fpr -> Fortify UI 打开.fpr
1
0x02 审计PHP常用流程

1、编译项目

sourceanalyzer.exe -debug   -verbose -Xmx10G  -encoding UTF-8 -b demoapp C:demo_app

1、或只编译php文件后缀

sourceanalyzer.exe -debug   -verbose -Xmx10G  -encoding UTF-8 -b demoapp C:demo_app***.php

2、分析漏洞

sourceanalyzer.exe -debug   -verbose -Xmx10G  -encoding UTF-8 -b demoapp -scan -f demoapp.fpr

审计JAVA可以参考命令:

42篇:Fortify代码审计命令行下的使用与调用方法https://mp.weixin.qq.com/s/FEnal9ZkIEJOXLcmX0WXgQ
1
0x03 Fortify SCAv24.4.0 命令详情 
Fortify 静态代码分析器 CE 24.4.0.0114版权所有 © 2003-2024 Open Text用法:清理:sourceanalyzer.exe -b <构建标识> -clean构建:sourceanalyzer.exe -b <构建标识> <sca-构建选项>扫描:sourceanalyzer.exe -b <构建标识> -scan <sca-扫描选项>详细调用方式:构建:sourceanalyzer.exe -b <构建标识><sca-构建选项> ]<文件指定符>sourceanalyzer.exe -b <构建标识><sca-构建选项> ]<编译器> <编译器选项>sourceanalyzer.exe -b <构建标识><sca-构建选项> ]无接触模式 <构建工具> [ <构建工具选项> ]sourceanalyzer.exe -b <构建标识><sca-构建选项> ]devenv <解决方案文件> /REBUILDsourceanalyzer.exe -b <构建标识><sca-构建选项> ]msbuild /t:rebuild <解决方案或项目文件>sourceanalyzer.exe -b <构建标识><sca-构建选项> ]xcodebuild -project <xcodeproj文件>sourceanalyzer.exe -b mybuild-source-base-dir <Web应用程序根目录> <cfm文件指定符>扫描:sourceanalyzer.exe -b <构建标识> -scan[ -f <输出文件> ][ -scan-precision <级别> ][ -rules <rules.xml> [ -no-default-rules ] ][ -filter <过滤文件> ]清理:sourceanalyzer.exe -b <构建标识> -clean查询:sourceanalyzer.exe -b <构建标识> { -show-build-warnings | -show-files }sourceanalyzer.exe { -version | -show-build-ids }sourceanalyzer.exe { -h | -? | -help }通用选项这些选项适用于所有 sourceanalyzer.exe 的调用。@<文件> 从指定的文件中读取命令行选项。注意文件参数前没有空格。-debug 使构建步骤向日志文件写入额外的故障排除信息。如果 Fortify 客户支持要求,请使用此选项。另请参阅 -logfile。-logfile <文件> 指定日志文件的目标路径。-verbose 将详细消息输出到控制台。-Xmx<num>M 指定最大 Java 堆内存大小。默认值为 -Xmx1800M。-autoheap 指示 SCA 根据可用的物理内存自动设置最大 Java 堆内存大小。可以替代 -Xmx 使用,默认已启用。-fcontainer 在 Docker 容器中运行时,指示 SCA 检测并仅使用分配给容器的内存。-version 显示 sourceanalyzer.exe 的版本信息。命令选项注意:每次调用仅允许使用一个“命令”选项。-h 显示此帮助文本。-help-?-clean 删除所有中间文件和构建记录。如果同时通过 -b 指定了构建 ID,则仅删除与该构建 ID 相关的文件和构建记录。-show-binaries 请参阅《Fortify SCA 用户指南》。-show-build-tree 请参阅《Fortify SCA 用户指南》。-show-build-ids 列出所有的 Fortify 构建 ID(分析模型)。-show-build-warnings 显示在构建 ID(由 -b 指定)的翻译阶段发生的可操作警告。-show-files 显示构建到由 -b 指定的模型中的所有源文件。-show-loc 显示为构建到由 -b 指定的模型中的文件所处理的代码行数。-scan 使 sourceanalyzer.exe 执行分析。(无) 如果未指定任何命令选项,则假定执行构建步骤。构建选项“构建”选项将源代码翻译为 Fortify 分析模型。-b <构建标识> 指定一个唯一名称,用于标识要构建的 Fortify 分析模型。另请参阅 -scan。-build-label <标签> 向 Fortify 分析模型指定一个可选的任意字符串值。该值将包含在输出文件中。-build-project <项目> 向 Fortify 分析模型指定一个可选的任意字符串值。该值将包含在输出文件中。-build-version <版本> 向 Fortify 分析模型指定一个可选的任意字符串值。该值将包含在输出文件中。-encoding <编码名称> 指定源文件的编码。默认值为平台默认编码。编译器集成构建选项这些选项在将 Fortify SCA 与编译器集成时使用。<编译器> <编译器选项> 指定编译器命令行。正在编译的文件将被添加到分析模型中,并且编译器将会被调用。touchless <构建工具> 指定一个构建工具命令。构建工具将会被调用,任何正在编译的文件都将被添加到分析模型中。<构建工具选项> ]-nc 指定此选项时,编译器不会被调用。文件指定构建选项这些选项用于直接将源文件传递给 Fortify SCA。<文件指定符> 表示文件或一组文件的表达式,可选地匹配模式:file1.java - 一个文件file*.java - 匹配表达式的文件"path/**/*.java" - 递归表达式匹配。注意:始终用引号括起包含 ** 的表达式。-exclude <文件指定符> 从需要翻译的文件集中排除与 <文件指定符> 匹配的任何文件。Java 专用构建选项这些选项应与文件指定选项一起使用。-classpath <类路径> 为 Java 构建使用指定的类路径值。-cp <类路径> 同上,简写形式。-extdirs 接受以冒号或分号分隔的目录列表。在这些目录中找到的所有 JAR 文件都将包含在类路径中。等同于 javac 的 -extdirs 选项。-sourcepath 指定源文件的位置,这些文件不会被包含在扫描中,但将用于名称解析。等同于 javac 的 -sourcepath 选项。sourcepath 类似于 classpath,但它使用源文件而不是类文件进行解析。-source <> 指定 Java 代码遵循的 Java 语言版本。有效值为 1.8、8、11、17 和 21。默认值为 "11"。-jdk <> 同上,简写形式。-java-build-dir <目录> 用于指定一个或多个 Java 源文件正在编译到的目录。也可以在扫描时指定。其他语言专用构建选项-source-base-dir <根目录> ColdFusion 应用程序的基目录。-python-path 为 Python 应用程序添加导入目录。-apex 将 ".cls" 文件扩展名设置为 Apex 语言(默认情况下基于文件内容检测)。等同于 -Dcom.fortify.sca.fileextensions.cls=APEX。-apex-sobject-path 添加文件以加载 Apex 应用程序中的 SObject 类型。扫描选项-b <构建标识> 指定构建 ID。构建 ID 用于跟踪哪些文件在构建过程中被编译和链接,以便稍后扫描这些文件。此选项可以指定多次,以在同一扫描中包含多个构建 ID。-bin <二进制文件> 所有编译并链接到指定二进制文件中的源文件都将被扫描。可以指定多个二进制文件。-disable-default-rule-type 请参阅《Fortify SCA 用户指南》。-f <文件> 写入分析结果的文件。默认值为标准输出(stdout)。-filter<文件> 指定一个过滤文件。更多信息,请参阅《Fortify SCA 用户指南》。-scan-policy <策略。有效值为 classic、security 和 devops。默认值为 security。更多信息,请参阅《Fortify 静态代码分析器用户指南》。-java-build-dir <目录> 用于指定一个或多个 Java 源文件已编译到的目录。也可以在构建时指定。-no-default-issue-rules 请参阅《Fortify SCA 用户指南》。-no-default-sink-rules 请参阅《Fortify SCA 用户指南》。-no-default-source-rules 请参阅《Fortify SCA 用户指南》。-no-default-rules 指示 Fortify SCA 不使用其默认规则。必须与 -rules 一起使用。-rules <指定符> 指定自定义规则文件或目录。如果指定的是目录,则所有以 .bin 或 .xml 结尾的文件都将被包含。此选项可以使用多次。-quick 运行快速扫描。快速扫描速度更快,但准确性较低。-scan-precision <级别> 使用特定于级别的配置属性来配置扫描的深度、精度和速度。-p <级别> 有效值为 1、2、3 和 4。-quiet 禁用命令行进度条。-scan 使 Fortify SCA 对模型执行分析。模型必须通过 -b 指定。构建会话-export-build-session <file.mbs>将通过 -b 指定的已翻译模型存储到指定的文件中。-import-build-session <file.mbs>将指定的文件加载到构建模型中。如果模型的构建 ID 已存在于模型注册表中,则导入将失败,并显示该 ID 的构建已存在的消息。示例用法ColdFusion 翻译:sourceanalyzer.exe -b mybuild -source-base-dir /www/app "/www/app/**/*.cfm"SQL 翻译:sourceanalyzer.exe -b mybuild -Dcom.fortify.sca.fileextensions.sql=PLSQL *.sqlsourceanalyzer.exe -b mybuild -Dcom.fortify.sca.fileextensions.sql=TSQL *.sqlC/C++ 构建:sourceanalyzer.exe -b mybuild gcc -c test.csourceanalyzer.exe -b mybuild CL.EXE /o HelloWorld HelloWorld.csourceanalyzer.exe -b mybuild makesourceanalyzer.exe -b mybuild devenv myproject.msproj /REBUILDObjective-C/C++ 构建:sourceanalyzer.exe -b mybuild clang -ObjC HelloWorld.msourceanalyzer.exe -b mybuild xcodebuild -project myproject.xcodeproj.NET 构建:sourceanalyzer.exe -b mybuild devenv myproj.sln /REBUILDsourceanalyzer.exe -b mybuild msbuild /t:rebuild myproj.csprojJava 专用构建:sourceanalyzer.exe -b mybuild -cp lib/dependency.jar "src/**/*.java"sourceanalyzer.exe -b mybuild -cp mytaglibs.jar webapp/*.jspsourceanalyzer.exe -b mybuild touchless antJ2EE 专用构建:sourceanalyzer.exe -b mybuild -cp "app/WEB-INF/lib/*.jar" app/*.jsp扫描步骤:sourceanalyzer.exe -b mybuild -scan -f results.fpr其他信息每个 SCA 选项的完整解释,请参阅《Fortify SCA 用户指南》。您可以使用我们的客户支持系统为 Fortify 产品在线提交支持请求。此简化的流程旨在提供更便捷的访问和更高的客户满意度。登录您的账户:https://softwaresupport.softwaregrp.com/
1
0x09 总结
Fortify SCA审计适用于大部分语言的审计,但不代表一劳永逸。
其他小众语言(小众规则)审计,在没有专用审计工具时,最好还是使用支持自定义规则的审计工具或者审计插件,保证每个场景下都有审计工具可以使用。

如需获取Fortify SCA 2024用于学习,可以在其他公众号平台进行下载或私聊交流。

Fortify SCA 命令行使用 (v2024.4)

END

如您有任何投稿、问题、需求、建议

NOVASEC公众号后台留言

Fortify SCA 命令行使用 (v2024.4)

或添加 NOVASEC 联系人

Fortify SCA 命令行使用 (v2024.4)

感谢您对我们的支持、点赞和关注

加入我们与萌新一起成长吧!

本团队任何技术及文件仅用于学习分享,请勿用于任何违法活动,感谢大家的支持!

原文始发于微信公众号(NOVASEC):Fortify SCA 命令行使用 (v2024.4)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年5月15日16:48:31
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Fortify SCA 命令行使用 (v2024.4)http://cn-sec.com/archives/4067517.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息