首页 >> >> 通信世界 >> 总第609期 >> 技术应用 >> 正文
 
软件静态安全检测技术研究
http://www.cww.net.cn   2013年8月8日 10:50    

安全性是软件质量的一个重要属性。软件安全性是软件在受到恶意攻击时仍提供所需功能的能力。多数软件的安全性问题主要源自于本身,其自身的漏洞往往被攻击者利用,从而成为软件安全的隐患。软件安全检测技术的主要作用就是检测软件中存在的安全问题,从而指导软件进行安全性能的改善。

安全性相关缺陷不同于一般的软件缺陷。一个很难发现的软件安全漏洞可能导致大量用户受到影响。安全性测试不同于传统测试类型最大的区别是它强调软件不应当做什么,而不是软件要做什么,例如未授权用户不能访问数据。

软件安全性测试刻不容缓

软件安全性测试可分为安全功能测试和安全漏洞测试两个方面。

安全功能测试基于软件的安全功能需求说明,测试软件的安全功能实现是否与安全需求一致,包括数据机密性、完整性、可用性、不可否认性、身份认证、授权、访问控制、审计跟踪、委托、隐私保护、安全管理等。

安全漏洞测试从攻击者的角度,以发现软件的安全漏洞为目的。安全漏洞是指系统在设计、实现、操作、管理上存在的可被利用的缺陷或弱点。漏洞被利用可能造成软件受到攻击,使软件进入不安全的状态,安全漏洞测试就是识别软件的安全漏洞。

目前测评中心的安全测试工作就是要发现中国移动业务支撑系统存在的安全漏洞,对于软件安全的检测,通常可以按照检测过程中是否需要执行程序的标准分为动态测试和静态测试两种,本文针对软件静态安全检测技术进行深入研究。

静态检测从分析开始

静态代码安全分析的第一步,是根据分析需求把程序源代码变换成易于分析处理的程序模型,这个过程用到了编译原理中的成熟技术。

● 词法分析:使用正则表达式匹配将源代码转换为等价的符号流。

● 语法分析:使用上下文无关语法将符号流规整为语法树,作为源代码逻辑结构的最直接的表现。

● 抽象语法分析:通过简化语法将语法树转换为包含更少节点和分支的抽象语法树,以方便后续处理。

● 语义分析:从抽象语法树建立符号表,为每个标识符关联类型信息。至此,已经具备了足够的信息来进行所谓的结构化分析。编译器通常将抽象语法树和符号表转化成易于优化的中间形式,然后送给后端生成平台相关的目标代码。安全分析工具可以建立更高阶的中间形式,或者直接在抽象语法树和符号表上进行后续步骤。

在分析模型建立后,就可以开始进行静态检测了。从早期的缓冲区溢出检测开始,十几年来出现了各种检测技术,早期静态检测主要指静态分析,随着形式化验证方法的引入,静态检测引入了程序抽象验证方法。

静态分析直接分析被测程序特征,寻找可能导致错误的异常。

规则检查 程序本身的安全性可由安全规则描述。程序本身存在一些编程规则,即一些通用的安全规则,也称之为漏洞模式,比如程序在root权限下要避免exec调用。规则检查方法将这些规则以特定语法描述,由规则处理器接收,并将其转换为分析器能够接受的内部表示,然后再将程序行为进行比对、检测。

类型推导 自动推导程序中变量和函数的类型,来判断变量和函数的访问是否符合类型规则。静态漏洞检测的类型推导由定型断言、推导规则和检查规则3个部分组成。定型断言定义变量的初始类型,推导规则提供了推论系统的规则集合,检查规则用于判定推论结果是否为“良行为”。

[1]  [2]  
关注通信世界网微信“cww-weixin”,赢TD手机!
来源:通信世界网-通信世界周刊   作 者:中国移动(深圳)有限公司 | 钟昌杰编 辑:于光媚
分享到:
       收藏   打印  论坛   推荐给朋友
关键字搜索:软件安全  
猜你还喜欢的内容
文章评论查看评论()
昵称:  验证码:
 
相关新闻
即时新闻
通信技术
最新方案
企业黄页
会议活动