首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到17条相似文献,搜索用时 78 毫秒
1.
牛伟纳  丁雪峰  刘智  张小松 《计算机科学》2013,40(10):119-121,138
软件漏洞是安全问题的根源之一,fuzzing(模糊测试)是目前漏洞发现的关键技术,但是它通过随机改变输入无法有效地构造出测试用例,也无法消除测试用例的冗余性.为了克服传统fuzzing测试的缺点、有效生成测试输入且无需分析输入格式,针对二进制程序设计并实现了基于符号执行的漏洞发现系统SEVE.将程序的输入符号化,利用动态插桩工具建立符号变量的传播关系;在分支语句处收集路径约束条件,最后用解析器求解之并将其作为新的测试用例.用mp3和pdf软件进行了实验,结果表明,该系统有效地提高了漏洞发现的效率与自动化程度.  相似文献   

2.
面向危险操作的动态符号执行方法   总被引:2,自引:0,他引:2  
王伟光  曾庆凯  孙浩 《软件学报》2016,27(5):1230-1245
针对缺陷检测的需求,提出了面向危险操作的动态符号执行方法.依据所关注的缺陷类型,定义危险操作及危险操作相关路径,通过计算覆盖不同上下文中危险操作的能力,协助动态符号执行选择高效初始输入,并利用危险操作相关信息引导测试流程.缺陷检测成为定位待测程序内危险操作以及对危险操作相关路径进行检测的过程.实现了面向Linux平台二进制可执行程序的原型系统CrashFinder,实验结果表明,该方法能够更快地发现更多缺陷.  相似文献   

3.
针对符号转换错误引起缓冲区溢出的这类缺陷提出了一种面向二进制程序整型符号转换缺陷检测方法。以二进制插桩框架为基础,利用类型推断方法识别整型变量的符号类型信息,得到内存相关库函数中为冲突类型的参数的集合,并将其作为潜在的整型符号转换缺陷候选集。在中间代码层面插入检测代码做运行时检测,最终确定真正的整型符号转换缺陷。原型系统Sconvcheck的实验结果表明:该方法可以有效地检测出程序中的整型符号转换缺陷,并准确地定位错误发生的位置,而且误报率较低。  相似文献   

4.
动态符号执行是一种有效的软件测试方法,但由于受到约束求解器求解能力的限制,在面对较为复杂的程序和路径条件时,动态符号执行的路径覆盖率还有待提升。针对上述问题,提出了一种遗传算法辅助的动态符号执行测试方法,并基于此方法实现了原型工具JDart-Ga。该方法结合遗传算法的优势,生成约束求解器无法求解的约束条件对应测试输入,从而提升动态符号执行的路径覆盖率。实验结果表明,在测试存在动态符号执行无法覆盖路径的3个实验对象时,所提出方法的路径覆盖率与JDart相比分别提升了16%至23%。  相似文献   

5.
驱动程序是操作系统的重要组成部分。驱动程序运行于内核态,其可靠性对于操作系统的安全可靠非常关键。针对Linux驱动程序,研究基于符号执行的驱动程序缺陷自动检测方法。提出了基于性质制导符号执行的Linux驱动程序缺陷检测框架,以及多性质制导的符号执行方法,支持针对多个缺陷性质的快速缺陷检测。在LLVM和KLEE的基础上实现了提出的框架和方法,并在实际的Linux驱动程序上开展了初步实验。实验效果表明了所提方法和检测框架的有效性和高效性。  相似文献   

6.
对现有二进制程序安全缺陷静态分析方法进行了综述和分析,提出了整个程序分析过程中的关键问题以及二进制程序安全分析的主要研究方向.通过对二进制程序缺陷静态分析流程的总结,发现二进制程序信息恢复是整个分析过程的关键,构造内容丰富的、通用的中间表示是二进制程序缺陷分析的重要研究方向.  相似文献   

7.
网络程序由运行在不同物理节点上的服务器端和客户端组成。与普通二进制程序不同,网络程序在运行过程中,其服务器端和客户端会进行实时的通信和数据传输,二者之间的交互过程会对彼此的程序运行产生影响,因此,仅对服务器端程序进行分析常会导致漏洞的漏报或误报。首先以对网络程序进行自动化漏洞检测为目标,基于软件虚拟机的动态二进制翻译机制和选择性符号执行技术,对符号化数据的引入、符号执行过程中程序双端的状态同步技术进行了研究。然后通过重点函数挂钩的方式监控程序执行过程,确定了双端状态同步的判定模型,构建了一个自动化的网络程序漏洞检测系统。通过实验验证了该系统在实际网络程序漏洞发现过程中的有效性,并针对商业软件中存在的CVE漏洞进行了测试性检测,进一步证明了该系统的可推广性。  相似文献   

8.
符号执行是一种实用的验证程序中是否包含某类错误的技术,具有0误报率的优点,但是主流的执行工具并不支持分析多线程程序。本文对已有的多线程程序的符号执行工具进行分析,发现存在的问题有:1)有些工具性能好,但是不支持外部库,实用性很差;2)有些工具支持外部库函数,但是版本老,难以更新和维护,无法检查减法溢出、乘法溢出、移位溢出等基本类型的bug。本文基于最主流的符号执行工具KLEE设计并实现支持多线程程序的符号执行工具——MTSE(Multi-Thread Symbolic Execution)。MTSE支持libc和libc++库,并且相对于已有的同类工作Cloud9,MTSE可以多查找出约50%的程序缺陷,并且指令覆盖率和分支覆盖率上均有约30%的提升。  相似文献   

9.
提出动态二进制翻译的两种优化方案:基本块和热路径;分析了从代码中抽取值得优化部分的详细过程;同时也给出针对这两种方案的一些优化方法.最后简单介绍了当前一些动态二进制翻译系统所采用的优化技术.  相似文献   

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

11.
符号执行和约束求解相结合的软件测试方法采用深度优先搜索的路径调度算法会造成测试路径聚居性问题,实际软件中存在路径爆炸,使得采用该算法的测试语句覆盖率低下。提出一种新的PSHC路径调度算法。先将路径分为前缀和后缀两部分,每次测试总是试图寻找这样的路径,该路径与已存在的路径具有最短的相同前缀,并且包含尽可能多的尚未被访问过的基本块作为其后缀。基于Phoenix漏洞发掘工具的实验结果表明,PSHC算法可以迅速提高测试的语句覆盖率到100%,有效解决由于深度优先搜索的路径聚居性导致的测试代码的局部性问题,PSHC算法产生的路径数与循环深度无关,软件规模越大,该算法的表现越好。  相似文献   

12.
由于区块链不可窜改的特性,部署到区块链上的智能合约不可更改.为了提高合约的安全性,防止智能合约出现整数溢出、短地址攻击、伪随机等问题,在合约部署之前需对合约进行漏洞检测.针对智能合约的整数溢出漏洞利用符号执行进行分析研究,对现有符号执行方法进行调查发现检测速度较慢,从而提出一种自底向上求解约束的改进符号执行方法,并结合深度优先与广度优先进行路径选择从而提高符号执行的代码覆盖率.实验结果表明,改进符号执行在选取的100份含溢出漏洞的智能合约中检测正确率达84%,平均检测效率提高了20%,在中等规模智能合约中检测效率提升显著,检测结果正确率较高.  相似文献   

13.
Symbolic execution is widely used in many code analysis, testing, and verification tools. As symbolic execution exhaustively explores all feasible paths, it is quite time consuming. To handle the problem, researchers have paralleled existing symbolic execution tools (e.g., KLEE). In particular, Cloud9 is a widely used paralleled symbolic execution tool, and researchers have used the tool to analyze real code. However, researchers criticize that tools such as Cloud9 still cannot analyze large scale code. In this paper, we conduct a field study on Cloud9, in which we use KLEE and Cloud9 to analyze benchmarks in C. Our results confirm the criticism. Based on the results, we identify three bottlenecks that hinder the performance of Cloud9: the communication time gap, the job transfer policy, and the cache management of the solved constraints. To handle these problems, we tune the communication time gap with better parameters, modify the job transfer policy, and implement an approach for cache management of solved constraints. We conduct two evaluations on our benchmarks and a real application to understand our improvements. Our results show that our tuned Cloud9 reduces the execution time significantly, both on our benchmarks and the real application. Furthermore, our evaluation results show that our tuning techniques improve the effectiveness on all the devices, and the improvement can be achieved upto five times, depending upon a tuning value of our approach and the behaviour of program under test.  相似文献   

14.
代码混淆可有效对抗逆向工程等各类MATE攻击威胁,作为攻击缓和性质的内生安全技术发展较为成熟,对代码混淆效果的合理度量具有重要价值。代码混淆度量研究相对较少,针对代码混淆弹性的度量方法与泛化性、实用性度量方法相对缺乏。符号执行技术广泛应用于反混淆攻击,其生成遍历程序完整路径输入测试集的难度可为混淆弹性度量提供参考,然而基于程序嵌套结构的对抗技术可显著降低符号执行效率,增加其混淆弹性参考误差。针对上述问题,提出结合符号执行技术和N-scope复杂度的代码混淆度量方法,该方法首先基于程序符号执行时间定义程序混淆弹性;其次提出适配符号执行的N-scope复杂度,定义程序混淆强度同时增强符号执行对多层嵌套结构程序的混淆弹性度量鲁棒性;进而提出结合动态分析与静态分析的混淆效果关联性分析,通过对程序进行符号执行与控制流图提取量化混淆效果。面向C程序构建了该度量方法的一种实现框架并验证,实验对3个公开程序集及其混淆后程序集约4 000个程序进行混淆效果度量,度量结果表明,提出的度量方法在较好地刻画混淆效果的同时拥有一定的泛化能力与实用价值;模拟真实混淆应用场景给出了该度量方法的使用样例,为混淆技术使...  相似文献   

15.
With the advent of advanced program analysis and constraint solving techniques,several test generation tools use variants of symbolic execution.Symbolic techniques have been shown to be very effective in path-based test generation;however,they fail to scale to large programs due to the exponential number of paths to be explored.In this paper,we focus on tackling this path explosion problem and propose search strategies to achieve quick branch coverage under symbolic execution,while exploring only a fraction...  相似文献   

16.
针对Miasm反混淆框架反混淆后的结果是一张图片,无法反编译恢复程序源码的问题,在对底层虚拟机混淆器(OLLVM)混淆策略和Miasm反混淆思路进行深入学习研究后,提出并实现了一种基于符号执行的OLLVM通用型自动化反混淆框架。首先,利用基本块识别算法找到混淆程序中有用的基本块和无用块;其次,采用符号执行技术确定各个有用块之间的拓扑关系;然后,直接对基本块汇编代码进行指令修复;最后,得到一个反混淆后的可执行文件。实验结果表明,该框架在保证尽量少的反混淆用时前提下,反混淆后的程序与未混淆源程序的代码相似度为96.7%,能非常好地实现x86架构下C/C++文件的OLLVM反混淆。  相似文献   

17.
Measuring execution time is one of the most used performance evaluation techniques in computer science research. Inaccurate measurements cannot be used for a fair performance comparison between programs. Despite the prevalence of its use, the intrinsic variability in the time measurement makes it hard to obtain repeatable and accurate timing results of a program running on an operating system. We propose a novel execution time measurement protocol (termed EMP) for measuring the execution time of a compute‐bound program on Linux, while minimizing that measurement's variability. During the development of execution time measurement protocol, we identified several factors that disturb execution time measurement. We introduce successive refinements to the protocol by addressing each of these factors, in concert, reducing variability by more than an order of magnitude. We also introduce a new visualization technique, what we term ‘dual‐execution scatter plot’ that highlights infrequent, long‐running daemons, differentiating them from frequent and/or short‐running daemons. Our empirical results show that the proposed protocol successfully achieves three major aspects—precision, accuracy, and scalability—in execution time measurement that can work for open‐source and proprietary software. Copyright © 2017 John Wiley & Sons, Ltd.  相似文献   

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

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