一种基于静态分析技术的源代码安全检测模型

一种基于静态分析技术的源代码安全检测模型

ID:34375872

大小:253.93 KB

页数:7页

时间:2019-03-05

一种基于静态分析技术的源代码安全检测模型_第1页
一种基于静态分析技术的源代码安全检测模型_第2页
一种基于静态分析技术的源代码安全检测模型_第3页
一种基于静态分析技术的源代码安全检测模型_第4页
一种基于静态分析技术的源代码安全检测模型_第5页
资源描述:

《一种基于静态分析技术的源代码安全检测模型》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、http://www.paper.edu.cn1一种基于静态分析技术的源代码安全检测模型粱婕,张淼,徐国爱,杨义先北京邮电大学网络与交换技术国家重点实验室,北京(100876)E-mail:liangjie_bupt@yahoo.com.cn摘要:本文介绍了当前主流的静态代码分析技术,在分析讨论其优缺点基础上提出了一种新的静态代码检测模型。该模型结合了当前成熟的静态分析技术,并借鉴了编译器中数据流和控制流分析的思想,获取上下文关联的数据信息,从而更加准确地分析代码中存在的安全问题。关键词:数据流分析,控制

2、流分析,别名分析,静态代码分析,源代码检测1.引言随着社会信息化的不断加深,人们不得不开始面对日益突出的信息安全问题。研究表明,相当数量的安全问题都是由于软件自身存着的安全漏洞引起的。软件漏洞的产生,一方面可能是设计人员在架构阶段没有明确用户对安全性方面的需求,在设计上没有考虑安全性,开发人员使用有风险的库函数或者引用没有经过安全性测试的公共代码;另一方面,开发人员可能为了测试方便在程序中开后门,或者别有用心的植入恶意代码。攻击者利用这些漏洞绕过安全策略,以达到窃取信息的目的。检测软件安全漏洞,通常从两个

3、方面进行:动态分析与静态分析。在动态分析中,需要根据实际状况,设计多组极限测试数据,并实际的执行被测程序;静态分析则是扫描源程序,从中找出可能导致错误的结构异常,控制流异常及数据流异常。静态分析较动态而言,成本低,容易实现,能覆盖所有路径且不依赖于特定的运行环境。本文将对现有的静态分析技术展开分析讨论,并在此基础上给出一个新的检测模型。2.研究现状国内外在软件的安全性分析领域做了大量的研究,提出了一些可行的静态的安全性分析方法,并且构造了相应的软件安全性分析工具。目前静态的安全性分析方法可分为[23456

4、78]:模型检验,词法分析,语义分析等。这些检测算法各有侧重,并在现有的检测工具中加以运用,具有一定效果,但其实现的功能,局限性还是比较大的。例如ITS4会将所有使用的strcpy语句报告,认为不安全。这将直接导致误报率过高,影响代码审查的效率和积极性;基于模式的安全漏洞并不多,这将直接导致MOPS所能维护的规则库有限,并且只能检查某些特定类型的漏洞;BOON虽然引入了上下文的信息,但是由于没有精确处理控制分支的信息,仅根据数据流走向取并集,仍然存在一定程度的误报,且该方法针对缓冲区溢出和整数溢出,具有一

5、定的局限性。3.分析模型在这里,我们考虑将各个现有的成熟的静态代码分析技术结合,设计一个基于上下文信息关联的检测模型。1本课题得到教育部博士学科点专项基金项目(编号:20050013011)的资助。-1-http://www.paper.edu.cn3.1引入我们先来模拟一下人工分析的过程,为提炼模型作准备。下面以一个使用文件资源的代码段为示例:voidfun(){1:Filef=fopen(“c:\test.txt”,a+);2:Fclose(f);}以下是人工审查的过程。首先,若是需要检查文件资源泄

6、露,我们需要定位到文件句柄的打开部分,锁定风险APIfopen。其次,记录下该api返回的文件句柄,变量f。以便跟踪该句柄的使用情况。接着,我们发现在行号2,f作为参数,被APIfclose引用,而fclose恰好是跟fopen对应的API操作,表示文件句柄的关闭。故,在此,对于这个文件资源的检测完毕,结论,没有资源泄漏。根据以上分析,似乎只需要定位关键API,并跟踪相应的变量使用即可。进一步,考虑下面这段带有条件分支的代码段:Voidfun(){1:Filef=fopen(“c:\test.txt”,

7、a+);2:if(fRet){3:return;}4:fclose(f);}若是根据之前的原则分析,依然得出没有错误的结论,然而,可以看到,在行号3处,有一个return语句,这将直接导致函数退出,显然,在这个退出分支里,打开的文件句柄没有得到关闭,必然造成资源泄漏。反思一下我们的分析过程,显然,我们忽略了这么一个事实:fopen的操作是顺次必然执行的,但其对应的fclose操作则是受到if(fRet)语句控制,在其后的FALSE控制分支里执行。对于open操作,并不是所有的退出分支都有close操作,所

8、以导致了文件资源的泄漏。把对控制条件的处理引入分析:一定位关键APIfopen。二跟踪返回的句柄,变量f。三定位关键APIfclose对变量f的引用。四比较fopen与fclose是否处在同一逻辑分支。显然,扩充以后的分析过程,能很好的应对带逻辑分支的代码段。尽管实际工程中的代码远远要复杂得多,但大多情况不过是各种顺次控制逻辑的组合。正确的应用这种上下文分析技术,应该能够相对快速的分析代码中的漏洞,并确保一个较低的误报率。3.

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。