首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到20条相似文献,搜索用时 15 毫秒
1.
动态符号执行是近年来新兴的一种软件漏洞检测方法,它可以为目标程序的不同执行路径自动生成测试用例,从而获得较高的测试代码覆盖率。然而,程序的执行路径很多,且大部分路径都是漏洞无关的,通常那些包含危险函数调用的路径更有可能通向漏洞。提出一种基于静态分析的有导动态符号执行方法,并实现了一个工具原型SAGDSE。该方法通过静态分析识别目标程序中调用危险函数的指令地址,在动态符号执行过程中遇到这些指令地址时收集危险路径约束,再通过约束求解生成走危险路径的测试用例,这些测试用例将更可能触发程序漏洞。实验结果表明了该方法的有效性。  相似文献   

2.
基于符号执行的内核级Rootkit静态检测   总被引:7,自引:1,他引:7  
易宇  金然 《计算机工程与设计》2006,27(16):3064-3068
Rootkit是攻击者用来隐藏踪迹和保留访问权限的工具集.加载入系统内核的内核级Rootkit使得操作系统本身变得不可信任,造成极大安全隐患.构建了一个完整的通过静态分析检测内核级Rootkit的模型,构造了描述Rootkit行为的普遍适用的定义并证明了其充分必要性,采用符号执行法进行静态分析,利用污点传播机制,针对模型特点对分析过程进行优化.基于这个模型的内核级Rootkit检测具有高准确性和较好的前瞻性.  相似文献   

3.
陈平  王成耀 《微计算机信息》2007,23(24):189-190,120
本文给出了以抽象语法树为基础的软件静态分析工具的体系结构,介绍了该工具中各个模块的设计与实现方法,着重于规则库的设计,以及利用定义好的规则实现自动化的代码检测的过程。  相似文献   

4.
陈丰  余芸 《电子技术应用》2013,39(4):137-140
研究了常见的SQL注入检测和源代码静态分析扫描的原理,提出Java源代码SQL注入检测算法,该算法通过对Java源代码词法分析和语法分析、建立抽象语法树、定义规则、遍历语法树和跟踪等,检测Java源代码中可能的SQL注入路径,测试结果表明,算法检测效果良好,识别率高。  相似文献   

5.
6.
以Ada语言中的子程序规格说明为基础,阐明了静态分析器在软件开发环境中的作用和意义,介绍了分析器数据结构的构成及语法树的构造方法,并用2个实例对静态分析的过程作了说明.  相似文献   

7.
《软件》2016,(12):97-101
静态分析和符号执行是发现源代码缺陷和提高源代码质量的两种有效方式。然而,这两种技术都面临各自的问题,静态分析误报率较高和符号执行一直面临着路径爆炸难题。为了减少静态分析和符号执行的这些限制,本文构建了一个称为ABARZER-SE的工具,它是第一个基于GCC结合符号执行和静态分析的源代码检测工具。ABAZER-SE由两个阶段组成,第一阶段是通过符号执行获取可行性路径,第二阶段应用静态分析技术对可行性路径分析找到源代码中缺陷。实验结果表明该工具具有可行性、有效性和可扩展性。  相似文献   

8.
对非结构化的程序代码进行理解分析对代码理解能力不强的测试人员存在一定难度。为了减轻静态代码分析的难度,本文首先采用程序切片算法将程序进行预处理,利用过程蓝图对代码进行可视化操作形成程序的中间表示形式抽象语法树。然后对其构造和特点进行研究,提出抽象语法树的遍历算法。通过该算法得到程序的控制流图。最后,利用控制流图和控制树,对静态代码进行高效的控制流分析,监测这些代码是否满足安全性、可靠性等方面的指标,为检测和处理软件缺陷降低成本。  相似文献   

9.
10.
C++是一种非常流行的计算机编程语言,在使用的过程中容易出现内存泄漏问题,而该问题往往难以识别。给出了一种对C++内存泄漏问题进行分析的方法,该方法得到C++源代码的抽象语法树,从抽象语法树中提取程序控制流图,然后将类的构造函数、普通成员函数以及析构函数的程序控制流图相互连接形成新的程序控制流图,并设计算法对控制流图进行检测。最后通过一些内存泄漏的典型实例进行测试,实验表明本方法有效。  相似文献   

11.
精确的程序静态分析   总被引:9,自引:3,他引:9  
程序的静态分析是程序语言和编译领域的一个重要研究方向,已经被研究了很多年.近年来,它也引起形式方法和软件工程领域的重视,被用于程序测试和正确性验证.文中从程序的语法特征、所关心的数据类型和程序性质等方面比较了一些静态分析技术.着重描述基于路径的分析方法,特别是符号执行技术,讨论了程序路径可行性分析问题及其分类、复杂度.针对程序分析精度的一种量化指标,说明了其计算方法.  相似文献   

12.
要把静态分析技术真正应用于软件工程的实践中,程序中的不可到达路径依旧是一个巨大的障碍。在缺乏不可到达路径信息的情况下,数据流信息只能以一种非常保守的方式被利用,因而使进一步的工作,例如测试数据生成或者软件缺陷检测变得更加困难和低效。本文提出一种融合符号执行以及数据挖掘的混合型方法来检测程序中的不可到达路径,充分利用符号执行的精确性以及数据挖掘的高效性,这种方法被证明是有效并且实用的。  相似文献   

13.
目前提高软件可靠性的方法有3种:动态测试、静态分析和程序验证。动态测试的结果依赖于测试集的设计,误报率低,漏报率高,分析结果不稳定。程序验证可以对程序的各种性质进行完备的验证。但目前程序验证通常都需要手动证明,分析成本最高。而程序静态分析可以更早、更全面、较高效和低成本地检测到程序中的缺陷。其中符号执行技术是一种比较有应用前景的静态分析技术,可以很好地控制 精确度。针对符号执行可伸缩性差和容易产生路径爆炸的问题,在符号执行过程中利用形状分析技术实现自动推导循环不变式和构建函数行为规范,实现了一个较为实用的C程序分析工具。  相似文献   

14.
缓冲区溢出作为系统或程序自身存在的一种漏洞对系统或软件安全造成了潜在威胁,黑客可以轻易利用这一漏洞进行攻击,以达到控制系统或窃取秘密的目的。据统计,利用缓冲区溢出漏洞进行的攻击已经占到了互联网攻击总数的一半以上。文章在对缓冲区溢出原理进行分析的基础上,给出了缓冲区溢出的故障模型,并提出了基于静态分析的代码自动检测算法,为故障发现及预防奠定了基础。  相似文献   

15.
谢肖飞  李晓红  陈翔  孟国柱  刘杨 《软件学报》2019,30(10):3071-3089
软件测试是保障软件质量的常用方法,如何获得高覆盖率是测试中十分重要且具有挑战性的研究问题.模糊测试与符号执行作为两大主流测试技术已被广泛研究并应用到学术界与工业界中,这两种技术都具有一定的优缺点:模糊测试随机变异生成测试用例并动态执行程序,可以执行并覆盖到较深的分支,但其很难通过变异的方法生成覆盖到复杂条件分支的测试用例.而符号执行依赖约束求解器,可以生成覆盖复杂条件分支的测试用例,但在符号化执行过程中往往会出现状态爆炸问题,因此很难覆盖到较深的分支.有工作已经证明,将符号执行与模糊测试相结合可以获得比单独使用模糊测试或者符号执行更好的效果.分析符号执行与模糊测试的优缺点,提出了一种基于分支覆盖将两种方法结合的混合测试方法 Afleer,结合双方优点从而可以生成具有更高分支覆盖率的测试用例.具体来说,模糊测试(例如 AFL)为程序快速生成大量可以覆盖较深分支的测试用例,符号执行(例如 KLEE)基于模糊测试的覆盖信息进行搜索,仅为未覆盖到的分支生成测试用例.为了验证 Afleer 的有效性,选取标准程序集LAVA-M 以及实际项目 oSIP 作为评测对象,以漏洞检测能力以及覆盖能力作为评测指标.实验结果表明:(1)在漏洞检测能力上,Afleer 总共可以发现 755 个漏洞,而 AFL 仅发现 1 个;(2)在覆盖能力上,Afleer 在标准程序集上以及实际项目中都有不同程度的提升.其中,在 oSIP 中,Afleer 比 AFL 在分支覆盖率上提高 2.4 倍,在路径覆盖率上提升 6.1倍.除此之外,Afleer 在 oSIP 中还检测出一个新的漏洞.  相似文献   

16.
符号执行研究综述   总被引:1,自引:0,他引:1  
叶志斌  严波 《计算机科学》2018,45(Z6):28-35
符号执行作为一种重要的程序分析方法,可以为程序测试提供高覆盖率的测试用例,以触发深层的程序错误。首先,介绍了经典符号执行方法的原理;然后,阐述了基于符号执行发展形成的混合测试、执行生成测试和选择性符号执行方法,同时,对制约符号执行方法在程序分析中的主要因素进行了分析,并讨论了缓解这些问题和提高符号执行可行性的主要方法;随后,介绍了当前主流的符号执行分析工具,并比较分析了其优缺点;最后,总结并讨论了符号执行的未来发展方向。  相似文献   

17.
在本文中,我们提出BAEG,一个自动寻找二进制程序漏洞利用的系统.BAEG为发现的每一个漏洞产生一个控制流劫持的利用,因此保证了它所发现的漏洞都是安全相关并且可利用的.BAEG针对输入造成程序崩溃的情况进行分析,面临的挑战主要有两点:1)如何重现崩溃路径,获取崩溃状态;2)如何自动生成控制流劫持利用.对于第一点,本论文提出路径导向算法,将崩溃输入作为符号值,重现崩溃路径.对于第二点,我们总结多种控制流劫持的利用原理,建立对应的利用产生模型.此外,对于非法符号读、写操作,BAEG还可以让程序从崩溃点继续执行,探索程序深层次代码,检测崩溃路径逻辑深处是否还有利用点.  相似文献   

18.
软件测试可分为静态测试和动态测试。静态测试就是在不实际运行程序的情况下发现程序中蕴含的问题。以C++编程为例,可以发现在很多的程序中总是定义了大量的变量,但是程序并没有实际使用它们,这是一种非常不好的编程习惯,也是一种常见的故障模型。文中通过对该类问题进行分析,给出一种静态测试方法测试C++中定义未使用的变量;  相似文献   

19.
Java语言中数组越界故障的静态测试研究   总被引:1,自引:0,他引:1       下载免费PDF全文
面向具体故障的软件测试技术是当今一个研究热点。数组越界是Java程序设计中的常见故障,该类故障极易导致计算结果错误或系统崩溃。针对Java语言中常见数组越界故障进行了分析,并从面向具体故障的测试思想出发,建立了Java语言中数组越界的故障模型,结合静态测试的特点,给出了一种静态查找此类故障的方法。此方法已实现,并已应用于面向故障的软件测试系统中。  相似文献   

20.
设为首页 | 免责声明 | 关于勤云 | 加入收藏

Copyright©北京勤云科技发展有限公司  京ICP备09084417号