文档库 最新最全的文档下载
当前位置:文档库 › FortifySCA安装使用手册

FortifySCA安装使用手册

FortifySCA安装使用手册
FortifySCA安装使用手册

Fortify SCA 安装使用手册

目录

1. 产品说明 (5)

1.1.特性说明 (5)

1.2.产品更新说明 (5)

2. 安装说明 (6)

2.1.安装所需的文件 (6)

2.2.F ORTIFY SCA支持的系统平台 (6)

2.3.支持的语言 (6)

2.4.F ORTIFY SCA的插件 (7)

2.5.F ORTIFY SCA支持的编译器 (7)

2.6.F ORTIFY SCA在WINDOWS上安装 (8)

2.7.F ORTIFY SCA安装E CLISPE插件 (9)

2.8.F ORTIFY SCA在LINUX上的安装(要有LINUX版本的安装文件) (9)

2.9.F ORTIFY SCA在U NIX上的安装(要有U NIX版本的安装文件) (10)

3. 使用说明 (11)

3.1.F ORTIFY SCA扫描指南 (11)

3.2.分析F ORTITFY SCA扫描的结果 (16)

4.故障修复 (20)

4.1使用日志文件去调试问题 (20)

4.2转换失败的信息 (20)

如果你的C/C++应用程序能够成功构建,但是当使用F ORTIFY SCA来进行构建的时候却发现一个或者多个“转换失败”的信息,这时你需要编辑

/C ORE/CONFIG/FORTIFY-SCA.PROPERTIES 文件来修改下面的这些行:20 COM.FORTIFY.SCA.CPFE.OPTIONS=--REMOVE_UNNEEDED_ENTITIES --SUPPRESS_VTBL (20)

TO (20)

COM.FORTIFY.SCA.CPFE.OPTIONS=-W --REMOVE_UNNEEDED_ENTITIES -- (20)

SUPPRESS_VTBL (20)

重新执行构建,打印出转换器遇到的错误。如果输出的结果表明了在你的编译器和F ORTIFY 转换器之间存在冲突 (20)

4.3JSP的转换失败 (20)

4.4C/C++预编译的头文件 (21)

前言

Fortify SCA是目前业界最为全面的源代码白盒安全测试工具,它能精确定位到代码级的安全问题,完全自动化的完成测试,最广泛的安全漏洞规则,多维度的分析源代码的安全问题。

文档约定

本手册使用以下约定,以区分手册中其它部分。

约定表示含义

粗体字“粗体新宋体”:表示截图中的按钮或是选项。如:点击保存按纽

“右箭头”:用在两个或多个词语之间,表示分级,左边的内容是右边的

上一级。

如:文件→打开

●“圆点”:表示同级的并列选项或是属性。

1,2,3“粗体数字”:表示一个过程中步骤。

“警告”:说明需要注意的事项。

“提示”:表示附加的说明性文字。

编写约定

指编写用户手册的规范和注意事项,编写人员在手册完成后应删除该篇约定。

●关于截图

?为使叙述更加明确、简洁,应避免不必要的截图。指可以用语言叙述清楚其操

作方法的界面。如:拉菜单、快捷菜单等可以避免截图。

?图片应尽量精准,不要留白边,和避免出现不相关的图标。如:输入法工具栏

等。

●关于斜体字

表示可变化的名称或是术语,编写手册时应用具体内容替换。

●关于说明

补充说明某一章/节中需描述的内容,提供了供参考的内容细则。手册编写完成后

应删除此部分内容。

●关于示例

具体实例辅助说明某一章/节的内容范围和格式。

手册完成后应删除此部分内容。

●关于分级

下分一级用圆点表示,具体分级设置请参照公司文档编写规范。

Fortify SCA(静态代码分析器)是组成Fortify360系列产品之一,SCA工作在开发阶段,以用于分析应用程序的源代码是否存在安全漏洞。它不但能够发现只能在静态情况下才能发现的新的漏洞,而且也能在测试和产品阶段验证已经发现的漏洞。

1.1. 特性说明

Fortify SCA主要的特性和优点如下:

1.业务最完整的静态代码分析器,以最大和最全面的安全编码规则为基础,而且这些规则可以不断地进行更新,以适应新的软件安全漏洞

2.跨层跨语言地分析代码的漏洞产生,目前支持所有的主流开发语言

3.在确认安全漏洞上有十分高的准确性

4.可以精确地定位漏洞产生的全路径,方便开发人员对漏洞进行修复

5.支持多种软件开发平台

1.2. 产品更新说明

名称版本发布日期功能修改说明

Fortify SCA V2.0

2.1. 安装所需的文件

1.Fortify SCA的安装文件

2.Fortify license(即安装授权文件)

3.Fortify的规则库文件(可在线下载最新的规则库)

4.要安装插件的IDE (例如eclispe3.2,3.3;VS2003,2005;RAD7;RSD7)2.2. Fortify SCA支持的系统平台

2.3. 支持的语言

2.4. Fortify SCA的插件

2.5. Fortify SCA支持的编译器

2.6. Fortify SCA在windows上安装

1.双击安装包中的Fortify-360-2[1].0-Analyzers_and_Apps-Windows-x86.exe即可安装2.选择Fortify提供的授权文件所在路径(即安装包下的fotify_rule文件夹,该文件夹下有fortify.license),点击‘NEXT’按钮

3.选择相应的安装路径,点击‘NEXT’按钮

4.选择相应的组件进行安装,在此处请注意,fortify默认不安装IDE插件,如果需要安装相应的IDE插件,如图所示:在此处我选择了基于eclipse3.x,VS2005的插件(选择安装VS的插件之前,得首先安装VS的IDE),然后点击‘NEXT’按钮

5.再点击‘NEXT’按钮即可完成安装

6.添加相应的规则库,可直接联网下载最新的规则库,或是将安装包下的fotify_rule 文件夹下rules_ZH.rar解压缩到fortify安装目录下的Core\config\rules位置

7.安装完成后把系统时间改成2008年,方可正常使用.

2.7. Fortify SCA安装Eclispe插件

2.8. Fortify SCA在linux上的安装(要有linux版本的安装文件)

2.9. Fortify SCA在Unix上的安装(要有Unix版本的安装文件)

3.使用说明

Fortify SCA扫描方式:

1.IDE插件方式

2.命令行

3.Audit Workbench扫描目录

4.及构建工具集成(ant ,makefile)

5.SCA build monitor(c/c++ windows only)

下面主要是介绍常用的两种扫描方式:IDE插件方式,以及命令行方式

3.1.Fortify SCA 扫描指南

3.1.1Eclipse插件方式扫描

1.1首先你得正确安装fortify sca的插件,具体安装方法见前面所述的安装指南;安装成功后的ide界面如图所示,会有一个图标

1.2导入所要进行源码安全测试的项目,成功导入之后会显示以上界面右边的

Package Expl里面

1.3左键选中该项目,然后点击,就可以进行扫描了;或者是右键点击

该项目,弹出选项菜单,选中Analyze source code of project就可以

进行扫描.

3.1.2Audit Audit Workbench扫描目录

2.1首先在开始菜单->所有程序->Fortify Software->Fortify 360 v2.0->Audit

Workbench,启动Audit Workbench,界面如下

2.2建议采用Advanced Scan,然后选中要扫描的目录,点击确定按钮即可扫描

3.1.3命令行方式扫描

Java 命令行语法

这个主题描述了为Java 翻译源代码的Fortify SCA 命令语法。

基本的Java 命令行语法是:

sourceanalyzer -b -cp <>

有了Java 代码,Fortify SCA 既可以仿效编译程序(它使得构造结合很方便),也

可以直接接受源

文件(它使命令行扫描更方便)。

注意:有关所有你能使用的带有sourceanalyzer 命令的选项,请查看第33 页的“命

令行选项”。

使Fortify SCA 仿效编译程序,输入:sourceanalyzer -b javac [

options>]

直接传文件到Fortify SCA,输入:sourceanalyzer -b -cp

[] \|<>

这里:是传到编译程序的选项。-cp 具体指定Classpath

来用在Java 源代码中。Classpath 是一个构造目录和jar 文件的列表。格式和javac

所预期的相同(路径的冒号或独立的分号的列表)。你可以使用Fortify SCA 文件说

明符。-cp "build/classes:lib/*.jar"

注意:如果你没有使用选项来具体指定classpath,CLASSPATH 环境变量将被使用。

| <>

文件说明符允许你容易地通过一个长文件列表到Fortify SCA 使用通配符。Fortify

SCA 能识别两种

类型的通配符:'*' 匹配部分文件名,'**' 递归地匹配目录。你可以指定一个或

更多的文件,一个或

更多的文件说明符,或文件和文件说明符的结合。

Java 命令行例子

在classpath 上用j2ee.jar 翻译一个命名为MyServlet.java 的文件,输入:sourceanalyzer -b MyServlet -cp lib/j2ee.jar MyServlet.java

用lib 目录中所有jar 文件作为classpath 在src 目录中翻译所有的.java 文件:sourceanalyzer -b MyProject -cp "lib/*.jar" "src/**/*.java"

当运行javac 编译程序时,翻译MyCode.java 文件:

sourceanalyzer -b mybuild javac -classpath libs.jar MyCode.java

J2EE项目转换的简单示例

把项目的所有文件和库都放在一个目录下,运行下面的命令:

. sourceanalyzer -Xmx1000m -b pName -encoding "UTF-8" -cp "**/*.jar"

. sourceanalyzer -Xmx1000m -b pName -appserver weblogic -appserver-verion 9 –appserver-home “d:\bea\webloigc\server\lib”-encoding "UTF-8" -cp "**/*.jar"

翻译JSP 文件

要翻译JSP 文件,Fortify SCA 需要JSP 文件遵循标准的Web Application Archive (WAR) 设计格

式。如果你的源目录已经以WAR 格式组织了,那么你可以直接从源目录中翻译JSP 文件。如果情况

不是这样的,那么你需要展开应用程序并从展开目录中翻译你的JSP 文件。

如果你的JSP 文件使用了任何标签库,例如JSTL,确保库的jar 文件在WEB-INF/lib 目录中。否

则JSP 编译程序将不处理标签库,可能产生错误的结果。

默认地,在翻译程序段期间,Fortify SCA 使用一个Jasper JSP 编译程序的版本来编译JSP 文件到

Java 文件中去。

然而,如果你的web 应用程序是特别为了某个应用程序服务器而开发的,那么当执行翻译时,你必

须为那个应用程序服务器使用JSP 编译程序。

为了支持它,Fortify SCA 提供了以下命令行选项:

?-appserver 支持变量:weblogic/websphere

?-appserver-home

有关Weblogic:到目录的路径包含server/lib 目录

有关WebSphere:到目录的路径包含bin/JspBatchCompiler 脚本

?-appserver-version 支持变量:

Weblogic 版本7 和8

WebSphere 版本6

如果你在使用一个没有被列出来的应用程序服务器,使用默认内部Fortify JSP 编译程序。

例如:sourceanalyzer -b my_buildid -cp "WEB-INF/lib/*.jar" "WEB-INF/**/*.jsp"

使用FindBugs

FindBugs() 是一个静态分析工具,它在Java 代码中检测质量问题。你可以和Fortify SCA 一起使用FindBugs,结果会被合并到分析结果文件中。及Fortify SCA 运行在Java 源文件中不同,FindBugs 运行在Java 字节码中。因此,在项目中运行分析之前,你应该首先编译项目产生类文件。

为了示范如何及Fortify SCA 一起自动地运行FindBugs,编译例子代码,Warning.java,如下:

1. 定位到以下目录:

/Samples/advanced/findbugs

2. 输入以下命令并编译例子:

mkdir build

javac -d build Warning.java

3. 用FindBugs 和Fortify SCA 扫描例子,如下:

sourceanalyzer -b findbugs_sample -java-build-dir build Warning.java

sourceanalyzer -b findbugs_sample -scan -findbugs -f findbugs_sample.fpr

4. 检查早Fortify Audit Workbench 中的分析结果:

auditworkbench findbugs_sample.fpr

输出包括了以下问题类别:

?Object model violation

?Dead local store

?Equal objects must have equal hashcodes

?Useless self-assignment (2)

?Unwritten field (2)

翻译C/C++ 代码

翻译一个文挡所用的基本命令行语法是:

sourceanalyzer -b []

其中:

? 是在项目创建扫描之时,你想使用的编译器的名字。比gcc 或者是cl。? 是传递到典型编译文挡的编译器的选项。

C 和C++ 命令行举例

以下是一些简单的可用范例:

使用gcc 编译器,翻译一个名为helloworld.c 的文件,键入:

sourceanalyzer -b my_buildid gcc helloworld.c

结合Make

你可以使用以下方法中的其中一项去结合Make 使用Fortify SCA:

?无入侵式的集成

?入侵式的集成(修改一个Makefile 去调用Fortify SCA)

使用无入侵式的集成,运行以下命令:

sourceanalyzer -b make

Fortify SCA 运行make 命令。当make 调用了任意被Fortify SCA 认作为是一个编译器的命令,这个

命令就会被Fortify SCA 处理。注意makefile 不会被修改。

这个构建集成的方法不局限于make。任何一个执行编译器处理的构建命令可以被用到系统里去;只

要拿去运行一个构建的命令来替代以上命令中的'make' 部分。

如果不是已经存在的话,你可能必须为你的构建工具添加一个条目进/

Core/config/fortify-sca.properties。

比如,结合一个名为dobuild 的构建脚本,添加以下到fortify-sca.properties 里去:https://www.wendangku.net/doc/303505847.html,pilers.dobuild =https://www.wendangku.net/doc/303505847.html,pilers.TouchlessCompiler

注意: Fortify touchless build adapter 会表现异常,如果:

?构建脚本给编译器调用了一个完整路径,或者如果构建脚本拒绝可执行搜索路径。?构建脚本没有创建一个新的进程去运行编译器。许多Java 构造工具,包括Ant,都以这种方式运行。

入侵式的集成, 运行以下命令:

修改一个makefile 去调用Fortify SCA,代替任何一个链接,被调用到编译器,文件,或者是

makefile 和Fortify SCA 里。这些工具在makefile 中一个特殊变量中被特别指明,如以下范例所示:

CC=gcc

CXX=g++

AR=ar

这个步骤可以像这些makefile 里提及的的工具、Fortify SCA,和一些适当选项一样简单。

CC=sourceanalyzer -b mybuild -c gcc

CXX=sourceanalyzer -b mybuild -c g++

AR=sourceanalyzer -b mybuild -c ar

VC6.0项目的转换及分析示例

.sourceanalyzer -b my_buildid –c msdev MyProject.dsp /Make /BUILD

.sourceanalyzer -b my_buildid –scan –f xx.fpr

3.2.分析Fortitfy SCA扫描的结果

1. 审计结果的基本概念

审计:将Fortify SCA 扫描分析出来的结果中的漏洞进行审查,分析,定性,指导

开发人员进行漏洞的修复工作。

Hide/Suppress/Suspicious/Not An Issue四个的不同

Hide: 是将此漏洞不显示出来,在报告中也不显示出来

Suppress:是此漏洞不是问题,可以不用看的

Suspicious: 是审计的一个定性,这个问题有可能是真的,值得怀疑。

Not An Issue: 也是审计的一个定性,说明这一漏洞不是个问题。

2. 首先是将扫描结果导成后缀为fpr文件,然后用Audit WorkBench打开该文件,界面如下所示

3. 验证测试结果的正确性,有效性(包括application,project,build information,analysis information)

4. 将(Group By)分组方式选择为按Category(漏洞种类)分组,这也是最常用的分组方式,然后在下面对相应的漏洞进行定性,审记;所图所示

5. 可以跟踪该漏洞产生的全路径,有两种方式跟踪,建议采用第二种图表方式,比较直观;

6. 选择下面选项卡中Detail,Recommandation,可以获得相应的漏洞的详细说明,以及推荐的解决办法;如图所示:

7. 导出经过审计,定性的扫描结果的报表,可以有两种格式,一种是HTML,一种是PDF;如图所示:

4.故障修复

4.1使用日志文件去调试问题

当你在运行Fortify SCA 的时候,如果遇到了警告或者问题,可以使用-debug 选项再次运行Fortify SCA。这会在下面的路径中生成一个叫做sca.log 的文件。

? 在Windows 平台上: C:\Documents and Settings\\Local

Settings\Application Data\Fortify\sca\log

?在其它的平台上: $HOME/.fortify/sca4.5/log

4.2转换失败的信息

如果你的C/C++ 应用程序能够成功构建,但是当使用Fortify SCA 来进行构建的时候却发现一个或者多个“转换失败”的信息,这时你需要编辑

/Core/config/fortify-sca.properties 文件来修改下面的这些行:

com.fortify.sca.cpfe.options= --remove_unneeded_entities --suppress_vtbl

to

com.fortify.sca.cpfe.options=-w --remove_unneeded_entities --

suppress_vtbl

重新执行构建,打印出转换器遇到的错误。如果输出的结果表明了在你的编译器和Fortify 转换器之间存在冲突

4.3JSP的转换失败

如果在Fortify SCA 转换JSP 文件到Java 文件以便进行分析的过程中,你的JSP 分解器遇到问题,

你很可能会看到和下面这个很像的信息:

?Failed to parse jsps in: where is the directory containing the JSP files

?Unexpected exception while parsing ..

想获得更多关于这个问题的信息,请执行以下步骤:

1. 使用-debug 选项运行sourceanalyzer。

2. 使用编译器打开日志文件。

3. 查找字符串Invoking jsp parser:。

4. 下拉到包含-classpath 的那一行。

5. 确保-classpath 变量包含了所有所要求的jars 文件和用来解析类、标签库、实体和其它你的JSP 用到的文件的目录。如果错误信息和NoClassDefFoundError 或者标签库有关,确保需要的jar 文件也在WEB-INF/lib 目录下。

6. 在包含-classpath 变量的那一行的再下面的几行中,你应该能够看见标有Jsp parserstdout: 的行。这一行包含了从JSP 解析器中输出的错误信息,这应该给出了到底是什么发生了错误的提示。

7. 添加需要用来修复在第5 和第6 步中所找到问题的一些classpath 附加条目。

8. 重新运行sourceanalyzer。

相关文档