当前位置:首页 > 述职报告 > 【如何做好软件安全测试】软件安全测试培训
 

【如何做好软件安全测试】软件安全测试培训

发布时间:2019-01-29 03:48:44 影响了:

  摘要:软件安全测试是指有关验证软件的安全等级和识别潜在安全性缺陷的过程。其主要目的是查找软件自身程序设计中存在的安全隐患,并检查应用程序对非法侵入的防范能力,根据安全指标不同测试策略也不同。做好软件安全性测试的必要条件是:一是充分了解软件安全漏洞,二是评估安全风险,三是拥有高效的软件安全测试技术和工具。
  关键词:软件安全测试 白盒和黑盒测试 安全漏洞
  
  软件安全在互联网应用普及的今天是越来越被重视。软件安全测试是保证软件能够安全使用的最主要的手段,在软件测试过程中的安全性测试是尤为重要的。软件安全性测试是指有关验证软件的安全等级和识别潜在安全性缺陷的过程。软件安全测试的主要目的是查找软件自身程序设计中存在的安全隐患,并检查应用程序对非法侵入的防范能力,根据安全指标不同测试策略也不同。安全性测试并不最终证明应用程序是安全的,而是用于验证所设立策略的有效性,这些对策是基于威胁分析阶段所做的假设而选择的。
  根据不同的安全要求,安全测试所要考虑的问题也就不相同,例如:
  一、用户认证安全的测试要考虑问题
  1.明确区分系统中不同用户权限
  2.系统中会不会出现用户冲突
  3.系统会不会因用户的权限的改变造成混乱
  4.用户登陆密码是否是可见、可复制
  5.是否可以通过绝对途径登陆系统(拷贝用户登陆后的链接直接进入系统)
  6.用户推出系统后是否删除了所有鉴权标记,是否可以使用后退键而不通过输入口令进入系统
  二、系统网络安全的测试要考虑问题
  1.测试采取的防护措施是否正确装配好,有关系统的补丁是否打上
  2.模拟非授权攻击,看防护系统是否坚固
  3.采用成熟的网络漏洞检查工具检查系统相关漏洞(即用最专业的黑客攻击工具攻击试一下,现在最常用的是 NBSI 系列和 IPhacker IP )
  4.采用各种木马检查工具检查系统木马情况
  5.采用各种防外挂工具检查系统各组程序的客外挂漏洞
  三、数据库安全考虑问题
  1.系统数据是否机密(比如对银行系统,这一点就特别重要,一般的网站就没有太高要求)
  2.系统数据的完整性(数据的不完整,对于系统的功能实现有很大障碍)
  3.系统数据可管理性
  4.系统数据的独立性
  5.系统数据可备份和恢复能力(数据备份是否完整,可否恢复,恢复是否可以完整)
  安全测试计划是非常重要的,它和安全测试紧密相关,是最终有效测试软件安全级别重要内容。下面就介绍一下安全测试三个要点:
  一、如何执行安全测试
  谁去做安全测试,因为安全测试包括两种方法,谁去做这个问题有两种答案。标准测试组织用上写方法能够执行功能安全测试。例如确认访问控制方法是否正常工作的测试就是一类功能安全测试。 另一个方面,传统QA人员去执行基于风险的安全测试是很困难的,问题是安全测试是一个专门知识。首先安全测试的困难是测试设计者必须用一个攻击者的思维去思考。第二,安全测试不经常导致直接的安全业绩和显示出被发掘的问题。所以说基于风险的安全测试依赖于更多专门的知识和更多的经验。
   二、 怎么去做安全测试
   把自己想象一个攻击者,按攻击者的思路去设计测试。白盒和黑盒测试的分析方法,两者都是去理解软件,但是他们用不同的方法依区别是否分析人员和测试者已经访问源代码。白盒测试分析包括分析和理解源代码和设计。他是非常典型和有效的发现程序错误的方法(bug-自动扫描代码,缺点-做风险分析)。黑盒分析是通过输入不同输入值,来分析到正在运行的程序。这种测试只需要运行程序,不需要分析源代码在安全范例中,恶意的输入是一个有效的方法去破坏程序。如果程序真的被破坏了,那么我们可能真的发现了一个安全问题。只要测试人员能提供可能的输入并且能观察到测试效果,那么黑盒测试就可行。
  三、所以做好外部输入数据安全测试是软件安全测试中最重要的工作,那么目前主要安全测试方法有
  1.静态的代码安全测试:主要是通过对软件系统的源代码进行安全扫描,根据程序中数据流,控制流,语义等信息与其特有软件安全规则库进行匹对,从中找出代码中潜在的安全漏洞。静态的源代码安全测试是非常有用的方法,它可以在编码阶段找出所有可能存在安全风险的代码,这样开发人员可以在早期解决潜在的安全问题。而正因为如此,静态代码测试比较适用于早期的代码开发阶段,而不是测试阶段。同时,由于关系到开发部门,测试部门,管理部门等多个部门的工作,在实际的贯彻实施中坐上有一定的难度。
  2.动态的渗透测试:渗透测试也是我们常用的安全测试方法。使用自动化工具或者人工地方法模拟黑客的输入,对应用系统进行攻击性测试,从中找出运行时刻所存在的安全漏洞。这种测试的特点就是真实有效,一般找出来的问题都是正确的,也是较为严重的。但渗透测试一个致命的缺点就是,由于模拟的测试数据只能达到有限的测试点,覆盖率很低。根据美国权威机构统计,渗透测试的覆盖率只能达到20%至30%,漏报率比较高。
  总的来说,做好软件安全性测试的必要条件是:一是充分了解软件安全漏洞,二是评估安全风险,三是拥有高效的软件安全测试技术和工具。
  (1)充分了解软件安全漏洞
  评估一个软件系统的安全程度,需要从设计、实现和部署三个环节同时着手。我们先看一下Common Criteria是如何评估软件系统安全的。首先要确定软件产品对应的Protection Profile(PP)。一个PP定义了一类软件产品的安全特性模板。例如数据库的PP、防火墙的PP等。然后,根据PP再提出具体的安全功能需求,如用户的身份认证实现。最后,确定安全对象以及是如何满足对应的安全功能需求的。因此,一个安全软件的三个环节,哪个出问题都不行。
   (2)安全性测试的评估
  当做完安全性测试后,软件是否能够达到预期的安全程度呢?这是安全性测试人员最关心的问题,因此需要建立对测试后的安全性评估机制。一般从以下两个方面进行评估。
  ①安全性缺陷数据评估。如果发现软件的安全性缺陷和漏洞越多,可能遗留的缺陷也越多。进行这类评估时,必须建立基线数据作为参照,否则评估起来没有依据就无法得到正确的结论。
  ②采用漏洞植入法来进行评估。漏洞植入法和可靠性测试里的故障插入测试是同一道理,只不过这里是在软件里插入一些有安全隐患的问题。采用漏洞植入法时,先让不参加安全测试的特定人员在软件中预先植入一定数量的漏洞,最后测试完后看有多少植入的漏洞被发现,以此来评估软件的安全性测试做得是否充分。
  (3)采用安全测试技术和工具
  可使用专业的具有特定功能的安全扫描软件来寻找潜在的漏洞,将已经发生的缺陷纳入缺陷库,然后通过自动化测试方法来使用自动化缺陷库进行轰炸测试。
  安全测试是用来验证集成在软件内的保护机制是否能够在实际中保护系统免受非法的侵入。一句通俗的话说:软件系统的安全当然必须能够经受住正面的攻击――但是它也必须能够经受住侧面的和背后的攻击。
  
  参考文献:
  [1](美)安德鲁(Andrews,M.),(美)惠特克(Whittaker,J.A.)著,汪青青译.《Web入侵安全测试与对策》.清华大学出版社,2006-10-1
  [2](美)威斯波尔(Wysopal,C.)等著,程永敬等译.《软件安全测试艺术》.机械工业出版社,2007-08

猜你想看
相关文章

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3