基于渗透测试和源代码扫描的软件安全测试和开发.docx

上传人:b****4 文档编号:6315163 上传时间:2023-05-09 格式:DOCX 页数:17 大小:1.86MB
下载 相关 举报
基于渗透测试和源代码扫描的软件安全测试和开发.docx_第1页
第1页 / 共17页
基于渗透测试和源代码扫描的软件安全测试和开发.docx_第2页
第2页 / 共17页
基于渗透测试和源代码扫描的软件安全测试和开发.docx_第3页
第3页 / 共17页
基于渗透测试和源代码扫描的软件安全测试和开发.docx_第4页
第4页 / 共17页
基于渗透测试和源代码扫描的软件安全测试和开发.docx_第5页
第5页 / 共17页
基于渗透测试和源代码扫描的软件安全测试和开发.docx_第6页
第6页 / 共17页
基于渗透测试和源代码扫描的软件安全测试和开发.docx_第7页
第7页 / 共17页
基于渗透测试和源代码扫描的软件安全测试和开发.docx_第8页
第8页 / 共17页
基于渗透测试和源代码扫描的软件安全测试和开发.docx_第9页
第9页 / 共17页
基于渗透测试和源代码扫描的软件安全测试和开发.docx_第10页
第10页 / 共17页
基于渗透测试和源代码扫描的软件安全测试和开发.docx_第11页
第11页 / 共17页
基于渗透测试和源代码扫描的软件安全测试和开发.docx_第12页
第12页 / 共17页
基于渗透测试和源代码扫描的软件安全测试和开发.docx_第13页
第13页 / 共17页
基于渗透测试和源代码扫描的软件安全测试和开发.docx_第14页
第14页 / 共17页
基于渗透测试和源代码扫描的软件安全测试和开发.docx_第15页
第15页 / 共17页
基于渗透测试和源代码扫描的软件安全测试和开发.docx_第16页
第16页 / 共17页
基于渗透测试和源代码扫描的软件安全测试和开发.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于渗透测试和源代码扫描的软件安全测试和开发.docx

《基于渗透测试和源代码扫描的软件安全测试和开发.docx》由会员分享,可在线阅读,更多相关《基于渗透测试和源代码扫描的软件安全测试和开发.docx(17页珍藏版)》请在冰点文库上搜索。

基于渗透测试和源代码扫描的软件安全测试和开发.docx

基于渗透测试和源代码扫描的软件安全测试和开发

基于渗透测试和源代码扫描的软件安全测试和开发

自从软件诞生起,软件的安全性一直就是每一个程序员不可回避的问题。

面对“如何开发出具有高安全性软件”与“如何利用软件漏洞进行攻击”,安全防护人员和黑客,就像中国武侠中的白道高手与黑道高手一样,在相互的较量中提升自己的功力。

自从软件诞生起,软件的安全性一直就是每一个程序员不可回避的问题。

面对“如何开发出具有高安全性软件”与“如何利用软件漏洞进行攻击”,安全防护人员和黑客,就像中国武侠中的白道高手与黑道高手一样,在相互的较量中提升自己的功力。

随着计算机语言的不断进化和互联网时代的到来,软件所面临的安全性问题也在发生着巨大改变。

如果将最初的单机病毒攻击成为软件安全的第一纪,网络攻击称为第二纪的话,那我们现在正处在软件安全的第三纪--应用攻击。

Gartner的数据显示,75%的黑客攻击发生在应用层。

而来自NIST的数据更为惊人,有92%被发现的漏洞属于应用层而不是网络。

图1.来自Gartner和NIST的数据

在这些软件安全问题中,由于没有在软件设计和开发的过程中引入安全开发和测试的情况占了很大比例。

其实,从1968年软件工程诞生以来,人们一直企图在软件开发生命周期(SDLC)中引入安全开发的理念和方法,并由此出现了安全开发生命周期(SecureDevelopmentLifecycle)。

在本文中,我们就将结合示例来讨论一下如何能够在软件开发生命周期中进行软件安全开发和测试的问题。

图2.安全开发生命周期示意图

软件安全的“闻问望切”—基于黑盒的渗透测试

无论是在传统的瀑布模型开发还是在方兴未艾的敏捷软件开发中,软件测试都是重中之重。

基于黑盒的渗透测试,是一种有效地将软件安全性测试引入软件开发生命周期(SDLC)中的方法。

目前,许多软件厂商都有针对各自技术研发出的渗透测试产品,如IBM的AppScan、HP的WebInspect等。

说到渗透测试,就不能不提到由BartonMiller和LarsFrederickson等人在1990年提出的Fuzz技术。

传说在1989年一个雷电交加的夜晚,BartonMiller用Modem连接自己的主机时,一个闪电过后,电路中的高低位互换了,Miller由此想到了利用“crash、break、destroy”的方式来进行软件测试的技术——fuzz。

著名的Fuzz工具有Fuzzing网络协议的SPIKE、大桃子Peach等等。

Fuzz技术自上世纪90年代初期起,慢慢的广泛应用于系统平台测试,应用软件测试和网络安全测试中。

下面我们将展示如何针对一个Web应用进行基于安全漏洞检测的渗透测试。

在这里我们选用IBMRationalAppScanStandardEditionV7.8(以下简称AppScan)作为测试工具。

首先,我们在AppScan里建立一个新的扫描。

AppScan提供了许多预定义的扫描模板来帮助工程师建立针对不同Web应用和WebService的扫描。

图3.用RationalAppScan模板创建扫描

在这个示例中,我们将对架设在笔者本地的TomcatV5.5服务器上一个名为AltoroMutual的电子商务系统进行安全渗透测试。

图4.扫描URL配置

完成指定扫描的起始URL后,我们将一个拥有普通用户权限的用户名和密码输入到AppScan的自动登录选项中。

AppScan还支持通过录制并在测试时播放的方式进行登录。

图5.AppScan扫描登录配置

在AppScan中,测试策略的选择会对不同的Web应用和WebService产生影响。

在本示例中我们仅选择了针对Web应用和Tomcat应用服务器的具体中高漏洞等级的自定义测试策略。

其实当我们打开每一个具体的测试策略时,会发现AppScan在其中定义了包括针对Java、.NET、PHP等不同类型网站测试类型种类和相应安全问题严重程度的级别。

图6.AppScan安全测试策略配置

图7.AppScan安全测试策略的详细内容

通过设置URL入口、登陆方式和测试策略,AppScan可以快速完成Web应用扫描的配置,从而开始漏洞检测。

其实,除了上述几种设置,我们在图7左侧还可以发现更为完善的测试配置项,比如对参数和Cookie的设置,对扫描访问的URL深度和广度进行配置,对需要填充的表单如何填写等等。

图8.进行扫描中与发现的部分安全问题

AppScan的扫描分为二部分,首先是进行探索,将发现的URL进行记录;其次进入实际的测试步骤,将利用之前我们设定的测试策略进行渗透测试。

下图是AltoroMutual应用经过AppScan黑盒测试发现的部分安全问题。

在AppScan主窗口左上方显示的AltoroMutual被扫描出的网站URL结构图,每个URL上发现的安全漏洞被标注在该URL后。

左下方的仪表板显示了安全问题的汇总,由于我们设定只针对中高级别的安全问题进行显示,所以LowLevel、InfoLevel的问题数量为0。

右上方将扫描出安全问题的种类和相应的URL一一罗列出来,而在其下方是每一个安全问题的详细描述、修复建议和问题复现。

图9.AppScan扫描完成后的主窗体

一般来讲,基于黑盒的渗透测试具有较高的测试准确率,但是我们依旧需要对扫描出的安全问题进行分析和甄别,从而给出合理的安全级别和修复建议。

在本例中,我们具体分析一下AltoroMutual应用中存在的跨站脚本攻击(XSS)问题。

点击存在XSS问题的URL“http:

///altoromutual/sendFeedback”中“name”,可以看到产生这个XSS问题的详细信息,我们通过查看“请求/响应”来对该漏洞进行复现和判断其严重程度。

点击“请求/响应”的标签后,我们发现AppScan发送了如下的内容给AltoroMutual。

利用将“1234>%22%27>

alert(14404)%22>”插入到cfile=comments.txt&name后,实施XSS攻击。

图10.AppScan向服务器端发送的带有跨站脚本攻击的数据

通过点击“在浏览器中显示”的方式,我们可以得以在AppScan内嵌浏览器中将这个跨站脚本攻击问题复现。

图11.在AppScan内置浏览器中进行XSS问题复现

通过上面的扫描示例我们不难看出,基于黑盒的渗透测试确是有较为高的准确率。

在软件开发生命周期中,渗透测试可以帮助测试人员、QA人员在FVT、UAT等阶段发现软件安全问题。

但是,渗透测试的全面性和覆盖率一直都是困扰着众多软件安全测试人员的问题。

而且对于开发人员来说,他们更为关心如何能够在软件开发的早期阶段就能引入安全性的分析,让他们能够根据漏洞分析的提示,尽可能早地将安全问题Fix在开发阶段,这就引入了基于白盒的源代码安全分析。

如果把检测软件漏洞比作去医院看病,那渗透测试就如同中医的“闻问望切”一般,通过给软件把脉,将病例病因一一道来。

而基于白盒的源代码分析,更像是西医的内观外治,先做完X片、B超,然后对症下药。

其实长久以来,基于黑盒的渗透测试和基于白盒的源代码分析到底谁更为有效的问题一直争论不下,以至于还有了灰盒测试(GrayBox)的出现。

接下来就让我们一起通过示例看看白盒黑盒孰优孰劣。

给软件拍一张X光片—基于白盒的源代码分析

源代码分析技术由来已久,Colorado大学的LloydD.Fosdick和LeonJ.Osterweil1976年的9月曾在ACMComputingSurveys上发表了著名的DataFlowAnalysisinSoftwareReliability,其中就提到了数据流分析、状态机系统、边界检测、数据类型验证、控制流分析等技术。

随着计算机语言的不断演进,源代码分析的技术也在日趋完善,在不同的细分领域,出现了很多不错的源代码分析产品,如KlocworkInsight、RationalSoftwareAnalyzer和Coverity、Parasoft等公司的产品。

而在静态源代码安全分析方面,Fortify公司和OunceLabs公司的静态代码分析器都是非常不错的产品。

2009年7月底,IBM发布收购要约,将OunceLabs纳入Rational产品线。

在本示例中,我们选用OunceLabs的安全分析器(OunceSecurityAnalyst6.1)和RationalSoftwareAnalyzer来分别对示例代码进行静态源代码安全分析和代码质量分析。

为了保持示例一致性,我们选用AltoroMutual应用的源代码进行静态分析。

首先,我们用OunceSecurityAnalyst6.1进行源代码安全分析。

Ounce的安全分析器(OunceSecurityAnalyst)支持多种部署方式,可以独立运行,也可以通过Plug-in的方式运行在软件开发人员的集成开发环境中。

在软件开发生命周期(SDLC)中,对于开发人员,更多的是希望在日常的开发过程中能够进行源代码的安全分析和检查,因此在本文的示例中我们选择将Ounce安全分析器(OunceSecurityAnalyst)通过插件的方式Plug-in到基于Eclipse的IBMRationalAppScanDeveloperEdition7.8.1中来使用。

图12.OunceLabs在RADE中的插件

下面我们在装有OunceSecurityAnalyst的RationalAppScanDeveloperEdition中,将AltoroMutual的源文件导入,我们发现Plug-in后的RationalAppScanDeveloperEdition上会多了一个名称为Ounce的菜单。

图13.在RADE中将AltoroJ项目编译通过

对于一般的静态安全分析而已,保持代码在做静态安全分析前的可编译性是一项非常重要的工作。

因此建议软件开发人员在进行静态安全分析前首先保证自己的代码是编译通过的。

我们首先将AltoroMutual的源代码进行编译,然后在Ounce菜单中选择对AltoroMutual源代码进行扫描。

下图中所示的是进行扫描之后的情况。

在RationalAppScanDeveloperEdition的控制台中,我们看到OunceSecurityAnalyst总共扫描了AltoroMutual项目的97个源文件,在10625行代码里发现了742个安全问题,总共用时62秒。

图14.利用OunceSecurityAnalyst进行源代码扫描

将视图切换到OunceLabsPerspective后,打开AssessmentSummary,我们可以查看发现的漏洞类别与数量。

图15.扫描发现的Top10的漏洞类别与数量

扫描完成后,OunceSecurityAnalyst会在发现安全漏洞的源文件上加上小红叉作为标示,帮助开发人员快速对漏洞进行定位。

左下方的漏洞描述与修复建议可以帮助开发者进行修复。

SmartTrace直观的将函数调用关系通过图示的方式展示出来,点击SmartAudit中的item开发者可以直接跳转到存在漏洞的代码行上进行工作。

图16.OunceSecurityAnalyst安全分析视图

针对前例中AppScan通过渗透测试扫描出来的XSS问题,我们来看看Ounce安全分析器是如何发现并定位该漏洞的。

打开XSS的漏洞列表,我们从FeedbackServelet.java文件中发现这个XSS问题是由于在“request.setAttribute("message_feedback",name);”这行代码中没有对name的输入值进行检测,允许了在name中包含跨站脚本攻击中经常使用的特殊字符,从而导致跨站脚本攻击问题。

图17.针对XSS问题的源代码分析

其实在某些时候,软件的安全问题也同样包含了软件的质量问题,例如在架构中不够良好的设计会导致系统的拒绝服务攻击,SQL链接在异常时候的不当处理导致连接池资源没有释放等等。

RationalSoftwareAnalyzer是一个基于Eclipse技术的软件分析工具,我们可以利用RationalSoftwareAnalyzer来对软件代码的质量和各种指标进行度量。

在示例中,我们选用RationalSoftwareAnalyzer7.0.1来对相同的AltoroMutual项目进行代码质量扫描。

首先,我们还是将AltoroMutual项目创建到RationalSoftwareAnalyzer的workspace中,并对该项目进行源代码分析的配置(如下图)。

图18.用RationalSoftwareAnalyzer进行代码质量分析的配置

通过扫描,我们可以从代码体系结构、软件度量、代码复审、数据流分析4个方面得到关于代码质量的问题数据。

图19.RationalSoftwareAnalyzer中对于软件度量的分析结果

在下图RationalSoftwareAnalyzer的数据流分析结果中,我们可以看到由于SQL链接在异常时不能释放而导致的资源泄漏问题。

图20.RationalSoftwareAnalyzer中基于数据流分析发现的资源泄漏问题

相似的,在Ounce中也可以发现这样既是安全也同样存在质量因素的漏洞。

图21.Ounce中针对相同资源泄漏问题的分析

总结

在本文中,我们通过对Web应用AltoroMutual进行渗透测试和源代码安全扫描,来对比黑盒动态测试和白盒静态分析在发现软件安全漏洞方面的功效,并利用RationalSoftwareAnalyzer在代码质量方面进行了粗浅的分析和与安全扫描的对比。

通过上述示例,我们发现源代码静态分析在代码扫描的覆盖率、发现安全问题的数量上有着不错的表现,并且能够找到大部分通过渗透测试发现的安全问题。

但这并不能说静态分析在软件安全检测方面要优于渗透测试。

静态分析的高覆盖率和扫描器的不同设置也导致了相对较高的误报率,而且静态代码的非运行性会导致了很多跟运行环境相关的安全漏洞通过静态安全分析无法发现。

相对于此,渗透测试刚好可以弥补静态分析的这些劣势,虽然渗透测试发现安全问题的数量不如静态分析那么多,但是渗透测试的准确率和针对运行时态的实时检测都是其优势所在。

所以渗透测试在软件开发生命周期中是不可或缺的一个环节。

同样,我们看到软件的质量问题在源代码分析中也不能忽视。

因此,一个理想的选择是:

在整个软件开发生命周期中的不同阶段,针对不同的人员,引入相应的安全策略,制定合理的开发流程,从而达到提高软件安全性的目的。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2