CN116881919B - 漏洞挖掘方法、装置、电子设备及存储介质 - Google Patents

漏洞挖掘方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN116881919B
CN116881919B CN202310641080.8A CN202310641080A CN116881919B CN 116881919 B CN116881919 B CN 116881919B CN 202310641080 A CN202310641080 A CN 202310641080A CN 116881919 B CN116881919 B CN 116881919B
Authority
CN
China
Prior art keywords
test cases
kernel
test
determining
target point
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202310641080.8A
Other languages
English (en)
Other versions
CN116881919A (zh
Inventor
张超
原铭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Original Assignee
Tsinghua University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CN202310641080.8A priority Critical patent/CN116881919B/zh
Publication of CN116881919A publication Critical patent/CN116881919A/zh
Application granted granted Critical
Publication of CN116881919B publication Critical patent/CN116881919B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明提供一种漏洞挖掘方法、装置、电子设备及存储介质,包括:确定内核驱动过程中的目标点及竞争点;基于第一数量的测试用例对内核驱动过程进行模糊测试,确定各个测试用例分别到达目标点的反馈距离、分别触发漏洞的约束距离,以及确定各个竞争点形成的线程交错路径;根据反馈距离、约束距离和线程交错路径,从第一数量的测试用例中筛选得到第二数量的测试用例;基于第二数量的测试用例对内核驱动过程进行模糊测试,记录触发的漏洞信息,以指导模糊测试器更好地探索并发释放后重用漏洞和线程交错,实现更加高效地发现并确认并发释放后重用漏洞,提高软件系统的安全性和稳定性。

Description

漏洞挖掘方法、装置、电子设备及存储介质
技术领域
本发明涉及计算机安全技术领域,尤其涉及一种漏洞挖掘方法、装置、电子设备及存储介质。
背景技术
随着硬件的迅速发展,多核处理器因其优越的性能而越来越受到欢迎,在现代软件系统中,多线程也得到了广泛的应用。相较于单线程程序,由于行为具有不确定性,多线程程序存在一些难以被察觉到的并发缺陷。其中一些并发缺陷可以转化为造成内存破坏、内存泄漏甚至提权等严重后果的并发漏洞,比如著名的“脏牛”内核竞态漏洞(CVE-2016-5195)。特别地,由于并发缺陷会改变事件的时间顺序,很容易造成时间性内存安全违规(Temporal Memory Safety Violations),如释放后重用漏洞等。此外,在Linux驱动程序中,很大一部分UAF漏洞都涉及并发缺陷。因此,为了保障系统安全,挖掘并发UAF漏洞具有极其重要的意义。
软件模糊测试是目前挖掘软件安全漏洞的最有效的方法之一,被广泛应用于各个领域。很多大型软件开发公司和安全技术公司都采用模糊测试来验证其软件的安全性和可靠性。模糊测试通过在程序输入上引入随机的变化,生成大量的测试用例并执行它们,以发现可能存在的漏洞和缺陷。与传统测试方法相比,模糊测试具有高度自动化、高效率、低成本等优势,能够广泛适用于各种类型的软件系统。因此,它成为了当前软件安全领域最受欢迎的技术之一。模糊测试器通常以测试用例触发的代码覆盖情况来评估测试用例的质量,然后利用代码覆盖率指导模糊测试器对随机生成的种子进行保留、选择与变异。但是对多线程程序而言,仅仅依赖代码覆盖率无法引导模糊测试器探索目标程序的线程交错空间,也就不容易发现隐藏其中的并发漏洞。
发明内容
针对现有技术存在的问题,本发明提供一种漏洞挖掘方法、装置、电子设备及存储介质。
第一方面,本发明提供一种漏洞挖掘方法,包括:
确定内核驱动过程中的目标点及竞争点,所述目标点包括内核驱动程序中的内存释放操作和内存访存操作,所述竞争点包括目标点对应的驱动接口到目标点之间的共享变量读写操作;
基于第一数量的测试用例对内核驱动过程进行模糊测试,确定各个测试用例分别到达目标点的反馈距离、分别触发漏洞的约束距离,以及确定各个竞争点形成的线程交错路径;
根据所述反馈距离、所述约束距离和所述线程交错路径,从第一数量的测试用例中筛选得到第二数量的测试用例;
基于第二数量的测试用例对内核驱动过程进行模糊测试,记录触发的漏洞信息。
在一个实施例中,所述确定各个测试用例分别到达目标点的反馈距离,包括:
基于内核驱动过程构建支配树,所述支配树由多个支配点相互关联构成,所述支配点为内核驱动程序中的操作指令,所述支配点包括所述目标点;
计算所述测试用例执行时处于的支配点到目标点之间的距离,所述距离为所述支配树中点与点之间的路径长度。
在一个实施例中,所述确定各个测试用例分别触发漏洞的约束距离,包括:
检测测试用例是否满足预设的约束条件,所述约束条件包括:触发内存释放操作和内存访存操作;释放操作和访存操作的对象是同一内存;访存操作在释放操作之后;
统计测试用例满足约束条件的数目,基于所述数目确定测试用例触发漏洞的约束距离,所述约束距离为对应于所述数目的规则数值。
在一个实施例中,所述确定各个竞争点形成的线程交错路径,包括:
遍历内核驱动过程中的线程交错空间,将线程间“写-读”交错边与变量值发生变化的“读-写”交错边进行组合,形成一条线程交错路径。
在一个实施例中,根据所述反馈距离、所述约束距离和所述线程交错路径,从第一数量的测试用例中筛选得到第二数量的测试用例,包括:
存储反馈距离满足第一数值条件的测试用例;
存储约束距离满足第二数值条件的测试用例;
存储线程交错路径的数目满足第三数值条件的测试用例。
在一个实施例中,所述确定内核驱动过程中的目标点,包括:
对内核驱动过程中的内存释放操作和内存访存操作进行插桩,对得到的驱动执行轨迹进行分析,将内存释放和内存访存指向同一对象的指令对,识别为目标点。
在一个实施例中,所述确定内核驱动过程中的竞争点,包括:
基于内核驱动程序构建函数调用图,所述函数调用图包括内存驱动程序中各操作与驱动接口的对应关系;
根据所述函数调用图得到目标点所属的驱动接口,获取所述驱动接口到目标点路径上所有的共享变量读写操作,然后获取所述驱动接口到目标点路径上所有的共享变量读操作,以及在所述驱动接口外的驱动接口中定位同一共享变量的写操作,将共享变量的读写操作对识别为竞争点。
第二方面,本发明提供一种漏洞挖掘装置,包括:
获取模块,用于确定内核驱动过程中的目标点及竞争点,所述目标点包括内核驱动程序中的内存释放操作和内存访存操作,所述竞争点包括目标点对应的驱动接口到目标点之间的共享变量读写操作;
确定模块,用于基于第一数量的测试用例对内核驱动过程进行模糊测试,确定各个测试用例分别到达目标点的反馈距离、分别触发漏洞的约束距离,以及确定各个竞争点形成的线程交错路径;
筛选模块,用于根据所述反馈距离、所述约束距离和所述线程交错路径,从第一数量的测试用例中筛选得到第二数量的测试用例;
记录模块,用于基于第二数量的测试用例对内核驱动过程进行模糊测试,记录触发的漏洞信息。
第三方面,本发明提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面中任一项所述的漏洞挖掘方法的步骤。
第四方面,本发明提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面中任一项所述的漏洞挖掘方法的步骤。
本发明提供的漏洞挖掘方法、装置、电子设备及存储介质,通过确定内核驱动过程中的目标点及竞争点,并在测试用例对内核驱动过程进行模糊测试时,确定各个测试用例分别到达目标点的反馈距离、分别触发漏洞的约束距离,以及确定各个竞争点形成的线程交错路径,再根据反馈距离、约束距离和线程交错路径,从原有的测试用例中筛选得到部分测试用例,基于部分测试用例对内核驱动过程进行模糊测试,记录触发的漏洞信息,以指导模糊测试器更好地探索并发释放后重用漏洞和线程交错,实现更加高效地发现并确认并发并发释放后重用漏洞,提高软件系统的安全性和稳定性。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的漏洞挖掘方法的流程示意图;
图2是本发明提供的漏洞挖掘装置的结构示意图;
图3是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合图1至图3描述本发明提供的漏洞挖掘方法、装置、电子设备及存储介质。
图1示出了本发明提供的一种漏洞挖掘方法的流程示意图,参见图1,该方法包括:
11、确定内核驱动过程中的目标点及竞争点,目标点包括内核驱动程序中的内存释放操作和内存访存操作,竞争点包括目标点对应的驱动接口到目标点之间的共享变量读写操作;
12、基于第一数量的测试用例对内核驱动过程进行模糊测试,确定各个测试用例分别到达目标点的反馈距离、分别触发漏洞的约束距离,以及确定各个竞争点形成的线程交错路径;
13、根据反馈距离、约束距离和线程交错路径,从第一数量的测试用例中筛选得到第二数量的测试用例;
14、基于第二数量的测试用例对内核驱动过程进行模糊测试,记录触发的漏洞信息。
针对步骤11~步骤14,需要说明的是,本发明旨在挖掘潜在的并发(Concurrency)释放后重用(Use-After-Free,UAF)漏洞。为此,执行内核驱动程序,从内核驱动过程中分析得到内核驱动程序中潜在的内存释放操作和内存访存操作作为模糊测试的目标点。因为需要进行并发模糊测试工作,针对的是并发缺陷,存储竞争情况。故除了目标点,本发明还需要将获取目标点对应的驱动接口到目标点之间的共享变量读写操作,将这些共享变量读写操作作为竞争点。
在本发明中,利用轻量级的轨迹分析和静态分析技术从内核驱动程序中提取到目标点、竞争对、驱动接口等信息,能够缩小模糊测试范围。
在本发明中,将一定数量的测试用例(测试种子)对内核驱动过程进行模糊测试,模糊测试是一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。
在测试过程中,需要对测试过程实时监测,确定各个测试用例分别到达目标点的反馈距离、分别触发漏洞的约束距离,以及确定各个竞争点形成的线程交错路径。在这里,反馈距离是监测测试用例到达目标点的计算规则下的数值,相应地,约束距离也是监测测试用例触发漏洞的计算规则下的数值。各个竞争点形成的线程交错路径是读-写操作和写-读操作形成的交错路径。
在本发明中,根据反馈距离、约束距离和线程交错路径,参照预设的筛选规则进行判断,从第一数量的测试用例中筛选得到第二数量的测试用例。相当于从原有的测试用例中,筛选出更能够挖掘漏洞的测试用例(测试种子),以便基于这些筛选出的测试种子对潜在的漏洞进行判断,保证挖掘漏洞的准确性。
本发明提供的漏洞挖掘方法,通过确定内核驱动过程中的目标点及竞争点,并在测试用例对内核驱动过程进行模糊测试时,确定各个测试用例分别到达目标点的反馈距离、分别触发漏洞的约束距离,以及确定各个竞争点形成的线程交错路径,再根据反馈距离、约束距离和线程交错路径,从原有的测试用例中筛选得到部分测试用例,基于部分测试用例对内核驱动过程进行模糊测试,记录触发的漏洞信息,以指导模糊测试器更好地探索并发释放后重用漏洞和线程交错,实现更加高效地发现并确认并发并发释放后重用漏洞,提高软件系统的安全性和稳定性。
在上述方法的进一步方法中,主要是对确定各个测试用例分别到达目标点的反馈距离的处理过程进行解释说明,具体如下:
基于内核驱动过程构建支配树,支配树由多个支配点相互关联构成,支配点为内核驱动程序中的操作指令,支配点包括目标点;
计算测试用例执行时处于的支配点到目标点之间的距离,距离为支配树中点与点之间的路径长度。
对此,需要说明的是,在本发明中,基于内核驱动过程构建支配树,支配树由多个支配点相互关联构成,支配点为内存驱动程序中的操作指令,目标点在支配点之中。计算测试用例执行时处于的支配点距离目标点的支配树深度距离,作为反馈距离,距离为支配树中点与点之间的路径长度,相当于点到点的跳数。这样的好处是可以让模糊测试器只关心当前测试用例是否有到达目标点的潜力,而不关心它选择哪条路径来到达目标点。
在上述方法的进一步方法中,主要是确定各个测试用例分别触发漏洞的约束距离的处理过程进行解释说明,具体如下:
检测测试用例是否满足预设的约束条件,约束条件包括:触发内存释放操作和内存访存操作;释放操作和访存操作的对象是同一内存;访存操作在释放操作之后;
统计测试用例满足约束条件的数目,基于数目确定测试用例触发漏洞的约束距离,约束距离为对应于数目的规则数值。
对此,需要说明的是,在本发明中,约束距离则是计算当前测试用例距离触发漏洞的“距离”,具体到并发UAF漏洞,其包括3个约束:(a)能够触发内存释放和内存访存操作;(b)释放操作和访存操作的对象是同一内存;(c)访存操作的顺序在释放操作之后。在模糊测试过程中,每满足一个约束,约束距离就会相应的减小,直到约束全部满足后,约束距离减小为0。
在上述方法的进一步方法中,主要是确定各个竞争点形成的线程交错路径的处理过程进行解释说明,具体如下:
遍历内核驱动过程中的线程交错空间,将线程间“写-读”交错边与变量值发生变化的“读-写”交错边进行组合,形成一条线程交错路径。
对此,需要说明的是,在本发明中,线程交错路径的反馈则是用来在逼近目标点的时候,引导模糊测试器尽可能全面地探索线程交错空间。与之前工作只关注读写操作间的一条边不同,本发明关注的是读写操作之间的路径。具体来说,是将线程间“写-读”交错边与变量值发生变化的“读-写”交错边组合起来,形成一条线程交错的路径。依赖交错路径反馈而不是交错边的反馈可以获得更多的线程交错反馈信号。
在上述发明的进一步发明中,主要是对根据反馈距离、约束距离和线程交错路径,从第一数量的测试用例中筛选得到第二数量的测试用例的处理过程进行解释说明,具体如下:
存储反馈距离满足第一数值条件的测试用例;
存储约束距离满足第二数值条件的测试用例;
存储线程交错路径的数目满足第三数值条件的测试用例。
对此,需要说明的是,在本发明中,在得到上述的各项反馈后,模糊测试器根据反馈来判断是否保留测试种子。当测试用例触发了新的距离(包括支配树深度距离和漏洞模型约束距离)或者是否有新的线程交错路径反馈。在选择测试种子过程中,距离越短的测试种子被选中的概率越高,此外,触发的交错路径频率越低的测试种子(相当于在测试过程中导致产生线程交错路径的数目最小)被选中的概率也会越高。即:存储反馈距离满足第一数值条件的测试用例;存储约束距离满足第二数值条件的测试用例;存储线程交错路径的数目满足第三数值条件的测试用例。例如第二数值条件为数值为0,约束距离等于0。
在上述发明的进一步发明中,主要是确定内核驱动过程中的目标点的处理过程进行解释说明,具体如下:
对内核驱动过程中的内存释放操作和内存访存操作进行插桩,对得到的驱动执行轨迹进行分析,将内存释放和内存访存指向同一对象的指令对,识别为目标点。
对此,需要说明的是,在本发明中,在驱动程序源代码上难以进行静态分析,所以需要将驱动程序源代码编译为LLVM字节码中间文件,便于静态分析框架对驱动程序进行分析。需要注意的是,一些驱动程序由多个源文件组成,但是静态分析框架需要对驱动程序进行整体分析,所以本发明同时替换了内核的编译过程和链接过程,可以将多个LLVM字节码中间文件链接成一个最终文件,便于进行静态分析。
对驱动过程中的内存释放点和访存点进行插桩,并运行原版内核模糊测试器一段时间,分析插桩得到的轨迹以获得潜在的UAF目标点。
在本发明中,对于每对目标点,基于函数调用图通过静态分析得到目标点所属的驱动接口,并将其称之为目标驱动接口。从驱动接口出发,对到达目标点路径上的共享变量读写指令通过SVF做指针分析,得到目标竞争对;另外,找出路径上的共享变量读操作,在同一驱动的其它驱动接口下做指针分析找到同一变量的写操作,将它们识别为伴随竞争对,存在伴随竞争对的驱动接口称之为伴随驱动接口。得到的这些信息用于辅助接下来的模糊测试过程。
需要指出的是,在整个内核上使用SVF来分析是不现实的,巨大的代码量会让SVF失去精度。为了避免这种情况,本发明利用内核模块化的特点,对每个子模块单独进行编译得到LLVM字节码中间文件,这样一来SVF可以在这些较小的文件上进行指针分析。
另外,为了解决在内核持续型模糊测试过程中测试种子因为内核状态改变而失效的问题,本发明提出了一个在定向模糊测试过程中自适应状态迁移方案。由于内核模糊测试不能够频繁重启系统,因此在模糊测试的不同时刻内核状态会有所不同,而保留的测试种子在不同的内核状态下表现会不同,导致种子重用性差。为了解决这个问题,本发明会对种子保留其运行时的内核状态,等下次取出该种子后恢复该种子的内核状态。显然对每个种子都保留状态会造成非常大的性能开销,为了能在性能开销和种子有效性之间做个好的平衡,从两个方面来自适应性地保留种子状态。一方面,只对触发过目标点的这类有价值的种子保留其状态;另一方面,也不是对种子全部保留其运行时状态,而是先将其在内核初始状态下运行,检查能否再次到达目标点,如果不能的话,再保留其运行时的真实状态。
具体如下:
(1)在每个模糊测试用例的虚拟机启动的时候,也启动一个用于快照的虚拟机,并通过QEMU的快照功能保存下虚拟机的初始状态S0
(2)模糊测试遇到不能重用的高价值种子时,将其发送至快照虚拟机中。快照虚拟机先通过恢复状态S0的快照来执行该种子,并判断这个种子能否在这个状态下重用。若能,则将该种子标记为S0保存到种子池中。如果不能,则跳转下一步;
(3)在这一步中,状态迁移功能则会更为复杂。模糊测试器将该种子之前所有执行过的测试用例发送给快照虚拟机,后者将这些测试用例执行一遍并保存下此时的状态S,如果在该状态下此种子可以重用,则将其标记为状态S保存到种子池种,否则抛弃该种子。
下面对本发明提供的漏洞挖掘装置进行描述,下文描述的漏洞挖掘装置与上文描述的漏洞挖掘方法可相互对应参照。
图2示出了本发明提供的一种漏洞挖掘装置的结构示意图,参见图2,该装置包括数据获取模块21、确定模块22、筛选模块23和记录模块24,其中:
获取模块21,用于确定内核驱动过程中的目标点及竞争点,目标点包括内核驱动程序中的内存释放操作和内存访存操作,竞争点包括目标点对应的驱动接口到目标点之间的共享变量读写操作;
确定模块22,用于基于第一数量的测试用例对内核驱动过程进行模糊测试,确定各个测试用例分别到达目标点的反馈距离、分别触发漏洞的约束距离,以及确定各个竞争点形成的线程交错路径;
筛选模块23,用于根据反馈距离、约束距离和线程交错路径,从第一数量的测试用例中筛选得到第二数量的测试用例;
记录模块24,用于基于第二数量的测试用例对内核驱动过程进行模糊测试,记录触发的漏洞信息。
在上述装置的进一步装置中,该确定模块在确定各个测试用例分别到达目标点的反馈距离的处理过程中,具体用于:
基于内核驱动过程构建支配树,支配树由多个支配点相互关联构成,支配点为内核驱动程序中的操作指令,支配点包括目标点;
计算测试用例执行时处于的支配点到目标点之间的距离,距离为支配树中点与点之间的路径长度。
在上述装置的进一步装置中,该确定模块在确定各个测试用例分别触发漏洞的约束距离的处理过程中,具体用于:
检测测试用例是否满足预设的约束条件,约束条件包括:触发内存释放操作和内存访存操作;释放操作和访存操作的对象是同一内存;访存操作在释放操作之后;
统计测试用例满足约束条件的数目,基于数目确定测试用例触发漏洞的约束距离,约束距离为对应于数目的规则数值。
在上述装置的进一步装置中,该确定模块在确定各个竞争点形成的线程交错路径的处理过程中,具体用于:
遍历内核驱动过程中的线程交错空间,将线程间“写-读”交错边与变量值发生变化的“读-写”交错边进行组合,形成一条线程交错路径。
在上述装置的进一步装置中,该记录模块具体用于:
存储反馈距离满足第一数值条件的测试用例;
存储约束距离满足第二数值条件的测试用例;
存储线程交错路径的数目满足第三数值条件的测试用例。
在上述装置的进一步装置中,该获取模块在确定内核驱动过程中的目标点的处理过程中,具体用于:
对内核驱动过程中的内存释放操作和内存访存操作进行插桩,对得到的驱动执行轨迹进行分析,将内存释放和内存访存指向同一对象的指令对,识别为目标点。
在上述装置的进一步装置中,该获取模块在确定内核驱动过程中的竞争点的处理过程中,具体用于:
基于内核驱动程序构建函数调用图,函数调用图包括内核驱动程序中各操作与驱动接口的对应关系;
根据函数调用图得到目标点所属的驱动接口,获取驱动接口到目标点路径上所有的共享变量读操作,然后驱动接口外的驱动接口中定位同一共享变量的写操作,共享变量的读写操作识别为竞争点。
由于本发明实施例所述装置与上述实施例所述方法的原理相同,对于更加详细的解释内容在此不再赘述。
本发明提供的漏洞挖掘装置,通过确定内核驱动过程中的目标点及竞争点,并在测试用例对内核驱动过程进行模糊测试时,确定各个测试用例分别到达目标点的反馈距离、分别触发漏洞的约束距离,以及确定各个竞争点形成的线程交错路径,再根据反馈距离、约束距离和线程交错路径,从原有的测试用例中筛选得到部分测试用例,基于部分测试用例对内核驱动过程进行模糊测试,记录触发的漏洞信息,以指导模糊测试器更好地探索UAF漏洞和线程交错,实现更加高效地发现并确认并发UAF漏洞,提高软件系统的安全性和稳定性。
图3示例了一种电子设备的实体结构示意图,如图3所示,该电子设备可以包括:处理器(processor)31、通信接口(Communication Interface)32、存储器(memory)33和通信总线34,其中,处理器31,通信接口32,存储器33通过通信总线34完成相互间的通信。处理器31可以调用存储器33中的计算机程序,以执行漏洞挖掘方法的步骤,例如包括:确定内核驱动过程中的目标点及竞争点,目标点包括内核驱动程序中的内存释放操作和内存访存操作,竞争点包括目标点对应的驱动接口到目标点之间的共享变量读写操作;基于第一数量的测试用例对内核驱动过程进行模糊测试,确定各个测试用例分别到达目标点的反馈距离、分别触发漏洞的约束距离,以及确定各个竞争点形成的线程交错路径;根据反馈距离、约束距离和线程交错路径,从第一数量的测试用例中筛选得到第二数量的测试用例;基于第二数量的测试用例对内核驱动过程进行模糊测试,记录触发的漏洞信息。
此外,上述的存储器33中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行漏洞挖掘方法的步骤,例如包括:确定内核驱动过程中的目标点及竞争点,目标点包括内核驱动程序中的内存释放操作和内存访存操作,竞争点包括目标点对应的驱动接口到目标点之间的共享变量读写操作;基于第一数量的测试用例对内核驱动过程进行模糊测试,确定各个测试用例分别到达目标点的反馈距离、分别触发漏洞的约束距离,以及确定各个竞争点形成的线程交错路径;根据反馈距离、约束距离和线程交错路径,从第一数量的测试用例中筛选得到第二数量的测试用例;基于第二数量的测试用例对内核驱动过程进行模糊测试,记录触发的漏洞信息。
另一方面,本发明实施例还提供一种处理器可读存储介质,所述处理器可读存储介质存储有计算机程序,所述计算机程序用于使所述处理器执行漏洞挖掘方法的步骤,例如包括:确定内核驱动过程中的目标点及竞争点,目标点包括内核驱动程序中的内存释放操作和内存访存操作,竞争点包括目标点对应的驱动接口到目标点之间的共享变量读写操作;基于第一数量的测试用例对内核驱动过程进行模糊测试,确定各个测试用例分别到达目标点的反馈距离、分别触发漏洞的约束距离,以及确定各个竞争点形成的线程交错路径;根据反馈距离、约束距离和线程交错路径,从第一数量的测试用例中筛选得到第二数量的测试用例;基于第二数量的测试用例对内核驱动过程进行模糊测试,记录触发的漏洞信息。
所述处理器可读存储介质可以是处理器能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(MO)等)、光学存储器(例如CD、DVD、BD、HVD等)、以及半导体存储器(例如ROM、EPROM、EEPROM、非易失性存储器(NANDFLASH)、固态硬盘(SSD))等。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (9)

1.一种漏洞挖掘方法,其特征在于,包括:
确定内核驱动过程中的目标点及竞争点,所述目标点包括内核驱动程序中的内存释放操作和内存访存操作,所述竞争点包括目标点对应的驱动接口到目标点之间的共享变量读写操作;
基于第一数量的测试用例对内核驱动过程进行模糊测试,确定各个测试用例分别到达目标点的反馈距离、分别触发漏洞的约束距离,以及确定各个竞争点形成的线程交错路径;
根据所述反馈距离、所述约束距离和所述线程交错路径,从第一数量的测试用例中筛选得到第二数量的测试用例;
基于第二数量的测试用例对内核驱动过程进行模糊测试,记录触发的漏洞信息;
所述确定各个测试用例分别到达目标点的反馈距离,包括:
基于内核驱动过程构建支配树,所述支配树由多个支配点相互关联构成,所述支配点为内核驱动程序中的操作指令,所述支配点包括所述目标点;
计算所述测试用例执行时处于的支配点到目标点之间的反馈距离,所述反馈距离为所述支配树中点与点之间的路径长度。
2.根据权利要求1所述的漏洞挖掘方法,其特征在于,所述确定各个测试用例分别触发漏洞的约束距离,包括:
检测测试用例是否满足预设的约束条件,所述约束条件包括:触发内存释放操作和内存访存操作;释放操作和访存操作的对象是同一内存;访存操作在释放操作之后;
统计测试用例满足约束条件的数目,基于所述数目确定测试用例触发漏洞的约束距离,所述约束距离为对应于所述数目的规则数值。
3.根据权利要求2所述的漏洞挖掘方法,其特征在于,所述确定各个竞争点形成的线程交错路径,包括:
遍历内核驱动过程中的线程交错空间,将线程间“写-读”交错边与变量值发生变化的“读-写”交错边进行组合,形成一条线程交错路径。
4.根据权利要求3所述的漏洞挖掘方法,其特征在于,根据所述反馈距离、所述约束距离和所述线程交错路径,从第一数量的测试用例中筛选得到第二数量的测试用例,包括:
存储反馈距离满足第一数值条件的测试用例;
存储约束距离满足第二数值条件的测试用例;
存储线程交错路径的数目满足第三数值条件的测试用例。
5.根据权利要求1或4所述的漏洞挖掘方法,其特征在于,所述确定内核驱动过程中的目标点,包括:
对内核驱动过程中的内存释放操作和内存访存操作进行插桩,对得到的驱动执行轨迹进行分析,将内存释放和内存访存指向同一对象的指令对,识别为目标点。
6.根据权利要求5所述的漏洞挖掘方法,其特征在于,所述确定内核驱动过程中的竞争点,包括:
基于内核驱动程序构建函数调用图,所述函数调用图包括内核驱动程序中各操作与驱动接口的对应关系;
根据所述函数调用图得到目标点所属的驱动接口,获取所述驱动接口到目标点路径上所有的共享变量读写操作,然后获取所述驱动接口到目标点路径上所有的共享变量读操作,以及在所述驱动接口外的驱动接口中定位同一共享变量的写操作,将共享变量的读写操作对识别为竞争点。
7.一种漏洞挖掘装置,其特征在于,包括:
获取模块,用于确定内核驱动过程中的目标点及竞争点,所述目标点包括内核驱动程序中的内存释放操作和内存访存操作,所述竞争点包括目标点对应的驱动接口到目标点之间的共享变量读写操作;
确定模块,用于基于第一数量的测试用例对内核驱动过程进行模糊测试,确定各个测试用例分别到达目标点的反馈距离、分别触发漏洞的约束距离,以及确定各个竞争点形成的线程交错路径;
筛选模块,用于根据所述反馈距离、所述约束距离和所述线程交错路径,从第一数量的测试用例中筛选得到第二数量的测试用例;
记录模块,用于基于第二数量的测试用例对内核驱动过程进行模糊测试,记录触发的漏洞信息;
确定模块在确定各个测试用例分别到达目标点的反馈距离的处理过程中,具体用于:
基于内核驱动过程构建支配树,支配树由多个支配点相互关联构成,支配点为内核驱动程序中的操作指令,支配点包括目标点;
计算测试用例执行时处于的支配点到目标点之间的反馈距离,反馈距离为支配树中点与点之间的路径长度。
8.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6任一项所述的漏洞挖掘方法的步骤。
9.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述的漏洞挖掘方法的步骤。
CN202310641080.8A 2023-06-01 2023-06-01 漏洞挖掘方法、装置、电子设备及存储介质 Active CN116881919B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310641080.8A CN116881919B (zh) 2023-06-01 2023-06-01 漏洞挖掘方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310641080.8A CN116881919B (zh) 2023-06-01 2023-06-01 漏洞挖掘方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN116881919A CN116881919A (zh) 2023-10-13
CN116881919B true CN116881919B (zh) 2024-04-19

Family

ID=88266906

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310641080.8A Active CN116881919B (zh) 2023-06-01 2023-06-01 漏洞挖掘方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN116881919B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111797405A (zh) * 2020-07-01 2020-10-20 北京华昱卓程软件有限公司 一种序列导向的混合模糊测试方法及装置
CN114661578A (zh) * 2022-01-26 2022-06-24 天津大学 基于支配点覆盖的导向式灰盒模糊测试方法及装置
CN115292206A (zh) * 2022-10-08 2022-11-04 西安深信科创信息技术有限公司 软件漏洞检测方法、装置、电子设备及存储介质
CN116069656A (zh) * 2023-02-20 2023-05-05 清华大学深圳国际研究生院 一种以漏洞为导向的高效区域模糊测试方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10628281B2 (en) * 2018-05-24 2020-04-21 Fujitsu Limited Concurrency vulnerability detection

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111797405A (zh) * 2020-07-01 2020-10-20 北京华昱卓程软件有限公司 一种序列导向的混合模糊测试方法及装置
CN114661578A (zh) * 2022-01-26 2022-06-24 天津大学 基于支配点覆盖的导向式灰盒模糊测试方法及装置
CN115292206A (zh) * 2022-10-08 2022-11-04 西安深信科创信息技术有限公司 软件漏洞检测方法、装置、电子设备及存储介质
CN116069656A (zh) * 2023-02-20 2023-05-05 清华大学深圳国际研究生院 一种以漏洞为导向的高效区域模糊测试方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
二进制程序中的use-after-free漏洞检测技术;韩心慧;魏爽;叶佳奕;张超;叶志远;;清华大学学报(自然科学版);20171015(10);全文 *

Also Published As

Publication number Publication date
CN116881919A (zh) 2023-10-13

Similar Documents

Publication Publication Date Title
Wang et al. Revery: From proof-of-concept to exploitable
Xu et al. Krace: Data race fuzzing for kernel file systems
US8839203B2 (en) Code coverage-based taint perimeter detection
US8185875B2 (en) Fast and accurate static data-race detection for concurrent programs
US8056059B2 (en) Using cross-entropy to test executable logic code
Dean et al. Perfcompass: Online performance anomaly fault localization and inference in infrastructure-as-a-service clouds
CN109635568B (zh) 一种基于静态分析和模糊测试相结合的并发漏洞检测方法
US11586534B2 (en) Identifying flaky tests
CN114428733A (zh) 基于静态程序分析与模糊测试的内核数据竞争检测方法
US11249888B1 (en) System and method for generating counterexample tests of incidental invariants
CN109885489B (zh) 驱动程序中数据竞争检测方法及装置
Chiang et al. Formal analysis of GPU programs with atomics via conflict-directed delay-bounding
CN109522207B (zh) 一种基于约束求解的原子集合序列化违背探测方法
CN110059014B (zh) 一种并发程序数据竞争指令级定位方法
Fiedor et al. Advances in noise‐based testing of concurrent software
US11163674B1 (en) System and method for identifying a faulty component in a spectrum ambiguity group
CN116881919B (zh) 漏洞挖掘方法、装置、电子设备及存储介质
Xu et al. PVcon: localizing hidden concurrency errors with prediction and verification
De Goër et al. Now you see me: Real-time dynamic function call detection
Yuan et al. DDRace: finding concurrency UAF vulnerabilities in Linux drivers with directed fuzzing
Fiedor et al. Advances in the ANaConDA framework for dynamic analysis and testing of concurrent C/C++ programs
CN109726115B (zh) 一种基于Intel处理器跟踪的反调试自动绕过方法
Xin et al. An automation-assisted empirical study on lock usage for concurrent programs
US20120185830A1 (en) Software probe minimization
Jannesari et al. Automatic generation of unit tests for correlated variables in parallel programs

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant