本发明专利技术公开了一种漏洞检测方法、终端及存储介质,所述方法包括:当检测到free函数被调用时,将释放的内存块保存;当检测到内存被访问时,判断当前被访问的内存块是否属于已保存的内存块;如果当前被访问的内存块属于被释放的内存,则上报UAF漏洞。本发明专利技术通过对二进制文件进行Use After Free漏洞进行检测,在攻击者利用漏洞之前,先进行检测,如果检测存在漏洞,则及时进行修复,避免黑客入侵。避免黑客入侵。避免黑客入侵。
【技术实现步骤摘要】
一种漏洞检测方法、终端及存储介质
[0001]本专利技术涉及计算机安全
,尤其涉及一种漏洞检测方法、终端及存储介质。
技术介绍
[0002]在计算机领域中,Use After Free(简称UAF,一个内存块被释放之后再次被使用)是指程序试图访问之前已经被释放的内存区域。
[0003]当如下这三步同时发生时,会出现UAF漏洞:
[0004](1)一块内存区域被分配并且有一个指针指向它。
[0005](2)内存区域被释放但是指针是可用的。
[0006](3)指针被使用并访问之前释放掉的内存。
[0007]大多时候,UAF漏洞能够导致信息泄漏。但是,更特殊的是UAF导致代码执行,导致被黑客入侵。
[0008]例如,可通过几个步骤完成:
[0009](1)程序分配并释放内存块A。
[0010](2)攻击者分配内存块B,重用之前分配给内存块A的内存。
[0011](3)攻击者写入数据到B块。
[0012](4)程序使用释放掉的块A,访问攻击者留在那里的数据。
[0013]而现有技术中在攻击者利用漏洞之前,没有有效检测软件是否存在漏洞的方法。
[0014]因此,现有技术还有待于改进和发展。
技术实现思路
[0015]本专利技术的主要目的在于提供一种漏洞检测方法、终端及存储介质,旨在解决现有技术中在攻击者利用漏洞之前,没有有效检测软件是否存在漏洞的方法的问题。
[0016]为实现上述目的,本专利技术提供一种漏洞检测方法,所述漏洞检测方法包括如下步骤:
[0017]当检测到free函数被调用时,将释放的内存块保存;
[0018]当检测到内存被访问时,判断当前被访问的内存块是否属于已保存的内存块;
[0019]如果当前被访问的内存块属于被释放的内存,则上报UAF漏洞。
[0020]所述的漏洞检测方法,其中,所述如果当前被访问的内存块属于被释放的内存,则上报UAF漏洞,之后还包括:
[0021]如果检测存在所述UAF漏洞,则对所述UAF漏洞进行修复。
[0022]所述的漏洞检测方法,其中,所述对所述UAF漏洞进行修复,具体包括:
[0023]检查代码,将释放内存操作放置使用后面,用于保证使用完后再释放内存。
[0024]所述的漏洞检测方法,其中,所述判断当前被访问的内存块是否属于已保存的内存块,之后还包括:
[0025]如果当前被访问的内存块不属于被释放的内存,则不存在UAF漏洞。
[0026]所述的漏洞检测方法,其中,所述当检测到free函数被调用时,将释放的内存块保存,之前还包括:
[0027]重新加载Checker类的checkPreCall接口。
[0028]所述的漏洞检测方法,其中,所述当检测到内存被访问时,判断当前被访问的内存块是否属于已保存的内存块,之前还包括:
[0029]重新加载Checker类的checkLocation接口。
[0030]此外,为实现上述目的,本专利技术还提供一种终端,其中,所述终端包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的漏洞检测程序,所述漏洞检测程序被所述处理器执行时实现如上所述的漏洞检测方法的步骤。
[0031]此外,为实现上述目的,本专利技术还提供一种存储介质,其中,所述存储介质存储有漏洞检测程序,所述漏洞检测程序被处理器执行时实现如上所述的漏洞检测方法的步骤。
[0032]本专利技术当检测到free函数被调用时,将释放的内存块保存;当检测到内存被访问时,判断当前被访问的内存块是否属于已保存的内存块;如果当前被访问的内存块属于被释放的内存,则上报UAF漏洞。本专利技术通过对二进制文件进行Use After Free漏洞进行检测,在攻击者利用漏洞之前,先进行检测,如果检测存在漏洞,则及时进行修复,避免黑客入侵。
附图说明
[0033]图1是本专利技术漏洞检测方法的较佳实施例的流程图;
[0034]图2为本专利技术终端的较佳实施例的运行环境示意图。
具体实施方式
[0035]为使本专利技术的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本专利技术进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。
[0036]本专利技术较佳实施例所述的漏洞检测方法,如图1所示,所述漏洞检测方法包括以下步骤:
[0037]步骤S10、当检测到free函数被调用时,将释放的内存块保存。
[0038]其中,free函数即free(),free()是C语言中释放内存空间的函数,通常与申请内存空间的函数malloc()结合使用,可以释放由malloc()、calloc()、realloc()等函数申请的内存空间。
[0039]宏观上讲,Clang是一个项目名称。微观上,类似于GCC,Clang是一个C语言、C++、Objective C语言的轻量级编译器,它是Clang项目的一部分。相比较于GCC,Clang的编译速度更快,占用的内存更少。Clang的错误提示与警告信息也比GCC更加准确清晰。此外,Clang基于库的模块化设计,易于IDE的集成并且遵循LLVM BSD协议。
[0040]Clang Static Analyzer是一个能查找C语言、C++、Objective-C(C语言家族)漏洞的源码分析工具。
[0041]目前,Clang Static Analyzer可以作为一个独立的工具,也可以在Xcode开发环境(Mac os)中运行。Clang Static Analyzer作为一个独立的工具可以从命令行(如ubuntu
的终端)中启动,并且它运行在构建一个代码库过程中。
[0042]Clang Static Analyzer作为Clang项目的一部分,是一个百分之百开源的软件。就像Clang编译器一样,Clang Static Analyzer可以像一个C++库一样集成到其他应用程序中。
[0043]本专利技术是基于Clang Static Analyzer的Use After Free漏洞检测技术,Clang Static Analyzerr具有对源代码进行符号执行的功能,并提供模块化的checker接口,通过对Checker类接口进行重载并注册,可在符号执行过程中调用定义的接口。
[0044]重新加载Checker类的checkPreCall接口,实现代码逻辑是:当收到free函数被调用时,将释放的内存块地址保存起来。
[0045]步骤S20、当检测到内存被访问时,判断当前被访问的内存块是否属于已保存的内存块。
[0046]其中,内存是计算机系统中一个主要部件,用于保存进程运行时的程序和数据,也称可执行存储器。在计算机中,内存空间一般是指主存储器空间(物理地址空间)或系统为一个用户程序分配内存空间。扩展内存空间的方法一般有增加内存大本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种漏洞检测方法,其特征在于,所述漏洞检测方法包括:当检测到free函数被调用时,将释放的内存块保存;当检测到内存被访问时,判断当前被访问的内存块是否属于已保存的内存块;如果当前被访问的内存块属于被释放的内存,则上报UAF漏洞。2.根据权利要求1所述的漏洞检测方法,其特征在于,所述如果当前被访问的内存块属于被释放的内存,则上报UAF漏洞,之后还包括:如果检测存在所述UAF漏洞,则对所述UAF漏洞进行修复。3.根据权利要求2所述的漏洞检测方法,其特征在于,所述对所述UAF漏洞进行修复,具体包括:检查代码,将释放内存操作放置使用后面,用于保证使用完后再释放内存。4.根据权利要求1所述的漏洞检测方法,其特征在于,所述判断当前被访问的内存块是否属于已保存的内存块,之后还包括:如果当前被访问的内存块不属于被释放的内存,则不存在...
【专利技术属性】
技术研发人员:余少高,严智慧,
申请(专利权)人:北京智游网安科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。