加入后院 登录
工大后院 返回首页

天涯飘雪的个人空间 https://www.gdutbbs.com/?125665 [收藏] [复制] [分享] [RSS]

日志

基于源代码的安全漏洞测试技术

已有 318 次阅读2010-5-18 15:37 |个人分类:测试技术|

  随着软件技术和网络技术在各个行业的广泛应用,以及以Linux操作系统为标志的自由软件的大量存在和应用,人们面临的软件安全问题也日渐增多。软件安全,特别是军事领域软件的安全已越来越受到人们的关注和重视。研究表明,相当数量的安全问题都是由于软件自身存着的安全漏洞引起的。恶意的攻击者可以利用这些安全漏洞提升权限,访问未授权资源,甚至破坏敏感数据,从而造成重大损失。这使得存在于计算机系统中的软件安全漏洞成为信息安全的一个核心问题。

  国内外在软件的安全性分析领域做了大量的研究工作,提出了一些可行的静态的安全性分析方法,并且构造了相应的软件安全性漏洞的静态检测工具,即直接分析软件的源代码,通过词法分析、语法分析和静态语义分析,检测软件中潜在的安全漏洞。现有的静态的安全漏洞分析方法有基于形式化验证的定理证明、模型检验、类型推断、基于词法分析的安全性扫描、基于语法和简单语义分析的安全性检查以及信息流验证和检测方法等。

  (1)模型检验

  模型检验的基础是有限状态自动机。它列举一个系统能够处于的所有可能状态,检查每个状态是否违反由用户制定的规则和条件,并根据分析结果报告导致不合法状态的步骤。模型检验的理论基础是时序逻辑和自动机理论。它将所要检验的属性表示成时序逻辑公式,系统表示成有限状态自动机,在遍历有限状态自动机时,检查自动机所有状态是否满足所给属性。

  模型检验能够发现程序中存在复杂语义上的错误,从而准确发现程序中潜在的安全性漏洞,但现存的模型检验工具普遍分析源程序的形式化的表示(数学描述),而不是以源程序作为输入,如需要源程序的数学模型.通常可以通过程序分析(数据流分析,控制流分析,程序切片工具)来自动完成源程序的模型的生成。程序切片提取程序的精简了的模型,其中程序分析是基础,除了语法分析之外,更需要涉及语义的分析,包括控制流分析和数据流分析。

  (2)类型推断

  程序语言的类型系统包括一种定义类型的机制,有关类型等价、类型相容和类型推理的规则。在将运算符作用于运算对象、执行赋值,或者把实际参数传递给子程序时,都存在着类型是否合适的问题。类型推断是一个处理过程,其目的是保证每个操作都是针对一组数目正确、类型合适的对象进行,以保证操作的有效性。

  类型推断可以检查类型错误,选择合适的操作,根据情况确定必要的类型转换。类型推断方法具有简单、高效的特点,非常适合软件安全漏洞的快速检测。采用类型推断方法检测的安全漏洞主要有C程序中的格式化字符串漏洞、操作系统内核中的权限检查以及操作系统内核中不安全的指针使用等。

  (3)词法扫描

  基于词法分析的安全性扫描。对源代码只进行词法分析。通过静态扫描源代码找出潜在的安全漏洞,一旦发现就给出警告信息.它的基本方法是将一个或多个源代码文件作为输入,并将每个文件分解为词法记号流,比较记号流中的标识符和预先定义的安全性漏洞字典.例如:一旦发现C源程序中存在strcpy,、strcat等字符串操作函数即认为存在缓冲区溢出这种安全性漏洞,因为这些函数可能引起缓冲区溢出,此时的安全性漏洞字典包含strcpy,、strcat等。

  (4)简单语义分析

  基于语法和简单语义分析的安全性检查的工作原理非常类似于编译器系统,它以语法分析和语义规则为基础,同时加入简单的控制流分析和数据流分析。因此这种方法具有较高的分析效率和可扩展性,并且可以通过向程序中加入面向对象程序切片中的数据流分析注释信息的方式发现软件中广泛存在的安全性漏洞,如程序中出现机率最多的内存访问漏洞,包括存储区的非法使用、空指针的脱引用、缓冲区溢出等等。同时它可适用于对大规模程序的分析。

  (5)信息流分析

  长期以来,特别是随着网络技术的发展,计算机系统中的信息安全一直倍受关注,主流方法是基于类型推理的信息流验证和检测。信息流验证和检测方法通过建立安全信息流验证的格模型来提出了一种验证机制来确保程序中信息流的安全性。该方法为信息指定一个集合的“安全类”,并用“流关系”定义安全类之间允许的信息流,将程序中每个存贮对象绑定到特定的安全类。当一个操作(或者一系列的操作)使用某些对象(如X)的值,获得其他对象(如Y)的值,则引起从X到Y的信息流。当且仅当给定的流策略中X的安全类可以流向Y的安全类,从X到Y的信息流是允许的。

  (6)数据流分析

  数据流分析是一项编译时使用的技术,它能从程序代码中收集程序的语义信息并通过代数的方法在编译时确定变量的定义和使用。数据流分析被用于解决编译优化、程序验证、调试、测试、并行、向量化和串行编程环境等问题。数据流分析是通过对变量构造定义一引用对来实现的。数据流分析在安全检测中有着广泛的用途。应用数据流分析技术,可以检测C/C++程序中的多种安全漏洞,例如数组越界漏洞等。

  基于源代码的安全漏洞测试是保证软件安全的一个重要方法,它与动态测试的检测方法互为补充。目前,根据不同的安全漏洞、编程语言、目标软件和应用需求,已经形成了很多安全漏洞测试工具,如FlawFinder,ITS4,Rats,Splint、CQual、BOON,MOPS等。随着由软件安全漏洞引起的信息安全问题日益突出,人们越来越重视软件安全测试的重要性,这种需求将持续推动基于源代码的安全漏洞测试技术的发展。

转自格志软件测试网站

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 加入后院

Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2026-3-21 11:32

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

返回顶部