fortify安装使用手册
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Fortify SCA
安装使用手册
编号:GRG _YT-RDS-PD-D03_A.0.1
版本:V1.0
发布日期:2011-5-5
文档历史记录
编号与名称版本发布日期创建/修改说明参与人员
版权声明
本软件产品(包括所含的任何程序、图像、文档和随附的印刷材料),以及本软件产品的任何副本的产权和著作权,均属广州广电运通金融电子股份有限公司所有。
您不得使用任何工具或任何方式对本软件产品进行反向工程,反向编译。
未经广州广电运通金融电子股份有限公司许可,您不得以任何目的和方式发布本软件产品及任何相关资料的部分或全部,否则您将受到严厉的民事和刑事制裁,并在法律允许的范围内受到最大可能的民事起诉。
目录
文档历史记录......................................................................................................................................... I I 1. 产品说明 (9)
1.1.特性说明 (10)
1.2.产品更新说明 (10)
2. 安装说明 (10)
2.1.安装所需的文件 (11)
2.2.F ORTIFY SCA支持的系统平台 (11)
2.3.支持的语言 (11)
2.4.F ORTIFY SCA的插件 (12)
2.5.F ORTIFY SCA支持的编译器 (12)
2.6.F ORTIFY SCA在WINDOWS上安装 (13)
2.7.F ORTIFY SCA安装E CLISPE插件 (14)
2.8.F ORTIFY SCA在LINUX上的安装(要有LINUX版本的安装文件) (14)
2.9.F ORTIFY SCA在U NIX上的安装(要有U NIX版本的安装文件) (15)
3. 使用说明 (15)
3.1.F ORTIFY SCA扫描指南 (16)
3.2.分析F ORTITFY SCA扫描的结果 (21)
4.故障修复 (25)
4.1使用日志文件去调试问题 (26)
4.2转换失败的信息 (26)
4.3JSP的转换失败 (26)
4.4C/C++预编译的头文件 (27)
前言
Fortify SCA是目前业界最为全面的源代码白盒安全测试工具,它能精确定位到代码级的安全问题,完全自动化的完成测试,最广泛的安全漏洞规则,多维度的分析源代码的安全问题。
文档约定文档约定
文档约定
本手册使用以下约定,以区分手册中其它部分。
约定表示含义
粗体字“粗体新宋体”:表示截图中的按钮或是选项。
如:点击保存按纽
→
“右箭头”:用在两个或多个词语之间,表示分级,左边的内容是右边的
上一级。
如:文件→打开
●“圆点”:表示同级的并列选项或是属性。
1,2,3“粗体数字”:表示一个过程中步骤。
“警告”:说明需要注意的事项。
“提示”:表示附加的说明性文字。
编写约定
指编写用户手册的规范和注意事项,编写人员在手册完成后应删除该篇约定。
●关于截图
⏹为使叙述更加明确、简洁,应避免不必要的截图。
指可以用语言叙述清楚其操
作方法的界面。
如:拉菜单、快捷菜单等可以避免截图。
⏹图片应尽量精准,不要留白边,和避免出现不相关的图标。
如:输入法工具栏
等。
●关于斜体字
表示可变化的名称或是术语,编写手册时应用具体内容替换。
●关于说明
补充说明某一章/节中需描述的内容,提供了供参考的内容细则。
手册编写完成后
应删除此部分内容。
●关于示例
具体实例辅助说明某一章/节的内容范围和格式。
手册完成后应删除此部分内容。
●关于分级
下分一级用圆点表示,具体分级设置请参照公司文档编写规范。
1. 产品说明
1.
Fortify SCA(静态代码分析器)是组成Fortify360系列产品之一,SCA工作在开发阶段,以用于分析应用程序的源代码是否存在安全漏洞。
它不但能够发现只能在静态情况下才能发现的新的漏洞,而且也能在测试和产品阶段验证已经发现的漏洞。
1.1. 特性说明
Fortify SCA主要的特性和优点如下:
1.业务最完整的静态代码分析器,以最大和最全面的安全编码规则为基础,而且这些规则可以不断地进行更新,以适应新的软件安全漏洞
2.跨层跨语言地分析代码的漏洞产生,目前支持所有的主流开发语言
3.在确认安全漏洞上有十分高的准确性
4.可以精确地定位漏洞产生的全路径,方便开发人员对漏洞进行修复
5.支持多种软件开发平台
1.2. 产品更新说明
名称版本发布日期功能修改说明
Fortify SCA V2.0
2. 安装说明
2.
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位置
2.7. Fortify SCA安装Eclispe插件
2.8. Fortify SCA在linux上的安装(要有linux版本的安装文件)
2.9. Fortify SCA在Unix上的安装(要有Unix版本的安装文件)
3.使用说明
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 <build-id> -cp <classpath> <file-list>
有了Java 代码,Fortify SCA 既可以仿效编译程序(它使得构造结合很方便),也
可以直接接受源
文件(它使命令行扫描更方便)。
注意:有关所有你能使用的带有sourceanalyzer 命令的选项,请查看第33 页的
“命令行选项”。
使Fortify SCA 仿效编译程序,输入:sourceanalyzer -b <build-id> javac
[<compiler options>]
直接传文件到Fortify SCA,输入:sourceanalyzer -b <build-id> -cp <classpath>
[<compiler options>] \<files>|<file-specifiers>
这里:<compiler options>是传到编译程序的选项。
-cp <classpath>具体指定
Classpath 来用在Java 源代码中。
Classpath 是一个构造目录和jar 文件的列表。
格式和javac 所预期的相同(路径的冒号或独立的分号的列表)。
你可以使用Fortify
SCA 文件说明符。
-cp "build/classes:lib/*.jar"
注意:如果你没有使用选项来具体指定classpath,CLASSPATH 环境变量将被使
用。
<files> | <file-specifiers>
文件说明符允许你容易地通过一个长文件列表到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. 定位到以下目录:
<install_directory>/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 <build-id> <compiler> [<compiler options>]
其中:
•<compiler> 是在项目创建扫描之时,你想使用的编译器的名字。
比gcc 或者是cl。
•<compiler_options> 是传递到典型编译文挡的编译器的选项。
C 和C++ 命令行举例
以下是一些简单的可用范例:
使用gcc 编译器,翻译一个名为helloworld.c 的文件,键入:sourceanalyzer -b my_buildid gcc helloworld.c
结合Make
你可以使用以下方法中的其中一项去结合Make 使用Fortify SCA:
•无入侵式的集成
•入侵式的集成(修改一个Makefile 去调用Fortify SCA)
使用无入侵式的集成,运行以下命令:
sourceanalyzer -b <build-id> make
Fortify SCA 运行make 命令。
当make 调用了任意被Fortify SCA 认作为是一个编译器的命令,这个
命令就会被Fortify SCA 处理。
注意makefile 不会被修改。
这个构建集成的方法不局限于make。
任何一个执行编译器处理的构建命令可以被用到系统里去;只
要拿去运行一个构建的命令来替代以上命令中的'make' 部分。
如果不是已经存在的话,你可能必须为你的构建工具添加一个条目进<install_directory>/
Core/config/fortify-sca.properties。
比如,结合一个名为dobuild 的构建脚本,添加以下到fortify-sca.properties 里去:pilers.dobuild
=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打开该文件,界面如下所示。