Chinaunix首页 | 论坛 | 博客
  • 博客访问: 203986
  • 博文数量: 75
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 758
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-04 17:19
个人简介

久久不能释怀!

文章分类

全部博文(75)

文章存档

2014年(31)

2013年(44)

我的朋友

分类: C/C++

2013-09-29 16:31:47

原文地址:

对于C/C++软件而言,静态测试越来越趋向软件安全功能测试。包括数据机密性、完整性、可用性、不可否认性、身份认证、授权、访问控制、审计跟踪、委托、隐私保护、安全管理等。

通常情况下,C/C++静态测试是把程序源代码变换成易于分析处理的程序模型。有4个分析模型:

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

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

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

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

在分析模型建立后,就可以开始进行静态测试。静态测试直接分析被测程序特征,寻找可能导致错误的异常。

C/C++静态测试技术目前的发展趋势是将静态测试的各种技术进行结合,以提高性能。结合方式有以下方法:

● 提供一个框架,使用不同检测技术对程序进行检测,获取大量检测结果之后进行分析。从误报率来说,使用多种技术的检测结果的交集来进行漏洞判断决策,可减少误报率。从漏报率来说,对于同一种漏洞,使用多种检测技术的结果的并集可以减少漏报率。

● 直接在检测技术上结合,通过技术的结合来得到新的方法,如在符号执行的过程中加入类型推导的技术,在变量模拟执行的过程中增加其类型特征的推导,可获取更高的漏洞检测率。

阅读(872) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~