共查询到19条相似文献,搜索用时 78 毫秒
1.
针对符号执行分析方法路径资源消耗过大的问题,提出执行路径建模进程化的过程内分析优化方法。结合基于惰性初始化的对象建模方法,以Phoenix编译器中间表示层的代码作为直接分析对象,实现一个检测C代码漏洞的工具原型。使用该工具验证了Openssl和Apache软件的已知漏洞代码,并在wget的1.11.4版本中发现一个“拒绝服务”漏洞。 相似文献
2.
电力信息系统软件代码的自身安全对整个电力信息系统的安全性、稳定性以及可靠性有着举足轻重的影响。为了提高电力信息系统软件代码的安全水平,设计并实现了一套代码漏洞静态检测系统。该系统以代码静态分析技术为基础,支持漏洞检测规则定制、漏洞检测算法与检测引擎扩展以及多线程技术,并通过Java语言编程实现。系统测试结果表明,该系统能够准确、有效地检测出测试程序中的安全漏洞,验证了系统的有效性。 相似文献
3.
当前漏洞检测技术可以实现对小规模程序的快速检测,但对大型或路径条件复杂的程序进行检测时其效率低下.为实现复杂路径条件下的漏洞快速检测,文中提出了一种复杂路径条件下的漏洞检测技术SymFuzz.SymFuzz将导向式模糊测试技术与选择符号执行技术相结合,通过导向式模糊测试技术对程序路径进行过滤,利用选择符号执行技术对可能... 相似文献
4.
Return-to-dl-resolve是一种可突破复杂防护机制的通用漏洞利用技术,目前主要以手工方式实现,研究人员需要深入分析并理解ELF动态链接原理,泄露并解析任意库函数的地址,拼装攻击载荷,效率非常低。文中提出了一种基于符号执行的Return-to-dl-resolve自动化实现方法,该方法为ELF可执行文件提供符号执行环境,对程序崩溃点的符号状态进行约束,通过约束求解器对约束进行求解,实现了Return-to-dl-resolve利用代码自动生成系统R2dlAEG。实验结果表明,R2dlAEG可快速构造利用代码,并能够在NX和ASLR防护机制同时开启的条件下劫持程序的控制流。 相似文献
5.
动态符号执行是近年来新兴的一种软件漏洞检测方法,它可以为目标程序的不同执行路径自动生成测试用例,从而获得较高的测试代码覆盖率。然而,程序的执行路径很多,且大部分路径都是漏洞无关的,通常那些包含危险函数调用的路径更有可能通向漏洞。提出一种基于静态分析的有导动态符号执行方法,并实现了一个工具原型SAGDSE。该方法通过静态分析识别目标程序中调用危险函数的指令地址,在动态符号执行过程中遇到这些指令地址时收集危险路径约束,再通过约束求解生成走危险路径的测试用例,这些测试用例将更可能触发程序漏洞。实验结果表明了该方法的有效性。 相似文献
6.
代码复用是重要的软件复用方式之一,复用者需要理解软件代码实现的功能方能有效实施软件复用。基于主题建模技术的程序理解方法逐渐受到研究人员的重视,它能够帮助软件开发者和使用者更好地理解软件的功能。目前,基于主题建模技术的程序理解方法一般欠缺对挖掘出的Topic的语义分析,为此提出的基于代码静态分析和LDA技术的代码功能挖掘(Code Function Mining,CFM)方法可作为对这类方法的补充。CFM是一套以代码为研究对象的挖掘、筛选、组织和描述主题(Topic)的方法,该方法能够生成带描述的功能型Topic的层次结构,以供使用者更清晰和方便地浏览、学习软件的功能。功能型Topic的描述能够帮助复用者理解代码功能,其层次结构能够让复用者从不同抽象层次理解代码功能。CFM方法包括4个部分:挖掘Topic、筛选Topic、组织Topic、描述Topic。以CFM方法为基础,设计并实现了一个CFM工具。CFM工具能够分析用户提交的代码,通过Web页面向用户展示带描述的功能型Topic的层次结构。最后,对CFM方法中的几个关键算法进行实验分析,验证了CFM方法的有效性。 相似文献
7.
静态漏洞检测通常只针对文本进行检测,执行效率高但是易产生误报。针对该问题,结合神经网络技术,提出一种基于代码相似性的漏洞检测方法。通过对程序源代码进行敏感函数定位、程序切片和变量替换等数据预处理操作,获取训练所用数据。构建基于Bi-LSTM的相似性判别模型,设定漏洞模板数据库,将待测代码与漏洞模板作比对以判别其是否存在漏洞。实验结果表明,该方法的准确率可达88.1%,误报率低至4.7%。 相似文献
8.
为了查找和发现软件源代码中的漏洞和薄弱环节,进一步提高软件的质量,在深入研究代码分析技术原理的基础上,提出了代码分析技术的应用模式,从内存管理、数组越界、并发缺陷以及空指针引用或异常等多个角度进行了探讨分析,给出具体实例对代码分析技术在解决具体问题中的重要性进行论证。最后给出了代码分析技术用于检测软件缺陷的主要步骤。该研究对软件源代码的测试工作具有一定的理论价值和实际意义。 相似文献
10.
基于代码克隆检测技术进行软件脆弱性检测,是软件脆弱性静态分析中的一个重要方向.目前,已有软件脆弱性检测工具在面向大规模代码集的脆弱性检测方面存在不足,且缺乏针对操作系统脆弱性的优化.为此,基于代码克隆检测技术,提出了一种操作系统脆弱性检测方法.首先在一般的"代码表征—提取特征—特征比对"检测流程的基础上,加入了基于操作系统软件包类型和函数代码规模的预筛选机制,在进行代码表征之前排除大部分无关代码.其次选择函数基本信息、符号序列和控制流路径三个角度提取代码特征,逐级比较脆弱代码和待测代码的相似度.最后从公开脆弱性数据库获取脆弱样本,对典型开源操作系统进行了实验,结果显示预筛选能够有效缩减实验对象的代码规模,而检测结果的平均精确度达到了84%. 相似文献
11.
为弥补软件漏洞挖掘领域的不足,文章介绍了一种基于源代码信息流分析的静态漏洞挖掘方法,通过对源代码中函数的数据输入点进行信息流分析,观察其流向,在敏感函数调用点进行分析判断,最终确定是否存在漏洞。 相似文献
12.
设计并实现一种基于符号化执行的Fuzzing测试方法。通过代码插装,在程序执行过程中收集路径约束条件,依据一定的路径遍历算法生成新路径约束条件并进行求解,构造可以引导程序向新路径执行的输入测试数据。提出一种改进的污点分析机制,对路径约束条件进行简化,提高了代码覆盖率和漏洞检测的效率。 相似文献
13.
Android手机在全球占有很大的市场份额,基于Android衍生的第三方系统也为数不少.针对Android系统重大安全问题频发的现状,提出一种使用Clang编译前端对Android源码进行静态分析的方法.该方法从已公布的CVE漏洞中提取规则和模型,通过改进的Clang编译前端,对Android源码进行静态分析,从而检测出有潜在安全风险的代码片段.在对Android源码进行污点分析时,调用新加入的stp约束求解器,通过符号执行,对敏感数据进行污点标记,并对敏感函数、敏感操作、敏感规则进行污点分析,如果存在潜在的安全隐患,则进行报告.经过实验分析,该方法可以找出Android源代码中存在的同类型有安全风险的代码片段,可以检出libstagefright模块5个高危CVE漏洞. 相似文献
14.
Previously published methods for estimation of the worst-case execution time on high-performance processors with complex pipelines and multi-level memory hierarchies result in overestimations owing to insufficient path and/or timing analysis. This does not only give rise to poor utilization of processing resources but also reduces the schedulability in real-time systems. This paper presents a method that integrates path and timing analysis to accurately predict the worst-case execution time for real-time programs on high-performance processors. The unique feature of the method is that it extends cycle-level architectural simulation techniques to enable symbolic execution with unknown input data values; it uses alternative instruction semantics to handle unknown operands. We show that the method can exclude many infeasible (or non-executable) program paths and can calculate path information, such as bounds on number of loop iterations, without the need for manual annotations of programs. Moreover, the method is shown to accurately analyze timing properties of complex features in high-performance processors using multiple-issue pipelines and instruction and data caches. The combined path and timing analysis capability is shown to derive exact estimates of the worst-case execution time for six out of seven programs in our benchmark suite. 相似文献
15.
The need for backward execution in debuggers has been raised a number of times. Backward execution helps a user naturally think backwards and, in turn, easily locate the cause of a bug. Backward execution has been implemented mostly by state-saving or checkpointing, which are inherently not scalable. In this paper, we present a method to generate reverse code, so that backtracking can be performed by executing reverse code. The novelty of our work is that we generate reverse code on-the-fly, while running a debugger, which makes it possible to apply the method even to debugging multi-threaded programs. 相似文献
16.
格式化字符串漏洞是一种危害高、影响广的软件漏洞。当前漏洞检测方式存在人工依赖度高,误报率高,检测模型单一,未能充分考虑格式化字符串漏洞特点等多种局限性。针对以上问题,本文对格式化字符串漏洞特征进行分析,设计并实现了一种基于符号执行的格式化字符串漏洞自动检测与测试用例生成的系统。该方法可自动检测linux下二进制程序中格式化字符串漏洞的存在性,判定其是否可能导致任意内存读写危害,并生成稳定有效的测试用例。 相似文献
17.
多路径分析是弥补传统动态分析方法的不足、对可执行程序全面分析的重要方法之一.现有多路径方法主要采用随机构造或者根据路径条件构造输入进行路径触发,这两者均存在路径分析不全面和缺乏针对性的问题.文中通过对路径条件分析,确定了检测条件的基本组成元素,提出了弱控制依赖和路径引用集的概念和计算规则,并以此为基础提出一种延后策略的多路径分析方法.在程序分析过程中,对特定的程序检测点和检测点条件,有针对性地进行路径筛选,从语义上进行路径表达式简化,在保证检测点可达和检测表达式具有相同构造形式的前提下,简化检测表达式,减少分析路径的数量.对7款恶意软件的分析实验结果表明,该方法提高了分析效率和准确性. 相似文献
18.
漏洞这一名词伴随着计算机软件领域的发展已经走过了数十载。自世界上第一个软件漏洞被公开以来,软件安全研究者和工程师们就一直在探索漏洞的挖掘与分析方法。源代码漏洞静态分析是一种能够贯穿整个软件开发生命周期的、帮助软件开发人员及早发现漏洞的技术,在业界有着广泛的使用。然而,随着软件的体量越来越大,软件的功能越来越复杂,如何表示和建模软件源代码是当前面临的一个难题;此外,近年来的研究倾向于将源代码漏洞静态分析和机器学习相结合,试图通过引入机器学习模型提升漏洞挖掘的精度,但如何选择和构建合适的机器学习模型是该研究方向的一个核心问题。本文将目光聚焦于源代码漏洞静态分析技术(以下简称:静态分析技术),通过对该领域相关工作的回顾,将静态分析技术的研究分为两个方向:传统静态分析和基于学习的静态分析。传统静态分析主要是利用数据流分析、污点分析等一系列软件分析技术对软件的源代码进行建模分析;基于学习的静态分析则是将源代码以数值的形式表示并提交给学习模型,利用学习模型挖掘源代码的深层次表征特征和关联性。本文首先阐述了软件漏洞分析技术的基本概念,对比了静态分析技术和动态分析技术的优劣;然后对源代码的表示方法进行... 相似文献
19.
Unit testing is widely used in software development. One important activity in unit testing is automatic test data generation. Constraint-based test data generation is a technique for automatic generation of test data, which uses symbolic execution to generate constraints. Unit testing only tests functions instead of the whole program, where individual functions typically have preconditions imposed on their inputs. Conventional symbolic execution cannot detect these preconditions, let alone converting these preconditions into constraints. To overcome these limitations, we propose a novel unit test data generation approach using rule-directed symbolic execution for dealing with functions with missing input preconditions. Rule-directed symbolic execution uses predefined rules to detect preconditions in the individual function, and generates constraints for inputs based on preconditions. We introduce implicit constraints to represent preconditions, and unify implicit constraints and program constraints into integrated constraints. Test data generated based on integrated constraints can explore previously unreachable code and help developers find more functional faults and logical faults. We have implemented our approach in a tool called CTS-IC, and applied it to real-world projects. The experimental results show that rule-directed symbolic execution can find preconditions (implicit constraints) automatically from an individual function. Moreover, the unit test data generated by our approach achieves higher coverage than similar tools and efficiently mitigates missing input preconditions problems in unit testing for individual functions. 相似文献
|