fortify安装使用手册.docx
Fortify SCA安装使用手册编 号:GRG _YT-RDS-PD-D03_A.0.1版 本:V1.0 发布日期:2011-5-5GRGBanking,广电运通Bankingm文档历史记录文档历史记录文档历史记录编号与名称版本 发布日期创建/修改说明参与人员版权声明本软件产品(包括所含的任何程序、图像、文档和随附的印刷材料),以及本软件产品 的任何副本的产权和著作权,均属广州广电运通金融电子股份有限公司所有。您不得使用任何工具或任何方式对本软件产品进行反向工程,反向编译。未经广州广电运通金融电子股份有限公司许可,您不得以任何目的和方式发 布本软件产品及任何相关资料的部分或全部,否则您将受到严厉的民事和刑事制裁,并在法 律允许的范围内受到最大可能的民事起诉。目录文档历史记录II1. 产品说明91.1. 特性说明101.2. 产品更新说明102. 安装说明102.1. 安装所需的文件112.2. FortifySCA 支持的系统平台112.3. 支持的语言112.4. Fortify SCA 的插件122.5. FortifySCA 支持的编译器122.6. Fortify SCA 在 windows 上安装 132.7. Fortify SCA 安装 Eclispe 插件142.8. Fortify SCA 在 linux 上的安装(要有 LINUX 版本的安装文件)142.9. FortifySCA在Unix上的安装(要有Unix版本的安装文件)153. 使用说明153.1. FortifySCA 扫描指南163.2. 分析FortitfySCA扫描的结果214 .故障修复254.1使用日志文件去调试问题264.2转换失败的信息264.3JSP的转换失败264.4 C/C+预编译的头文件27刖言Fortify SCA是目前业界最为全面的源代码白盒安全测试工具,它能精确定位到代码级 的安全问题,完全自动化的完成测试,最广泛的安全漏洞规则,多维度的分析源代码的 安全问题。文档约定Bankingr电这通本手册使用以下约定,以区分手册中其它部分。约定表示含义粗体字“粗体新宋体”:表示截图中的按钮或是选项。如:点击保存按纽一“右箭头”:用在两个或多个词语之间,表示分级,左边的内容是右边的 上一级。如:文件一打开“圆点”:表示同级的并列选项或是属性。1, 2, 3“粗体数字”:表示一个过程中步骤。Y“警告”:说明需要注意的事项。“提示”:表示附加的说明性文字。编写约定指编写用户手册的规范和注意事项,编写人员在手册完成后应删除该篇约定。关于截图 为使叙述更加明确、简洁,应避免不必要的截图。指可以用语言叙述清楚其操 作方法的界面。如:拉菜单、快捷菜单等可以避免截图。 图片应尽量精准,不要留白边,和避免出现不相关的图标。如:输入法工具栏 等。关于斜体字表示可变化的名称或是术语,编写手册时应用具体内容替换。关于说明补充说明某一章/节中需描述的内容,提供了供参考的内容细则。手册编写完成后 应删除此部分内容。关于示例具体实例辅助说明某一章/节的内容范围和格式。手册完成后应删除此部分内容。关于分级下分一级用圆点表示,具体分级设置请参照公司文档编写规范。1.产品说明1.Fortify SCA(静态代码分析器)是组成Fortify360系列产品之一,SCA工作在开发阶段, 以用于分析应用程序的源代码是否存在安全漏洞。它不但能够发现只能在静态情况下才能发 现的新的漏洞,而且也能在测试和产品阶段验证已经发现的漏洞。1.1. 特性说明Fortify SCA主要的特性和优点如下:1. 业务最完整的静态代码分析器,以最大和最全面的安全编码规则为基础,而且这些规 则可以不断地进行更新,以适应新的软件安全漏洞2. 跨层跨语言地分析代码的漏洞产生,目前支持所有的主流开发语言3. 在确认安全漏洞上有十分高的准确性4. 可以精确地定位漏洞产生的全路径,方便开发人员对漏洞进行修复5. 支持多种软件开发平台1.2. 产品更新说明名称版本发布日期 功能修改说明Fortify SCA V2.02. 安装说明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支持的系统平台Fortify Source Code Analysis支持以下平台和体系结构;操作系统版本体系结构HP-UX11v1IB MAIX5.2LinuxFedora Core 7Red Hat ES 4 和 5Novelle SUSE 10x86 和 x64Mac OS X10.4 和 10,5PFC X86Sun Solaris&9和 10SPARCWindow20002003XPVistax86X86 和 x64x86 和 x64x862.3.支持的语言Fortify Source Code Analysis 支持以下编程语言:语言版本Adobe ColdFusion5.NET1.1 和 2.0C/C+请参见“编译器"Classic ASPJava1.3、1,4、1.5 和 L6JavaScriptPHPPL/SQLT-SQLVB for Applications6VB Script2.4. Fortify SCA 的插件操作系统IDELinuxEclipse 32 3.3 RAD 7RSA7WindowsEclipse 32 3.3RAD 6, 7RSA7Visual Studio 2003, 2005Mac OS XEclipse 32 33RAD 7RSA72.5. Fortify SCA支持的编译器Fortify Source Code Analysis 支持以下编译器:操作系统编译器AIXGNUgcc2.9-4 GNUg+3-4 IBM javac 1.3 -1.6LinuxGNU gcc 2.9 = 4GNU g+ 3 - 4Int&l icc S.OSun javac 1.3 - 1.6HP-UX Mac OSGNU gcc 2.9-4GNU g+ 3 - 4Sun javac 1.3 - 1.6SolarisGNU gcc 2 9 - 4GNU g+ 3 - 4Sun cc 5.5Sun CC 5 5Sun javac 1.3 -1.6WindowsMicrosoft cl 12.x -13 x Microsoft esc 7.1 - 8 x GNU gcc 2.9-4 GNU g+ 3 - 4 Sun javac 1,3 - 1.62.6. Fortify SCA 在 windows 上安装1. 双击安装包中的 Fortify-360-21.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'按钮Fortify 360 v2_Inst all Shi e 1 d. TizardSelect FeaturesSelect the features setup will install.Select the features you 冏日nt t。install and deselect the features you do not want to install.Source Code .Analysis- Audit WorkbenchAssociate .fp«r Files with AuditV/urkbench-g| Fortify SCA IDE Plugins回 Fortify SCA plugin for Eclipse 3.x Based IE,一Fort"?粕上峋顾竺_耳以DescnpbonFor的plugin 切 VS 的 OSForti SCA plugin forVS 须8l叫1.00 GB of space required an the C drive27.33 GB of space available on the C driveInstallSNeldCancel5. 再点击NEXT'按钮即可完成安装6. 添加相应的规则库,可直接联网下载最新的规则库,或是将安装包下的fotify_rule文件夹下rules_ZH.rar解压缩到fortify安装目录下的Coreconfigrules位置2.7. Fortify SCA 安装 Eclispe 插件安装Eclipse安全编码插件安装基干Eclipse的IDE:1. 按照上述说明安装Fortify SCA套件“注章:对于Endows平台来说,清礴保在安装期间选择了 Eclipse 3选I瓦2. 打开 Eclipse3. Help (帮助)-Softwa旭 Updates (软件更新)-Manage Configuration Location 管理配置位置"4. 单击 Add an Extension Location (添加扩展位置"5. 选择 :in£tall_direc tc ry."'/p lu'JiEs/ecl ipse.6. 单OK W确定八辟幕上将显示Fortify Software安全编码插件菜单一7. 有关产品文档的说明,请豪见第9页中的“相关交档链接、2.8. Fortify SCA在linux上的安装(要有linux版本的安装文件)安装 Fortify Source Code Analysis;1,导航至包含下载软件的目录-2 打开一个shell窗口,并通过提示时输入以下命令来提取文件:'.luul:i|: -.dL'hi Vr7_rdJlie . ti-12tar -xvf - archive _rjanrje> .tar3. 有关以下主题的信息,请参见第7页中的“后续安装任务”: 从之前版本中迁移属性文件,为代理规则包更新服务器指定连接信息 指定一种非英文的语言环境, 运行 Rulepack Updater2.9. Fortify SCA在Unix上的安装(要有Unix版本的安装文件)安装 Fortify Source Code Analysts:L 导航至包含下载的软件的目录“2打开一个shell窗口并通过输入以下命令来提取文件;gunipivt_naine>. tgzgtar -xvf <archi ve_riame>. tar3.有关以下主题的信息请参见第7页中的“后续安装任务,早 队之前版本中迁将属性文件 为代理规则包更新服务器指定连接信息,指定一种非英文语言环境 运行 Rulepack Updater3.使用说明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,然后选中要扫描的目录,点击确定按钮即可扫描Vi guan Sfud 泊 日 uM Int 知Moo Si ar t Ham- PrFroiQct.l Ciistom EjuIs Editoil1以码*ffGi已pg山2D09-3-9Z005-3-92009-3-92009-3=3Sain ct th.E x-«a-l d.i r feda-ry o f yaw pr djssplfttform. fpr) smplatforwiScii tsmplatform. fpr) WebtrcalDeveloperS. IScan (webc:. 艮嫔测应模很丽1 Auai x «a % Audited 1 % Audited 2. % Au.du led 0 % Audi Ltd±. «pl Qf Q珂1 :都书堂坂残t s tr*axhit femki*xpr 3+ 3 tpplinJh十 3 5 * DJEIM©您口土 -updite stfutsl. 9TaL. 2. 4+ 3 Wbb让土 q vtbE«it文怦典 *bp>5| "建苴件夹如i |i口白n FTojeirt3.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所预期的相同(路径的冒号或独立的分号的列表)。你可以使用FortifySCA 文件说明符。-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.javaJ2EE项目转换的简单示例把项目的所有文件和库都放在一个目录下,运行下面的命令:.sourceanalyzer -Xmx1000m -b pName -encoding "UTF-8" -cp "*/*.jar".sourceanalyzer -Xmx1000m -b pName -appserver weblogic -appserver-verion 9-appserver-home “d:beawebloigcserverlib"-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 和 8WebSphere 版本 6如果你在使用一个没有被列出来的应用程序服务器,使用默认内部Fortify JSP编 译程序。例如:sourceanalyzer -b my_buildid -cp "WEB-INF/lib/*.jar" "WEB-INF/*/*.jsp”使用 FindBugsFindBugs()是一个静态分析工具,它在 Java 代码 中检测质量问题。你可以和Fortify SCA 一起使用FindBugs,结果会被合并到分析 结果文件中。与Fortify SCA运行在Java源文件中不同,FindBugs运行在Java字 节码中。因此,在项目中运行分析之前,你应该首先编译项目产生类文件。为了示范如何与Fortify SCA 一起自动地运行FindBugs,编译例子代码, Warning.java,如下:1. 定位到以下目录:<install_directory>/Samples/advanced/findbugs2. 输入以下命令并编译例子:mkdir buildjavac -d build Warning.java3. 用FindBugs和Fortify SCA扫描例子,如下:sourceanalyzer -b findbugs_sample -java-build-dir build Warning.java sourceanalyzer -b findbugs_sample -scan -findbugs -f findbugs_sample.fpr4. 检查早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> makeFortify 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=gccCXX=g+AR=ar这个步骤可以像这些makefile里提及的的工具、Fortify SCA,和一些适当选项一 样简单。CC=sourceanalyzer -b mybuild -c gccCXX=sourceanalyzer -b mybuild -c g+AR=sourceanalyzer -b mybuild -c arVC6.0项目的转换与分析示例.sourceanalyzer -b my_buildid -c msdev MyProject.dsp /Make /BUILD.sourceanalyzer -b my_buildid -scan -f xx.fpr3.2.分析Fortitfy SCA扫描的结果1. 审计结果的基本概念审计:将Fortify SCA扫描分析出来的结果中的漏洞进行审查,分析,定性,指导 开发人员进行漏洞的修复工作。Hide/Suppress/Suspicious/Not An Issue 四个的不同Hide:是将此漏洞不显示出来,在报告中也不显示出来Suppress :是此漏洞不是问题,可以不用看的Suspicious:是审计的一个定性,这个问题有可能是真的,值得怀疑。Not An Issue:也是审计的一个定性,说明这一漏洞不是个问题。2. 首先是将扫描结果导成后缀为fpr文件,然后用Audit WorkBench打开该文件,界面 如下所示