资源描述
Fortify SCA 安装使用手册
目录
1. 产品说明 5
1.1. 特征说明 5
1.2. 产品更新说明 5
2. 安装说明 6
2.1. 安装所需文件 6
2.2. Fortify SCA支持系统平台 6
2.3. 支持语言 6
2.4. Fortify SCA插件 7
2.5. Fortify SCA支持编译器 7
2.6. Fortify SCA在windows上安装 8
2.7. Fortify SCA安装Eclispe插件 9
2.8. Fortify SCA在linux上安装(要有linux版本安装文件) 9
2.9. Fortify SCA在Unix上安装(要有Unix版本安装文件) 10
3. 使用说明 11
3.1. Fortify SCA 扫描指南 11
3.2. 分析Fortitfy SCA扫描结果 16
4.故障修复 20
4.1使用日志文件去调试问题 20
4.2转换失败信息 20
假如你C/C++ 应用程序能够成功构建,不过当使用Fortify SCA 来进行构建时候却发觉一个或多个“转换失败”信息,这时你需要编辑<install_directory>/Core/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
重新实施构建,打印出转换器碰到错误。假如输出结果表明了在你编译器和Fortify 转换器之间存在冲突 20
4.3JSP转换失败 20
4.4 C/C++ 预编译头文件 21
序言
Fortify SCA是现在业界最为全方面源代码白盒安全测试工具,它能正确定位到代码级安全问题,完全自动化完成测试,最广泛安全漏洞规则,多维度分析源代码安全问题。
文档约定
本手册使用以下约定, 以区分手册中其它部分。
约定
表示含义
粗体字
“粗体新宋体”:表示截图中按钮或是选项。如:点击保留按纽
→
“右箭头”:用在两个或多个词语之间,表示分级,左边内容是右边上一级。
如:文件→打开
l
“圆点”:表示同级并列选项或是属性。
1,2,3
“粗体数字”:表示一个过程中步骤。
“警告”:说明需要注意事项。
“提醒”:表示附加说明性文字。
编写约定
指编写用户手册规范和注意事项,编写人员在手册完成后应删除该篇约定。
l 相关截图
n 为使叙述愈加明确、简练,应避免无须要截图。指能够用语言叙述清楚其操作方法界面。如:拉菜单、快捷菜单等能够避免截图。
n 图片应尽可能正确,不要留白边,和避免出现不相关图标。如:输入法工具栏等。
l 相关斜体字
表示可改变名称或是术语,编写手册时应用具体内容替换。
l 相关说明
补充说明某一章/节中需描述内容,提供了供参考内容细则。手册编写完成后应删除此部分内容。
l 相关示例
具体实例辅助说明某一章/节内容范围和格式。
手册完成后应删除此部分内容。
l 相关分级
下分一级用圆点表示,具体分级设置请参考企业文档编写规范。
1. 产品说明
Fortify SCA(静态代码分析器)是组成Fortify360系列产品之一,SCA工作在开发阶段,以用于分析应用程序源代码是否存在安全漏洞。它不仅能够发觉只能在静态情况下才能发觉新漏洞,而且也能在测试和产品阶段验证已经发觉漏洞。
1.1. 特征说明
Fortify SCA关键特征和优点以下:
1.业务最完整静态代码分析器,以最大和最全方面安全编码规则为基础,而且这些规则能够不停地进行更新,以适应新软件安全漏洞
2.跨层跨语言地分析代码漏洞产生,现在支持全部主流开发语言
3.在确定安全漏洞上有十分高正确性
4.能够正确地定位漏洞产生全路径,方便开发人员对漏洞进行修复
5.支持多个软件开发平台
1.2. 产品更新说明
名称
版本
公布日期
功效修改说明
Fortify SCA
V2.0
2. 安装说明
2.1. 安装所需文件
1.Fortify SCA安装文件
2.Fortify license(即安装授权文件)
3.Fortify规则库文件(可在线下载最新规则库)
4.要安装插件IDE (比如eclispe3.2,3.3;VS,;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,VS插件(选择安装VS插件之前,得首先安装VSIDE),然后点击‘NEXT’按钮
5. 再点击‘NEXT’按钮即可完成安装
6. 添加对应规则库,可直接联网下载最新规则库,或是将安装包下fotify_rule
文件夹下rules_ZH.rar解压缩到fortify安装目录下Core\config\rules位置
7. 安装完成后把系统时间改成,方可正常使用.
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.1 Eclipse插件方法扫描
1.1首先你得正确安装fortify sca插件,具体安装方法见前面所述安装指南;安装成功后ide界面图所表示,会有一个图标
1.2导入所要进行源码安全测试项目,成功导入以后会显示以上界面右边Package Expl里面
1.3左键选中该项目,然后点击,就能够进行扫描了;或是右键点击该项目,弹出选项菜单,选中Analyze source code of project就能够进行扫描.
3.1.2 Audit 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打开该文件,界面以下所表示
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\<username>\Local
Settings\Application Data\Fortify\sca\log
• 在其它平台上: $HOME/.fortify/sca4.5/log
4.2转换失败信息
假如你C/C++ 应用程序能够成功构建,不过当使用Fortify SCA 来进行构建时候却发觉一个或多个“转换失败”信息,这时你需要编辑<install_directory>/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: <directory_name> where <directory_name> is the directory containing the JSP files
• Unexpected exception while parsing ..<XXX_jsp.java>
想取得更多相关这个问题信息,请实施以下步骤:
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。
4.4 C/C++ 预编译头文件
部分C/C++ 编译器支持一个叫做“预编译头文件”特征,它能够用来加速编译过程。部分编译器对这种特征实施会产生微妙副作用。当这个特征被激活时候,编译器可能会不经过警告或报
错就接收错误源代码。这可能造成这种矛盾,即使你编译器没有实施, Fortify SCA 也会汇报转换错误。
假如你使用你编译器预编译头文件特征,就要首先确保你源代码经过废除预编译头文件特征并实施一个完整构建而洁净地实施。
展开阅读全文