基于渗透测试和源代码扫描的软件安全测试和开发
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于渗透测试和源代码扫描的软件安全测试和开发
自从软件诞生起,软件的安全性一直就是每一个程序员不可回避的问题。面对“如何开发出具有高安全性软件”与“如何利用软件漏洞进行攻击”,安全防护人员和黑客,就像中国武侠中的白道高手与黑道高手一样,在相互的较量中提升自己的功力。
自从软件诞生起,软件的安全性一直就是每一个程序员不可回避的问题。面对“如何开发出具有高安全性软件”与“如何利用软件漏洞进行攻击”,安全防护人员和黑客,就像中国武侠中的白道高手与黑道高手一样,在相互的较量中提升自己的功力。随着计算机语言的不断进化和互联网时代的到来,软件所面临的安全性问题也在发生着巨大改变。如果将最初的单机病毒攻击成为软件安全的第一纪,网络攻击称为第二纪的话,那我们现在正处在软件安全的第三纪 -- 应用攻击。Gartner 的数据显示,75% 的黑客攻击发生在应用层。而来自 NIST 的数据更为惊人,有 92% 被发现的漏洞属于应用层而不是网络。
图 1. 来自 Gartner 和 NIST 的数据
在这些软件安全问题中,由于没有在软件设计和开发的过程中引入安全开发和测试的情况占了很大比例。其实,从 1968 年软件工程诞生以来,人们一直企图在软件开发生命周期(SDLC)中引入安全开发的理念和方法,并由此出现了安全开
发生命周期(Secure Development Lifecycle)。在本文中,我们就将结合示例来讨论一下如何能够在软件开发生命周期中进行软件安全开发和测试的问题。
图 2. 安全开发生命周期示意图
软件安全的“闻问望切”—基于黑盒的渗透测试
无论是在传统的瀑布模型开发还是在方兴未艾的敏捷软件开发中,软件测试都是重中之重。基于黑盒的渗透测试,是一种有效地将软件安全性测试引入软件开发生命周期(SDLC)中的方法。目前,许多软件厂商都有针对各自技术研发出的渗透测试产品,如 IBM 的 AppScan、HP 的 WebInspect 等。说到渗透测试,就不能不提到由 Barton Miller 和 Lars Frederickson 等人在 1990 年提出的 Fuzz 技术。传说在 1989 年一个雷电交加的夜晚,Barton Miller 用 Modem 连接自己的主机时,一个闪电过后,电路中的高低位互换了,Miller 由此想到了利用“crash、break、destroy”的方式来进行软件测试的技术——fuzz。著名的 Fuzz 工具有 Fuzzing 网络协议的 SPIKE、大桃子 Peach等等。Fuzz 技术自上世纪 90 年代初期起,慢慢的广泛应用于系统平台测试,应用软件测试和网络安全测试中。
下面我们将展示如何针对一个 Web 应用进行基于安全漏洞检测的渗透测试。在这里我们选用 IBM Rational AppScan Standard Edition V7.8 (以下简称 AppScan)作为测试工具。
首先,我们在 AppScan 里建立一个新的扫描。AppScan 提供了许多预定义的扫描模板来帮助工程师建立针对不同 Web 应用和 Web Service 的扫描。
图 3. 用 Rational AppScan 模板创建扫描
在这个示例中,我们将对架设在笔者本地的 Tomcat V5.5 服务器上一个名为 AltoroMutual 的电子商务系统进行安全渗透测试。
图 4. 扫描 URL 配置
完成指定扫描的起始 URL 后,我们将一个拥有普通用户权限的用户名和密码输入到 AppScan 的自动登录选项中。AppScan 还支持通过录制并在测试时播放的方式进行登录。
图 5. AppScan 扫描登录配置
在 AppScan 中,测试策略的选择会对不同的 Web 应用和 Web Service 产生影响。在本示例中我们仅选择了针对 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 后。左下方的仪表板显示了安全问题的汇总,由于我们设定只针对中高级别的安全问题进行显示,所以 Low Level、Info Level 的问题数量为 0。右上方将扫描出安全问题的种类和相应的 URL 一一罗列出来,而在其下方是每一个安全问题的详细描述、修复建议和问题复现。
图 9. AppScan 扫描完成后的主窗体
一般来讲,基于黑盒的渗透测试具有较高的测试准确率,但是我们依旧需要对扫描出的安全问题进行分析和甄别,从而给出合理的安全级别和修复建议。在本例中,我们具体分析一下 AltoroMutual 应用中存在的跨站脚本攻击(XSS)问题。
点击存在 XSS 问题的 URL“http:// /altoromutual/sendFeedback”中“name”,可以看到产生这个 XSS 问题的详细信息,我们通过查看“请求 / 响应”来对该漏洞进行复现和判断其严重程度。点击“请求 / 响应”的标签后,我们发现 AppScan 发送了如下的内容给 AltoroMutual。利用将
“1234>%22%27>”插入到 cfile=comments.txt&name 后,实施 XSS 攻击。
图 10. AppScan 向服务器端发送的带有跨站脚本攻击的数据
通过点击“在浏览器中显示”的方式,我们可以得以在 AppScan 内嵌浏览器中将这个跨站脚本攻击问题复现。