本文介绍了当前主流的静态代码分析技术,在分析讨论其优缺点基础上提出了一种新的静态代码检测模型。该模型结合了当前成熟的静态分析技术,并借鉴了编译器中数据流和控制流分析的思想,获取上下文关联的数据信息,从而更加准确地分析代码中存在的安全问题。
一种基于静态分析技术的源代码安全检测模型1
粱婕,张淼,徐国爱,杨义先
北京邮电大学网络与交换技术国家重点实验室,北京(100876)
E-mail:
摘 要:本文介绍了当前主流的静态代码分析技术,在分析讨论其优缺点基础上提出了一种
新的静态代码检测模型。该模型结合了当前成熟的静态分析技术,并借鉴了编译器中数据流
和控制流分析的思想,获取上下文关联的数据信息,从而更加准确地分析代码中存在的安全
问题。
关键词:数据流分析,控制流分析,别名分析,静态代码分析,源代码检测
1. 引言
随着社会信息化的不断加深,人们不得不开始面对日益突出的信息安全问题。研究表明,
相当数量的安全问题都是由于软件自身存着的安全漏洞引起的。软件漏洞的产生,一方面可
能是设计人员在架构阶段没有明确用户对安全性方面的需求,在设计上没有考虑安全性,开
发人员使用有风险的库函数或者引用没有经过安全性测试的公共代码;另一方面,开发人员
可能为了测试方便在程序中开后门,或者别有用心的植入恶意代码。攻击者利用这些漏洞绕
过安全策略,以达到窃取信息的目的。
检测软件安全漏洞,通常从两个方面进行:动态分析与静态分析。在动态分析中,需要
根据实际状况,设计多组极限测试数据,并实际的执行被测程序;静态分析则是扫描源程序,
从中找出可能导致错误的结构异常,控制流异常及数据流异常。静态分析较动态而言,成本
低,容易实现,能覆盖所有路径且不依赖于特定的运行环境。
本文将对现有的静态分析技术展开分析讨论,并在此基础上给出一个新的检测模型。
2. 研究现状
国内外在软件的安全性分析领域做了大量的研究,提出了一些可行的静态的安全性分析
方法,并且构造了相应的软件安全性分析工具。
目前静态的安全性分析方法可分为[2 3 4 5 6 7 8]:模型检验,词法分析,语义分析等。
这些检测算法各有侧重,并在现有的检测工具中加以运用,具有一定效果,但其实现的
功能,局限性还是比较大的。例如ITS4会将所有使用的strcpy语句报告,认为不安全。这
将直接导致误报率过高, 影响代码审查的效率和积极性;基于模式的安全漏洞并不多,这将
直接导致MOPS所能维护的规则库有限,并且只能检查某些特定类型的漏洞;BOON虽然
引入了上下文的信息,但是由于没有精确处理控制分支的信息,仅根据数据流走向取并集,
仍然存在一定程度的误报,且该方法针对缓冲区溢出和整数溢出,具有一定的局限性。
3. 分析模型
在这里,我们考虑将各个现有的成熟的静态代码分析技术结合,设计一个基于上下文信
息关联的检测模型。
1 本课题得到教育部博士学科点专项基金项目(编号:20050013011)的资助。
息安全 中心 ,北京 107)086 摘要 :介绍 了 当前主流 的静 态代码 分析技 术, 分析讨论 其优缺 点的基础上提 出 了一种新 的静 态代 码检 测模 在 ...
基于静态检测工具的源代码安全缺陷检测研究_专业资料。针对已有的使用单个静态... 一种基于代码静态分析的... 18人阅读 7页 2.00 基于错误模式和模型...
静态源代码安全检测工具比较_IT/计算机_专业资料。流行的源代码安全检查、分析...现在白盒测试中源代码扫描越来越成为一种流行的技术, 使用源代码扫描产品对软件...
基于静态分析的Java源代码后门检测技术研究_专业资料。Web工程中存在的后门给网站安全带来极大风险,针对日益猖獗的后门攻击,文章提出了一种基于静态分析的后门检测技术...
一种基于静态分析技术的源... 7页 免费 基于静态分析技术的源代码... 3页...关键词 : 静态分析; 模型检验; 漏洞挖掘; 软件安全 中图分类号 :TP393.08 ...
基于数据融合的源代码静态分析漏洞检测技术基于数据融合的源代码静态分析漏洞检测...好坏有两个重要指标: (1)漏报率(false negatives):程序中含有安全性问题但 ...
基于数据融合的源代码静态分析漏洞检测技术_专业资料。针对目前现有静态分析方法存在的漏报率和误报率较高的问题,提出一种基于数据融合的源代码静态分析漏洞检测技术....
一种基于代码静态分析的缓冲区溢出检测算法 缓冲区溢出目前已成为最常见的软件安全漏洞之一,从源代码形式来看,常见的缓冲区溢出漏洞主要有两种类型:数据拷贝和格式化...
软件源代码安全缺陷检测技术研究进展综述 摘要:软件...设计和实现了一个可扩展的源代码静态分析工具平台,...层次的建模信息, 通过自动机与模型合成技术 来构建...
基于故障模型的代码静态测试技术具有测试效率高、对逻辑复杂故障测试效果好等特点。鉴于此,本文采取一种特殊的静态分析技术来实现对代码的测试。首先讨论传统软件测试...
我要评论