综合使用了多款代码审计工具后,总结出对人工代码审计工具的如下要求:
1、支持UI进行人工判定。
2、人工分析要支持代码跳转。
3、支持自定义分析规则(进阶)。
在深入使用 Fortify SCA 2024.4.0 版本时,发现通过UI分析项目会存在以下问题:
1、部分情况下通过UI扫描会报错,大部分是RPC调用的问题。
2、通过UI扫描无法准确把握分析进度,即使程序错误。
1. 编译项目src -> 得到NST
2. 分析项目NST -> 得到fpr文件
3. 审计项目Fpr -> Fortify UI 打开.fpr
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
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 <解决方案文件> /REBUILD
sourceanalyzer.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 *.sql
sourceanalyzer.exe -b mybuild -Dcom.fortify.sca.fileextensions.sql=TSQL *.sql
C/C++ 构建:
sourceanalyzer.exe -b mybuild gcc -c test.c
sourceanalyzer.exe -b mybuild CL.EXE /o HelloWorld HelloWorld.c
sourceanalyzer.exe -b mybuild make
sourceanalyzer.exe -b mybuild devenv myproject.msproj /REBUILD
Objective-C/C++ 构建:
sourceanalyzer.exe -b mybuild clang -ObjC HelloWorld.m
sourceanalyzer.exe -b mybuild xcodebuild -project myproject.xcodeproj
.NET 构建:
sourceanalyzer.exe -b mybuild devenv myproj.sln /REBUILD
sourceanalyzer.exe -b mybuild msbuild /t:rebuild myproj.csproj
Java 专用构建:
sourceanalyzer.exe -b mybuild -cp lib/dependency.jar "src/**/*.java"
sourceanalyzer.exe -b mybuild -cp mytaglibs.jar webapp/*.jsp
sourceanalyzer.exe -b mybuild touchless ant
J2EE 专用构建:
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/
如需获取Fortify SCA 2024用于学习,可以在其他公众号平台进行下载或私聊交流。
END
如您有任何投稿、问题、需求、建议
请NOVASEC公众号后台留言!
或添加 NOVASEC 联系人
感谢您对我们的支持、点赞和关注
加入我们与萌新一起成长吧!
本团队任何技术及文件仅用于学习分享,请勿用于任何违法活动,感谢大家的支持!!
原文始发于微信公众号(NOVASEC):Fortify SCA 命令行使用 (v2024.4)
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论