首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到16条相似文献,搜索用时 123 毫秒
1.
基于动态染色的内存漏洞定位技术   总被引:2,自引:1,他引:1       下载免费PDF全文
房陈  茅兵  谢立 《计算机工程》2010,36(7):139-141
针对程序漏洞,提出利用基于二进制的程序染色和程序分析技术来检测恶意攻击并有效定位程序漏洞,采用数据依赖关系分析和动态染色的方法,记录起传播作用的写指令及目的内存地址,当检测到漏洞攻击时,通过内存地址找到恶意写指令并定位漏洞。实验结果证明,该方法能成功定位常见内存漏洞的位置,并能定位到有漏洞的库函数的调用点。  相似文献   

2.
内存数据被污染往往是程序漏洞被利用的本质所在,从功能角度把内存数据划分为控制相关和非控制相关,由此引出控制流劫持攻击和非控制数据攻击。两者危害程度相当,前者因利用成本较低而成为主流,但随着控制流劫持防御方法的不断完善,非控制数据攻击逐渐被重视。研究者先后在顶级会议上提出了数据导向攻击得自动化利用框架Data-oriented Exploits (DOE)以及图灵完备性地证明Data-oriented Programming (DOP),使得非控制数据攻击成为热点。本文基于这两种攻击形式,首先简化内存安全通用模型,并对经典内存数据污染攻击和防御的原理进行分析,其次分别论述新型控制流劫持和非控制数据攻击与防御的研究现状,最后探讨内存安全领域未来的研究方向,并给出两者协作攻击和防御的可能方案。  相似文献   

3.
内存错误漏洞是以不安全语言编写软件系统中安全性和可靠性问题的主要原因。这些漏洞常被用来将代码执行重定向到攻击者控制的位置。诸如代码复用攻击这样的内存错误漏洞利用的流行促使主要处理器制造商设计基于硬件的防御机制。一个例子是ARMv8.3中引入的指针认证(PAuth)机制。PAuth使用签名密钥和指针上下文信息对指针进行签名, 上下文信息是缩小保护范围和开发不同类型安全机制的关键元素。通过使用轻量级分组密码算法QARMA64并将指针认证码(PAC)存储在指针未使用位中, PAuth可以较小的性能和存储开销检查指针的完整性。当前一些研究使用PAuth降低内存安全机制的性能开销, 还有一些研究基于PAuth提高控制流完整性的保护精度。虽然PAuth受到越来越多的关注, 但它仍然遭受暴力攻击和PAC伪造攻击。因此, 很有必要对当前基于PAuth的安全应用进行总结, 并分析其存在的问题。本文首先介绍内存错误漏洞利用的相关背景和相应的保护机制。然后, 我们详细介绍了PAuth机制的详细信息, 包括硬件支持、加密算法和密码密钥管理, 及其潜在的安全问题。然后, 我们总结了当前基于PAuth的内存安全和控制流完整性的研究, 特别是指针上下文的选择方法。最后, 基于我们的调查, 讨论和展望ARM PAuth未来可能的研究方向。未来的研究方向可能包括以下几个方面: PAuth密钥管理和上下文选择、针对推测攻击的防御, 以及PAuth与其他ARM安全机制的结合使用。  相似文献   

4.
随着漏洞挖掘技术日渐成熟,每年新增漏洞数量逐步增加。从操作系统以及编译器层面来说,为了提高内存保护的安全性,对抗漏洞利用的缓解措施也在不断完善。文章介绍了近年来比较成熟的基于内存的漏洞关键缓解技术,包括GS编译选项技术、SEH安全校验机制、堆数据保护机制、DEP技术以及ASLR技术。GS编译选项技术和SEH安全校验机制能够有效遏制针对栈数据的攻击;堆数据保护机制为堆溢出增加了更多限制;DEP技术能够对内存执行额外检查以防止恶意代码在系统中执行;ASLR技术通过对关键地址的随机化使一些堆栈溢出手段失效。文章还指出了这些防护措施所存在的不足,并据此从攻击者的角度介绍了针对这几种缓解措施的攻击思路。针对漏洞缓解技术,文章指出未来必须考虑的是如何弥补在抵御复合向量攻击方面的不足,如何完善旁路保护。  相似文献   

5.
针对现有的内存相关漏洞检测方法中存在依赖指针数据流而导致大量误报漏报、缺乏漏洞特征的形式化描述以及漏洞特征描述不全面的问题,提出一种基于抽象内存模型的内存相关漏洞检测方法。对抽象内存模型进行相关定义;基于抽象内存模型,对内存泄露、重复释放内存和读写释放后的内存这三种与内存相关的漏洞类型的特征进行形式化符号表示;基于代码的控制流图,利用可行路径求解算法得到代码的所有可行路径,并对所有可行路径上的抽象内存进行运行时状态判定,从而检测代码是否存在内存相关的漏洞;使用Juliet Test Suite中的CWE401、CWE415、CWE416三个内存相关漏洞的测试数据集对提出的检测方法进行验证,实验结果表明,相比依赖指针数据流的检测方法,该方法在内存相关漏洞检测的误报率和漏报率均降低。  相似文献   

6.
近30年来,攻击者利用Windows内存漏洞发起的攻击事件层出不穷,其惯用手段是攻击控制数据以劫持执行流。为此,微软在Windows上加注了层层防护以遏止此类攻击,但现阶段部署的防护机制无法阻止针对非控制数据的攻击。鉴于目前研究Windows内存防护机制的文献寥寥无几,对Windows采用的各种内存防护机制及其突破技术进行了深入研究,并详述非控制数据防护的研究现状,在此基础上,分析了Windows内存防护面临的挑战,并讨论了内存防护的未来之路。  相似文献   

7.
程序中存在的漏洞是针对程序的各种攻击事件的根源,攻击者可以利用这些漏洞改变程序的行为或完全控制程序。本文以C语言和C++语言为例循序渐进地阐明了程序中漏洞产生的根本原因,并对利用这些漏洞实施的攻击进行了深入地分析和探讨,同时也指出了当前主要的漏洞检测和漏洞阻止技术的优势和不足。最后,我们提出了对程序进行持续的和全面的内存布局多样性的未来研究方向。  相似文献   

8.
由于C与C++等计算机程序中广泛存在的漏洞,攻击者可以通过这些漏洞读取或篡改内存中的数据,改变计算机程序原有的执行状态达到破坏的目的。为此研究者进行了不懈地努力并采取了一些卓有成效的保护机制,例如数据不可执行与内存布局随机化,这些防御机制对于早期的代码注入攻击起到了极好的防御效果,然而计算机系统的安全性依然不容乐观。攻击者在无法通过向内存中注入自己的代码并执行的方式完成攻击后,开始利用内存中原有的代码,通过控制它们执行的顺序来达到自己的目的,这种攻击方式称为代码重用攻击,它具有极大的威胁性,能够绕过多种现行的安全措施,并成为攻击者的主流攻击方式。为此,研究界针对代码重用攻击的研究也逐渐增多。本文简述了代码重用攻击的起源,攻击实现的方式,系统化地总结了现有的防御机制并对这些防御机制进行了评价。对代码重用攻击的根本原因进行了简要的分析,并提出了一种新的防御机制设计思路。  相似文献   

9.
正近日微软证实,在目前IE所有版本上发现了一个新零日漏洞。微软称,该漏洞使得黑客能够远程执行代码,进行一些有限地针对性攻击。在涉及范围上,微软IE6到IE11的浏览器都受到这个漏洞的影响。这些攻击利用了一个以前未知的"use after free"漏洞,该漏洞主要是内存被释放后发生数据损坏,从而绕过Windows DEP和ASLR的保护。微软解释称,攻击者有可能会引诱访问者到一个精心制作的网页来触发漏洞,这个漏洞之所以存  相似文献   

10.
基于深度学习的代码漏洞检测模型因其检测效率高和精度准的优势,逐步成为检测软件漏洞的重要方法,并在代码托管平台Github的代码审计服务中发挥重要作用.然而,深度神经网络已被证明容易受到对抗攻击的干扰,这导致基于深度学习的漏洞检测模型存在遭受攻击,降低检测准确率的风险.因此,构建针对漏洞检测模型的对抗攻击,不仅可以发掘此类模型的安全缺陷,而且有助于评估模型的鲁棒性,进而通过相应的方法提升模型性能.但现有的面向漏洞检测模型的对抗攻击方法,依赖于通用的代码转换工具,并未提出针对性的代码扰动操作和决策算法,因此难以生成有效的对抗样本,且对抗样本的合法性依赖于人工检查.针对上述问题,提出了一种面向漏洞检测模型的强化学习式对抗攻击方法.本方法首先设计了一系列语义约束且漏洞保留的代码扰动操作作为扰动集合;其次,将具备漏洞的代码样本作为输入,利用强化学习模型选取具体的扰动操作序列.最后,根据代码样本的语法树节点类型寻找扰动的潜在位置,进行代码转换,从而生成对抗样本.本文基于SARD和NVD构建了两个实验数据集共14,278个代码样本并以此训练了四个具备不同特点的漏洞检测模型作为攻击目标.针对每个目标模型,训练了一个强化学习网络进行对抗攻击.结果显示,本文的攻击方法导致模型的召回率降低了74.34%,攻击成功率达到96.71%,相较基线方法,攻击成功率平均提升了68.76%.实验证明了当前的漏洞检测模型存在被攻击的风险,需要进一步研究提升模型的鲁棒性.  相似文献   

11.
Grey-box fuzzing is an effective technology to detect software vulnerabilities, such as memory corruption. Previous fuzzers in detecting memory corruption bugs either use heavy-weight analysis, or use techniques which are not customized for memory corruption detection. In this paper, we propose a novel memory bug guided fuzzer, ovAFLow. To begin with, we broaden the memory corruption targets where we frequently identify bugs. Next, ovAFLow utilizes light-weight and effective methods to build connections between the fuzzing inputs and these corruption targets. Based on the connection results, ovAFLow uses customized techniques to direct the fuzzing process closer to memory corruption. We evaluate ovAFLow against state-of-the-art fuzzers, including AFL (american fuzzy lop), AFLFast, FairFuzz, QSYM, Angora, TIFF, and TortoiseFuzz. The evaluation results show better vulnerability detection ability of ovAFLow, and the performance overhead is acceptable. Moreover, we identify 12 new memory corruption bugs and two CVEs (common vulnerability exposures) with the help of ovAFLow.  相似文献   

12.
基于代码插装的缓冲区溢出漏洞定位技术   总被引:1,自引:0,他引:1       下载免费PDF全文
史胜利 《计算机工程》2012,38(9):138-140
为准确快速地找到缓冲区溢出漏洞点,提出一种通过代码插装对二进制文件中的缓冲区溢出漏洞自动定位的方法。使用PIN提供的函数编写程序分析工具,在程序执行过程中记录所需的信息。当检测到内存访问错误异常时,判别破坏内存的情况,获取内存破坏点,查找到非法写内存的指令定位漏洞。实例分析表明,该方法不需要源程序且效率较高,能成功地定位常见的缓冲区溢出漏洞。  相似文献   

13.
内存溢出漏洞及其利用对计算机和网络安全构成了极大威胁。逐一分析Windows系统对栈、堆防护机制、数据执行保护和地址随机加载机制的设计和实现,测试了Windows Vista环境下绕过这些防护机制方法的可能性,指出无安全编译的软件使用已成为系统安全的短板;最后讨论了更全面提高系统安全性的改进方案。  相似文献   

14.
Allocation,dereferencing,and freeing of memory data in kernels are coherently linked.There widely exist real cases where the correctness of memory is compromised.This incorrectness in kernel memory brings about significant security issues,e.g.,information leaking.Though memory allocation,dereferencing,and freeing are closely related,previous work failed to realize they are closely related.In this paper,we study the life-cycle of kernel memory,which consists of allocation,dereferencing,and freeing.Errors in them are called memory life-cycle(MLC)bugs.We propose an in-depth study of MLC bugs and implement a memory life-cycle bug sanitizer(MEBS)for MLC bug detection.Utilizing an inter-procedural global call graph and novel identification approaches,MEBS can reveal memory allocation,dereferencing,and freeing sites in kernels.By constructing a modified define-use chain and examining the errors in the life-cycle,MLC bugs can be identified.Moreover,the experimental results on the latest kernels demonstrate that MEBS can effectively detect MLC bugs,and MEBS can be scaled to different kernels.More than 100 new bugs are exposed in Linux and FreeBSD,and 12 common vulnerabilities and exposures(CVE)are assigned.  相似文献   

15.

Despite all the efforts made by the scientific community in terms of computer security, buffer overflow vulnerabilities continue being the biggest security flaw in applications, since they compromise the security of the system through memory corruption. To tackle this problem, there are different techniques based on the binary analysis of the application in question. With this objective in mind, the present paper proposes an algorithm based on the dynamic instrumentation of binaries, that is, dynamic local variables belonging to the functions of the program are detected, and a check is performed to see whether there is an overflow of memory between them. The results obtained show how the proposed algorithm is able to detect buffer overflow errors in the stack frames of a function.

  相似文献   

16.
Memory‐related program failures in multithreaded programs can be caused by a variety of bugs. Concurrency bugs can occur due to unexpected or incorrect thread interleavings during execution. Other kinds of memory bugs, such as buffer overflows and uninitialized reads, may also occur in multithreaded as well as single‐threaded programs. Most prior techniques for isolating these bugs are specialized, addressing only one type of concurrency bug or certain types of other memory bugs. The memory corruption caused by these bugs can also undergo significant propagation during program execution. When a program failure finally occurs due to memory corruption, the true root cause of the failure may be effectively concealed as significant portions of memory may have become corrupted. We propose a general framework that can isolate the root cause of any failure in a multithreaded program that involves memory corruption and reveals at least a subset of this memory corruption. This includes three important types of concurrency bugs—data races, atomicity violations, and order violations—as well as other kinds of memory bugs. To account for propagation of memory corruption, our approach uses a dynamic technique called ‘execution suppression’ that iteratively reveals memory corruption in a failing execution to isolate the true root cause of the failure. Copyright © 2011 John Wiley & Sons, Ltd.  相似文献   

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

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