软件源代码安全缺陷检测技术研究进展综述

发表于:2013-6-26 10:13

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

  2.2.7 组件间安全分析

  组件间安全分析是通过分析各组件之间的依赖或关联关系来获得的,它首先在完成组件之间依赖xDep和安全距离xD计算后,生成组件间安全依赖图。在获得依赖vDep、fDep、xDep和安全距离vD、xD及安全依赖图这些数据后,组件间的安全分析也变得容易越来,其安全检测报告主要来自上述几种计算结果。首先按含缺陷点的组件遍历组件安全依赖图,给出存在潜在安全隐患的预测路径;然后进入组件内分别给出函数安全距离与变量安全距离等参数,这样就提供了一种组件间安全分析方法。

  2.2.8 安全预测的意义

  通过前面的计算和结论,发现:安全预测可以提供以前安全检测无法提供的相关安全信息,深化了安全检测的领域和功能;由安全预测所提供的依赖性和距离的观念可以从整体上反映软件的安全性、可靠性和软件的质量;安全预测为长期困扰人们的组件间安全检测提供了一种有效手段。

  3、软件源代码安全缺陷检测技术

  3.1 系统漏洞检测工具的设计原理

  从软件维护的角度可知,软件开发过程中,越早发现漏洞并提出解决方案,所花费的代价越小,在开发阶段修复一个bug要比在设计阶段修复bug花费十倍的时间,金钱和精力,而在测试阶段又要花费十倍于开发阶段的代价。因此,微软提出的安全软件开发流程在软件开发的每个阶段都引入了安全措施,以便能尽量在早期发现安全漏洞。

  在软件开发的每个阶段都加入了相关的安全措施。在可行性分析时就对软件运行环境进行考虑,分析其潜在安全;在需求分析阶段加入对安全需求的分析,对得到的规格说明书进行安全审查,找出其中存在的安全漏洞,并提出相应的解决方案;在软件设计阶段加入威胁建模,从体系结构的层次高度分析存在的安全威胁;在软件编码阶段,加入安全编码分析,找出开发人员编写代码时产生的安全缺陷并即时提醒更正;在测试阶段加入安全测试,按相应的方法检查需求阶段所列出的安全需求是否得到满足:最后在维护阶段也把安全作为重要的组成部分。

  安全软件工程是对软件工程的发展,它是对怎样构建安全的软件给出了一定的方法和规范,这需要搭建一个安全的软件集成开发环境,对软件开发流程的各个阶段给予安全支持。本文研究软件系统需求和设计阶段系统漏洞检测方法和工具的交现。

  对系统的漏洞检测基于UML,总体上可以分为两个大的部分,一是需求阶段漏洞检测,一是设计阶段漏洞检测。

  需求阶段的漏洞检测主要是对用户绘制出的用例图进行榆测。首先需要对argouml工具进行扩展,使之能够识别新添加的误用例,缓和用例,威胁关系和缓和关系通过对用例图的扫描收集到用例信息,和已建成的缺陷知识库中的误用例进行连接,检奄用例图中的用例是否有被误用例攻击的可能,然后把相关的误用例和缓和用例添加到该用例图中,最后再用argouml-1具读取这个生成的用例图,为用户生成一副带有完整误用例信息和缓和用例信息的图。

  设计阶段的漏洞检测主要是对用户绘制的顺序图进行检测。顺序图描述了对象之间消息的传送,表示用例中的行为顺序。通过对顺序图的扫描收集到对象和消息信息,并将这些信息建模成有限状态自动机,然后提取出其中所有的路径,和已建立好的缺陷知识库中的攻击模式库进行连接,检查是否有攻击路径存在,如果有,给出提示信息。为了更好的和缺陷知识库中的攻击模式库进行匹配,需要扩展argouml工具,使之能够添加和提取对象的组件信息和消息的事件信息。这是为了从更高的抽象层提取出路径信息。

  系统漏洞检测工具可以用来检测需求和设计中潜在的安全漏洞,以便尽早的发现系统的缺陷,对减少代码中的安全漏洞有积极的作用,可大大降低软件的开发成本。

  3.2 软件安全缺陷自动测试

  随着现代化网络信息系统的发展,以软件系统为核心的计算机应用已经渗透到各行各业,在工业、农业、国防和人们的日常生活中起着越来越重要的作用。随着软件系统的日益多样化、复杂化和大规模化,人们对软件的质量的重视程度越来越高。作为软件质量保证的重要手段,软件测试在这方面发挥着其他方法不可替代的作用。

  一般意义上,软件测试是为了发现错误而执行程序的过程。其中,设计和生成有效的测试数据是决定软件测试质量的重要因素之一。测试数据生成可以被理解为一个抽样过程,即根据相应的测试覆盖标准,采用一定的方法,在测试数据全集中进行抽样,选取出一批错误敏感(fault—sensitive)的测试数据,他们具有较高的发现软件错误的可能性。一个有效的测试数据生成方法可以生成高质量的测试数据,并尽可能降低测试数据的总数,从而降低软件开发成本。目前工业界主要靠人工测试(manual testing)来提高软件可靠性。实现自动测试是测试技术的梦想之一。软件自动测试技术,主要分为测试自动化脚本技术和测试数据自动生成技术等。测试过程中,有大量的测试行为可以被自动化,测试人员希望能够指定一些简单的脚本,通过这些脚本信息能够指导测试的自动化进行。TTCN—3是标准化的测试行为描述语言,目前已广泛应用在协议测试中,开始在软件测试和WEB测试中应用,基本上解决了测试行为自动化的描述问题。测试数据自动生成可以节省测试时间,降低测试成本,多年来人们已对他进行了广泛而深入的研究,取得了许多研究成果。但是在深入测试实践中,如

  何生成高质量的测试数据,仍然面临诸多困难。按照被测系统(System Under Test)的内部特性是否对测试人员公开,可以将测试技术分为黑盒测试(B1ack box Testing)和白盒测试(white box Testing)。

  黑盒测试即把被测对象看成一个黑盒子,不考虑程序内部的逻辑结构和内部特性,主要在软件的接口处进行测试,仅从输入输出来判定系统的功能。因此又被称为功能测试或基于规约的测试。在黑盒测试中,由于实际的软件开发通常缺乏形式化规格说明,测试数据生成一般依赖于人工选择;如果有形式化规格说明,则可以从形式化规格自动生成测试数据。白盒测试把被测对象看成一个打开的盒子,程序内部的逻辑结构和其他信息对测试人员都是公开的,考虑到系统的实现方式,包括编程风格、控制方法、源代码等,所以又被称为“结构测试"或是“基于代码的测试”。在白盒测试中,得益于程序分析与自动约束求解技术的不断发展和现代计算机日益增强的计算能力,自动测试生成技术又焕发出新的活动。

53/5<12345>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号