Fortify使用手册.docx
《Fortify使用手册.docx》由会员分享,可在线阅读,更多相关《Fortify使用手册.docx(16页珍藏版)》请在冰豆网上搜索。
Fortify使用手册
中国建设银行
网上银行投资产品创新项目
Fortify使用手册
总行信息技术管理部
广州开发中心
2008年6月
修改记录
编号
日期
描述
版本
作者
审核
发布日期
2008-6-2
网银投资产品创新项目文档
1.1
廖敏飞、羌雪
本文档中所包含的信息属于机密信息,如无中国建设银行的书面许可,任何人都无权复制或利用。
®CopyRight2008byChinaConstructionBank
1、引言
1.1目的
提高中心项目软件安全意识
转达总行关于软件安全编码及测试的相关要求
了解、学习fortifySCA的使用
1.2背景
网银投资产品创新项目文档。
1.3定义
FortifySourceCodeAnalysisSuite是美国FortifySoftware为软件开发企业提供的软件源代码安全漏洞扫描、分析和管理的工具。
使用该工具能弥补软件开发人员、安全人员和管理人员在源代码方面的安全知识不足,加速代码安全审计和方便软件安全风险的管理。
FortifySourceCodeAnalysisEngine(源代码安全分析引擎)
FortifySecureCoderules(软件安全代码规则集)
FortifyAuditWorkbench(安全审计工作台)
FortifyRulesBuilder(安全代码规则构建器)
FortifySourceCodeAnalysisSuiteplugin(FortifySCAIDE集成开发插件)
FortifyManager(软件安全管理器)
1.4环境说明
(1)硬件要求:
CPU>=1G
RAM>=1G
CDROM/DVD光驱。
(2)软件要求:
JavaJDK1.4.2/1.5Eclipse3.xJavaIDE开发环境。
1.5提醒注意
(1)每个项目指定安全测试工作负责人;
(2)每个项目均安装软件,注意license保密;
(3)安全检测必须提前进行,预留源码修改时间;
(4)检测结果分析及代码需如何修改,可参考《软件代码安全编写指南》;
(5)中心每季度分析汇总项目软件检测情况并上报总行。
1.6相关要求
(1)上线项目必须先进行软件代码安全测试;
(2)软件代码安全检测必须提前进行;
(3)测试结果中高危隐患数须为0,若实在不能消除高危隐患,需进行分析说明;
(4)测试报告及审批表须提交项目实施管理处审批;
(5)以电子邮件形式,发PIO、项目安全处,提交;
(6)软件代码安全检测报告(选择.pdf格式);
(7)软件代码安全检测上线审批表(注意编号);
2、安装Fortify
2.1 进入Fortify安装目录
(1)进入SCASEE-4[1].5.0.0337-WIN-XP-2000\SCASEE-4.5.0.0337-WIN-XP-2000目录;
(2)运行install.exe
2.2 输入LICENSEKEY:
BAHODPERE9I9
2.3选择ALLUsers
2.4下面选项全部选中
2.5选择No选项
完成软件安装。
3、使用Fortify
3.1进入源码目录执行SCAcommandlineScan.bat
3.2SCAcommandlineScan.bat的内容
·sourceanalyzer-Xmx600M-bwebgoat-clean
·sourceanalyzer-Xmx600M-bwebgoat-debug-logfilebuild.log-encoding"UTF-8"-cp"**/*.jar".
·sourceanalyzer-Xmx600M-bwebgoat-scan-fwebgoat.fpr-findbugs-debug-logfilebuild.log
·cmd
4、结果查询
(1)打开AuditBench
(2)选择结果文件webgoat.fpr
5、可能的问题
(1)RaceCondition:
SingletonMemberField(TimeandState,Structural)(竞争条件)
(2)SQLInjection(InputValidationandRepresentation,DataFlow)(SQL注入)
(3)Cross-SiteScripting(InputValidationandRepresentation,DataFlow)(跨站脚本)
(4)SystemInformationLeak(Encapsulation,DataFlow)(系统信息泄漏)
(5)HTTPResponseSplitting(InputValidationandRepresentation,DataFlow)(HTTP封包回应分割)
6、结果分析
6.1 RaceCondition
•ABSTRACT
•Servletmemberfieldsmayallowoneusertoseeanotheruser'sdata.
•EXPLANATION
•ManyServletdevelopersdonotunderstandthat,unlessaServletimplementstheSingleThreadModelinterface,theServletisasingleton;thereisonlyoneinstanceoftheServlet,andthatsingleinstanceisusedandre-usedtohandlemultiplerequeststhatareprocessedsimultaneouslybydifferentthreads.
•AcommonresultofthismisunderstandingisthatdevelopersuseServletmemberfieldsinsuchawaythatoneusermayinadvertentlyseeanotheruser'sdata.Inotherwords,storinguserdatainServletmemberfieldsintroducesadataaccessracecondition.)
6.2 SQLInjection
•ABSTRACT
•ConstructingadynamicSQLstatementwithuserinputmayallowanattackertomodifythestatement'smeaningortoexecutearbitrarySQLcommands.
•EXPLANATION
•SQLinjectionerrorsoccurwhen:
•1.Dataentersaprogramfromanuntrustedsource.
•InthiscasethedataentersatexecuteQuery()inJavaSource/CCB/PUB/DBACCESS.javaatline140.
•2.ThedataisusedtodynamicallyconstructaSQLquery.
•InthiscasethedataispassedtoprepareCall()inJavaSource/CCB/PUB/DBACCESS.javaatline499.
6.3 Cross-SiteScripting
•ABSTRACT
•Sendingunvalidateddatatoawebbrowsercanresultinthebrowserexecutingmaliciouscode.
•EXPLANATION
•Cross-sitescripting(XSS)vulnerabilitiesoccurwhen:
•1.Dataentersawebapplicationthroughanuntrustedsource,mostfrequentlyawebrequestordatabase.
•InthiscasethedataentersatgetParameter()inWebRoot/V5/includes/head.jspatline26.
•2.Thedataisincludedindynamiccontentthatissenttoawebuserwithoutbeingvalidatedformaliciouscode.
•Inthiscasethedataissentatprint()inWebRoot/V5/CN/STY1/FE31050.jspatline17.
•ThemaliciouscontentsenttothewebbrowseroftentakestheformofasegmentofJavaScript,butmayalsoincludeHTML,Flashoranyothertypeofcodethatthebrowsermayexecute.ThevarietyofattacksbasedonXSSisalmostlimitless,buttheycommonlyincludetransmittingprivatedatalikecookiesorothersessioninformationtotheattacker,redirectingthevictimtowebcontentcontrolledbytheattacker,orperformingothermaliciousoperationsontheuser'smachineundertheguiseofthevulnerablesite.
6.4 SystemInformationLeak
•ABSTRACT
•Revealingsystemdataordebugginginformationhelpsanadversarylearnaboutthesystemandformaplanofattack.
6.5 HTTPResponseSplitting
•ABSTRACT
•IncludingunvalidateddatainanHTTPresponseheadercanenablecache-poisoning,cross-sitescripting,cross-userdefacementorpagehijackingattacks.
•EXPLANATION
•HTTPresponsesplittingvulnerabilitiesoccurwhen:
•1.Dataentersawebapplicationthroughanuntrustedsource,mostfrequentlyanHTTPrequest.
•InthiscasethedataentersatexecuteQuery()inJavaSource/CCB/PUB/DBACCESS.javaatline638.
•2.ThedataisincludedinanHTTPresponseheadersenttoawebuserwithoutbeingvalidatedformaliciouscharacters.
•InthiscasethedataissentataddCookie()inJavaSource/B2C/SERVLET/B2CFile.javaatline475.
•Aswithmanysoftwaresecurityvulnerabilities,HTTPresponsesplittingisameanstoanend,notanendinitself.Atitsroot,thevulnerabilityisstraightforward:
anattackerpassesmaliciousdatatoavulnerableapplication,andtheapplicationincludesthedatainanHTTPresponseheader.
•Tomountasuccessfulexploit,theapplicationmustallowinputthatcontainsCR(carriagereturn,alsogivenby%0dor\r)andLF(linefeed,alsogivenby%0aor\n)charactersintotheheader.Thesecharactersnotonlygiveattackerscontroloftheremainingheadersandbodyoftheresponsetheapplicationintendstosend,butalsoallowsthemtocreateadditionalresponsesentirelyundertheircontrol.