展开

软件开发职称论文软件安全漏洞挖掘技术创新的方式(2)

发布时间:2014-07-15   |  所属分类:软件开发:论文发表  |  浏览:  |  加入收藏

  这里首先分析环境错误注入法,它主要是故意将人为错误注入到软件运行环境中,然后利用程序的反应进行验证。一般情况下,编程的过程中程序员总是会假定其程序能够正常地运行于环境中,如果这种假定成立,那么其程序自然会正确的运行。不过由于程序运行的环境并不是独立的,而是会受到很多主体的影响,比如一些恶意用户之类的,这会使程序员假定出现错误,也正因为此,环境中的错误会给程序造成多大地的影响,是判断程序健壮性的一个重要标准,而环境错误注入法正是对软件系统可靠性及容错性进行判断的有效方法。

  至于数据流分析法,它在实现检测的时候需要数据流、执行流等信息,主要的原理是对各种参数、序列以及返回值等进行跟踪,然后经过对比分析,对系统是否存在安全漏洞进行判断。

  3.3 动态检测以及静态分析的对比

  客观来说,静态分析以及动态检测都是我们经常使用的检测方法,其中,静态分析由于在运行过程中的数据比较缺乏,因此难以实现动态测试细粒度的安全评估,无法对所有的安全漏洞都进行确定,所以存在很多不足之处,不过其优势在于比较容易在开发过程中集成。至于动态检测,虽然其可信性以及精确性非常高,但是对于源代码的需求也非常高,而且不能够对漏洞及漏洞原因进行准确的定位,加之不容易保证代码覆盖率,因此它也存在一定的不足。通过表1我们可以比较系统的对二者进行对比。

  4 软件安全漏洞挖掘流程分析

  通过上文的分析我们可以看出,每种检测方法都是存在缺陷的,我们要想真正地做好漏洞挖掘工作,就必须要在漏洞挖掘的不同环节使用不同的检测方法,并根据具体的情况采取相应的策略及方法,这样才能将各种方法的优势发挥出来,并弥补其存在的不足。一般来说,漏洞挖掘的流程可以分为几个环节。

  首先,初始化,这主要是将软件类型分类,将开源和非开源软件所使用的静态分析方法确定下来。

  其次,反汇编,这主要是载入需要分析的程序,然后通过反汇编操作,实现对二进制代码的反汇编,并确定代码中哪些属于可执行指令以及哪些属于数据。

  第三,过程抽象,能够识别可执行指令之后,可以把其分为表示函数或者过程的组。

  第四,特征模式扫描,对于开软软件,我们通过编译技术在编译期间或者代码扫描期间确定一些信息,根据这些信息检查漏洞模型。至于非开源软件的静态分析,则可以通过之下而上的分析方法对调用二进制文件的库函数等进行检查,得到漏洞验证代码。

  第五,验证漏洞特性,这主要是比较漏洞特征库以及疑似漏洞验证代码,并对其中是否含有恶意行为进行判断,得到检测报告。

  第六,注入错误环境,对需要注入的错误环境数据进行构造,并利用其干扰程序运行。

  第七,动态检测,系统自动地对程序所有函数序列以及特定函数序列进行分析,并对可能存在的漏洞数目进行估算,得到检测报告。

  第八,检测评估,根据所得报告信息,确认它们共同提出的疑似漏洞,并对其他疑似漏洞进行下一步分析。

  最后,进入下一轮静态及动态检测环节。

  5 软件安全漏洞挖掘技术的发展方向

  首先,测试平台的可扩展性以及通用性将越来越强,这是因为伴随着测试对象的增多,一个可扩展性及通用性比较强的平台对这一技术的发展有非常重要的提升效果。具体来说,这种平台要具备以下几个方面的特点:首先,能够产生多种格式并最好是有效的畸形测试数据;具有可定制以及独立的数据产生变异功能;具有可操作跟踪调试功能;能够对多模块之间的自动化运行进行很好的协调。

  其次,以fuzzing测试技术为例,由于在fuzzing测试过程中,很大一部分时间都用在输入数据格式、程序状态转换的人工分析上。因此提高知识获取自动化程度对于提升测试效率非常有利,是未来的发展方向。

  第三,多维测试用例生成技术。当前很多测试用例生成技术都是一维的,这容易使很多安全漏洞不能够被有效地检测出来。而如果使用多为测试用例生成技术虽然会拓宽其测试范围,但也容易导致状态爆炸问题,因此,多维测试用例生成技术的研究是未来的一个重点。同样,智能测试用例生成技术也是未来的一个重点。

  第四,测试效果评估技术,当前的很多测试使用代码覆盖率对测试效果进行评估,这存在着很大的不合理性。因此未来测试效果将从程序状态的覆盖率、测试数据的有效性以及输入边界测试的充分性等多个方面对测试效果进行评估。

  6 结束语

  软件安全漏洞挖掘技术的研究是一个很宽泛的研究,本文限于篇幅,很多地方难以涉及并深入。因此,在我们的日常工作中应加强这方面的探索和研究,只有不断提升我们的技术水平,才能真正为信息数据的安全起到保障作用。

转载请注明来自:http://www.uuqikan.com/ruanjiankaifalw/7754.html


上一篇:软件开发论文发表简述网络数据信息管理软件中间层设计
下一篇:软件开发论文范文浅谈基于Web的C语言技术开发