CN116541846A - 复合式Android平台原生程序动态漏洞挖掘系统 - Google Patents
复合式Android平台原生程序动态漏洞挖掘系统 Download PDFInfo
- Publication number
- CN116541846A CN116541846A CN202310461237.9A CN202310461237A CN116541846A CN 116541846 A CN116541846 A CN 116541846A CN 202310461237 A CN202310461237 A CN 202310461237A CN 116541846 A CN116541846 A CN 116541846A
- Authority
- CN
- China
- Prior art keywords
- test
- test case
- module
- program
- fuzzy
- 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.)
- Pending
Links
- 239000002131 composite material Substances 0.000 title claims abstract description 17
- 238000005065 mining Methods 0.000 title description 11
- 238000012360 testing method Methods 0.000 claims abstract description 164
- 238000000034 method Methods 0.000 claims abstract description 67
- 230000008569 process Effects 0.000 claims abstract description 41
- 230000004927 fusion Effects 0.000 claims abstract description 26
- 238000005457 optimization Methods 0.000 claims abstract description 18
- 230000035772 mutation Effects 0.000 claims abstract description 13
- 238000004422 calculation algorithm Methods 0.000 claims description 14
- 238000004458 analytical method Methods 0.000 claims description 11
- 238000004088 simulation Methods 0.000 claims description 7
- 230000003068 static effect Effects 0.000 claims description 7
- 238000010801 machine learning Methods 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 5
- GPRLSGONYQIRFK-MNYXATJNSA-N triton Chemical compound [3H+] GPRLSGONYQIRFK-MNYXATJNSA-N 0.000 claims description 5
- 238000013528 artificial neural network Methods 0.000 claims description 3
- 230000008859 change Effects 0.000 claims description 3
- 238000003066 decision tree Methods 0.000 claims description 3
- 238000002372 labelling Methods 0.000 claims description 3
- 239000002243 precursor Substances 0.000 claims description 3
- 238000007637 random forest analysis Methods 0.000 claims description 3
- 238000012706 support-vector machine Methods 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 claims description 2
- 230000002068 genetic effect Effects 0.000 description 6
- 238000010998 test method Methods 0.000 description 6
- 238000011160 research Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000035515 penetration Effects 0.000 description 2
- 241000700605 Viruses Species 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000009412 basement excavation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 239000007943 implant Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种复合式Android平台原生程序动态漏洞挖掘系统,包括模糊测试模块、信息融合调度模块和符号执行模块;模糊测试模块,用于设置测试用例池;从测试用例池中选取测试用例进行测试,当测试用例发生变异时,进行覆盖率信息的跟踪,当覆盖率提升时,添加至测试用例池;符号执行模块,用于进行符号执行并收集路径约束,当执行到未覆盖分支时进行约束优化求解生成新的测试用例并添加至测试用例池;信息融合调度模块,用于将信息融合为属性图;基于属性图的覆盖情况,对模糊测试模块的变异过程进行引导,以覆盖指定控制流节点;当模糊测试模块无法覆盖时,则进行测试用例选取优化,并切换至符号执行模块进行定向覆盖。
Description
技术领域
本发明涉及信息安全技术领域,具体涉及一种复合式Android平台原生程序动态漏洞挖掘系统。
背景技术
Android平台上的软件多种多样,有时候仅仅通过Android平台提供的SDK使用Java来编写应用可能满足不了一些特殊的功能性能要求,比如计算密集型算法实现、代码版权保护等。为此,一般通过Android平台NDK来将原生C和C++代码与图形界面相结合,将一些性能要求高、核心功能模块等封装到原生代码模块中。但是在进行Android平台原生程序开发时,由于使用C和C++这类不安全编程语言的原因,且开发者一般将程序开发重点放在如何设计推广新的应用软件上,对安全的防范往往做得不够及时或者不够完美,其安全漏洞挖掘难度要比普通应用程序漏洞挖掘困难许多,恶意程序的设计者于是便利用不完善的安全防范,研发恶意程序,利用这些恶意程序,窃取用户的个人信息,占用带宽、消耗网络资源、传播病毒、植入远程控制木马等。因此,Android平台原生程序的安全性相关研究获得广泛关注,一直以来都是国内外安全研究领域的热点问题。
Android平台原生程序漏洞是软件的一组特殊属性,且具有潜在性、可触发性、条件性的特点,挖掘安全漏洞通常非常困难。虽然Android平台原生程序漏洞广泛存在,但并不是立刻就暴露出来,而是随着用户的使用或黑客的分析而逐渐暴露出来,因此具备典型的潜在性特点。Android平台原生程序漏洞的可触发性是指一定存在一条执行路径会引发安全漏洞,使其通过一定的现象表现出来,比如异常结束、功能错乱等。Android平台原生程序漏洞的条件性是指触发安全漏洞的路径一般对应于不同的输入条件。可触发性表明Android平台原生程序漏洞是可以被挖掘出来的,而条件性又表明挖掘Android平台原生程序漏洞是困难的,因为目前还没有高效的方法用于解决输入条件的求取问题。由于Android平台原生程序漏洞的这些特点,Android平台原生程序漏洞挖掘通常综合利用静态程序分析、动态测试等方法找出未知安全漏洞,其难点在于如何保证挖掘结果的准确性、完备性和高效性。
动态渗透测试是使用自动化工具或者人工的方法模拟黑客的输入,对应用系统进行攻击性测试,从中找出运行时刻所存在的安全漏洞。这种测试的特点就是真实有效,一般找出来的问题都是正确的,也是较为严重的。但渗透测试一个致命的缺点是模拟的测试数据只能到达有限的测试点,覆盖率很低。在动态测试技术中,相关代码被执行是软件漏洞触发的必要条件,因而业界广泛地采用“通过提高测试覆盖率的方式,提高发现漏洞可能性”策略,指导漏洞挖掘。从实际效果上看,这种启发式策略具有较好的测试效果,许多基于该策略的漏洞挖掘工具,成功地在真实软件上挖出大量漏洞。因此,如何有效地提高测试覆盖率,是提升漏洞挖掘能力的关键,特别是对模糊测试技术而言,测试覆盖率对漏洞挖掘的结果具有重要影响。为了提高模糊测试引擎的测试覆盖率,研究者陆续提了出许多改进方案,但测试过程中仍然存在大量无法突破的路径约束,以至于测试覆盖率提升受限,无法对软件进行深度测试。
现有的漏洞挖掘方案通常针对的是普通的基于SDK使用Java编写的程序,且一般仅考虑采用一种单一的动态测试方法进行测试。如专利号CN107832619B,其动态分析模块依据静态分析的结果构造模糊测试用例数据,然后对反编译后的Smali文件进插桩,然后运行应用程序,进行模糊测试,对测试覆盖率缺乏考虑。再如专利CN108268371B,其设计了一种结合应用程序逆向符号执行和模糊测试的Android应用的智能模糊测试方法,但该方法仅考虑通过符号执行辅助模糊测试,没有考虑模糊测试和符号执行两种方法之间的信息融合和交互问题,测试覆盖率提升受到影响,且该方法也只支持测试普通的基于SDK使用Java编写的应用程序,对Android平台原生程序的测试还缺乏支持。
发明内容
本发明提出了一种复合式Android平台原生程序动态漏洞挖掘系统,以解决测试覆盖率缺乏考虑以及没有考虑模糊测试和符号执行两种方法之间的信息融合和交互的技术问题。
为解决上述技术问题,本发明提供了一种复合式Android平台原生程序动态漏洞挖掘系统,其特殊之处在于,包括模糊测试模块、信息融合调度模块和符号执行模块;
所述模糊测试模块,用于设置测试用例池;从测试用例池中选取测试用例进行测试,当测试用例发生变异时,进行覆盖率信息的跟踪,当覆盖率提升时,则将变异后的测试用例添加至测试用例池;
所述符号执行模块,用于进行符号执行并收集路径约束,当执行到未覆盖分支时进行约束优化求解生成新的测试用例并添加至所述测试用例池;
所述信息融合调度模块,用于将目标Android程序的静态信息和运行时信息进行融合为属性图EIMap={(e,hit,input,input_offset)|input∈T,e∈G},e表示属性图的边,hit表示被击中的次数,input表示输入用例,input_offset表示与边相关的关键字节的偏移量;基于属性图的覆盖情况,对所述模糊测试模块的变异过程进行引导,以覆盖指定控制流节点;当所述模糊测试模块无法覆盖时,则进行测试用例选取优化,并切换至所述符号执行模块进行定向覆盖。
优选地,所述信息融合调度模块对模糊测试模块的变异过程进行引导的方法包括以下步骤:
步骤S11:对目标Android程序进行动态插桩,在程序运行过程中收集比较指令的操作数信息;
步骤S12:对当前测试用例的关键字节进行标记,标记出字节影响的比较指令;
步骤S13:构造关键字节集合S={(ti,ci,offsets)|ti∈T,ci∈C},T表示用例集合,C表示比较指令集合,offsets表示字节位置偏移量;
步骤S14:通过目标比较指令操作数信息的变化来计算变异过程中个体的适应度值,以引导变异过程。
优选地,步骤S14中所述适应度值的计算方法为:获取比较指令操作数信息,取得比较指令两个操作数的值,并将两个操作数的差值的绝对值进行累加,累加结果作为的适应度值。
优选地,所述符号执行模块进行符号执行的方法包括以下步骤:
步骤S21:加载对目标Android程序,对所有代码添加执行前的回调插桩,以进行模拟执行;
步骤S22:通过回调插桩中判断是否需要进行符号执行,当需要时则执行步骤S23,不需要时则不进行处理;
步骤S23:对需要进行符号执行的程序,构造动态二进制分析框架triton实例,以进行符号执行。
优选地,需要进行符号执行的程序包括:只有符号数据且为未覆盖的分支集合。
优选地,所述符号执行模块进行约束优化求解的方法包括:
动态地构造全局控制流图,并在运行时自动检测循环结构,当覆盖的循环数超过设定阈值时,则直接跳过循环结构的约束收集;
如果当前分支由于约束冲突而不可解,则尝试遍历所有约束并逐次剔除前一个冲突约束,然后重新求解路径约束。
优选地,所述信息融合调度模块判断模糊测试模块无法覆盖的方法包括:
步骤S31:获取边Eik的前驱节点的击中次数Hi;
步骤S32:当所述击中次数Hi大于预设门限T,而变Eik的击中次数Hik为0时,则判定为所述模糊测试模块无法覆盖。
优选地,所述信息融合调度模块进行测试用例选取优化的方法包括以下步骤:
步骤S41:获取变Eik的起始节点Bi的支配节点Bi-dom;
步骤S42:获取支配节点Bi-dom的可到达路径集合IBi-dom;
步骤S43:给所述可到达路径集合IBi-dom打上可解性标签;
步骤S44:通过机器学习算法进行可解性预测,得到可解概率最大的测试用例。
优选地,所述机器学习算法包括:决策树、随机森林、支持向量机和神经网络。
本发明的有益效果至少包括:设计复合式的动态漏洞挖掘方法,智能调度输入空间与路径空间处理引擎,最大限度地提升测试过程的覆盖率,达到深度漏洞挖掘的目的。
通过设计一种未覆盖分支导向策略,在将静态分析和运行时信息相结合的基础上,构造一个未覆盖且受输入影响的分支的动态集合,以及能够到达相关兄弟分支的对应测试用例,然后选择最佳的输入测试用例来驱动具体符号执行,并生成可到达未覆盖分支的新测试用例,快速发现更多安全漏洞,提高具体符号执行对混合模糊测试的贡献度,提高混合测试方法的整体测试效率。
此外,当前的Android平台应用漏洞挖掘方法通常只能分析基于SDK使用Java编写的程序,缺乏直接支持对Android平台原生程序进行漏洞挖掘的方法,为此本发明基于全系统模拟执行的方式设计对Android平台原生程序的漏洞挖掘方法,通过模糊测试和符号执行相结合来实现Android平台原生程序漏洞的深度挖掘,提供了一种执行方案。
附图说明
图1为本发明系统的整体示意图;
图2为本发明实施例模糊测试模块的执行流程示意图;
图3为本发明实施例采用QiLing进行模糊测试的流程示意图;
图4为本发明实施例变异过程示意图;
图5为本发明实施例符号执行模块的执行流程示意图。
具体实施方式
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明的保护范围。
如图1所示,本发明实施例提供了一种复合式Android平台原生程序动态漏洞挖掘系统,包括模糊测试模块、信息融合调度模块和符号执行模块。
具体地,本发明的总体流程为:首先利用静态分析引擎对目标原生程序信息进行分析处理,得到全局信息;然后基于AFL框架进行常规模糊测试,并通过增量式信息融合模块动态更新各类综合信息;再基于融合信息使用未命中分支集合来引导具体的执行过程,选用测试用例驱动基于全系统模拟的符号执行,并通过约束求解生成新的测试用例补充到模糊测试用例池,提高测试覆盖率。
模糊测试模块,用于设置测试用例池;从测试用例池中选取测试用例进行测试,当测试用例发生变异时,进行覆盖率信息的跟踪,当覆盖率提升时,则将变异后的测试用例添加至测试用例池。
要实现对Android平台原生程序的动态测试,可以基于物理真机实现目标程序的加载运行,也可以基于模拟器实现对目标程序的加载运行,但是这两种方法在目标程序执行过程中,要实现对目标原生程序的动态监控比较困难,且难以利用现有成熟的模糊测试框架。
具体地,如图2所示,本发明实施例中采用二进制分析框架Qiling实现Android平台原生程序的模拟执行,然后进行模糊测试插桩,从而实现与现有模糊测试框架AFL的结合,通过AFL驱动整个模糊测试过程,此外本发明还提出依托增量信息融合进行关键字节标记和测试用例的优化搜索,其模式测试过程如图3所示。
由于基于分支覆盖信息反馈已被实践证明是一种性价比较高的测试方法,因而本发明实施例在现有模糊测试框架的基础上,在增量信息融合过程中,拓展收集比较指令操作数信息,然后将遗传算法结合到测试用例变异生成过程,即图2中灰色标记部分,实现了一种基于搜索的用例生成方法。在信息融合模块的基础上,算法的具体搜索过程是:首先通过对目标Android平台原生程序进行动态插桩,在程序运行过程中收集比较指令的操作数信息;其次对当前输入用例的关键字节进行标记,即标记出哪些输入字节影响哪些比较指令,构造关键字节集合S={(ti,ci,offsets)|ti∈T,ci∈C},其中T为用例集合,C为比较指令集合,offsets为字节位置偏移量,从而记录下所有测试用例对不同比较指令的影响关系;然后,基于关键字节信息在一个相对较小的输入空间中,采用遗传算法启发式搜索新的测试用例,搜索过程中个体的适应度值使用目标比较指令操作数信息的变化来表征;最后,当搜索过程中发现能覆盖新分支的测试用例时,将其添加到测试用例池。
具体地,如图4所示,搜索过程就是将所有比较指令操作数趋于相等作为优化搜索的目标,而将由于操作数不相等导致的偏差的和作为遗传算法的适应度值,对照经典的遗传算法模型,此处不同的测试用例即是算法中的个体,针对某个未通过的比较指令,需要将对应标记的关键字节进行0/1基因编码;然后为了获得个体的适应度值,需要在执行过程中动态获取对应比较指令操作数信息,取得比较指令两个操作数的值,并将两个操作数的差值的绝对值进行累加,累加结果作为当前个体的适应度值;根据适应度值,再结合经典的遗传算法过程进行多轮迭代,最终搜索出最优测试用例。
动态符号执行是一种路径敏感分析技术,但是传统的符号执行方法不考虑内部代码与驱动输入之间的关系,试图测试目标软件的完整性,导致状态空间爆炸和约束求解困难等问题,无法测试真正的大型软件。本发明实施例提出以增量融合模块为基础,构造未覆盖的分支集合,将符号执行控制在未覆盖的控制流节点中,实现符号执行过程的规模可控。
本发明实施例中,符号执行模块用于进行符号执行并收集路径约束,当执行到未覆盖分支时进行约束优化求解生成新的测试用例并添加至所述测试用例池。
具体地,本发明实施例采用动态二进制分析框架Triton的基础上实现具体符号执行。首先,实现一个适配器插件来获取驱动的测试用例,通过Qiling平台完成程序加载、初始化等重复的任务,然后遇到符号数据时同步状态信息到Triton引擎并进行符号执行。然后,实现一个测试用例生成插件来执行约束修剪和一致性求解。其次,实现一个带有漏洞模型的检测插件来挖掘潜在的安全漏洞。最后,将整个符号执行引擎进行模块化封装,以便通过一致的方式进行调度。
基于Qiling框架模拟执行的符号执行设计如图5所示。首先基于Qiling框架加载程序,对所有代码添加执行前的回调插桩,然后进行模拟执行,并在回调插桩中判断是否需要进行符号执行,本发明实施例中只有处理符号数据时才切换到符号执行,且只处理未覆盖分支集合,从而有效控制符号执行过程的规模。
当需要进行符号执行时,构造triton实例并将Qiling实例的执行状态同步过来,然后进行符号执行并收集路径约束,当执行到未覆盖分支时进行约束优化和求解生成新的测试用例并存入用例池,配合模糊测试模块进行验证,更新未覆盖分支集合。
对于符号执行过程,本发明实施例进行优化求解的过程包括:在选择一个驱动输入之后,结合信息融合结果只允许在指定的未覆盖分支之后进行状态分化操作;为了处理产生多个约束的循环,通过动态地构造属性图,并在运行时自动检测循环结构,当覆盖的循环数超过阈值时,选择直接跳过循环结构的约束收集,从而降低最终求解的约束复杂度;如果当前分支由于约束冲突而不可解,则尝试遍历所有约束并逐次剔除前一个冲突约束,然后重新求解路径约束,生成测试用例存入用例池,然后交由模糊测试模块进行验证。
信息融合调度模块,用于将目标Android程序的静态信息和运行时信息进行融合为属性图EIMap={(e,hit,input,input_offset)|input∈T,e∈G},e表示属性图的边,hit表示被击中的次数,input表示输入用例,input_offset表示与边相关的关键字节的偏移量;基于属性图的覆盖情况,对模糊测试模块的变异过程进行引导,以覆盖指定控制流节点;当模糊测试模块无法覆盖时,则进行测试用例选取优化,并切换至符号执行模块进行定向覆盖。引导过程和优化过程在上述的模糊测试模块和符号执行模块已进行一定的说明。
具体地,在模糊测试模块变异策略优化方面,传统的测试方法虽然也采用覆盖率进行导向,然而其导向过程是无规划的定性导向,只要用例能触发新的控制流节点就认为输入用例有效,并加入用例池进行下一轮变异,从而路径发现效率低。本发明实施例以已有的程序语义为基础,根据当前已覆盖的控制流节点情况,动态确定下一个需要覆盖的控制流节点,并以该节点为目标引导模糊测试过程,然后根据增量信息融合获得的输入用例与控制流映射信息、关键字节信息、候选字典信息等,动态调整变异策略,更快生成能够覆盖指定控制流节点的输入用例。
在符号执行模块切换时机优化方面,一般的切换策略是:当模糊测试模块经过指定次数的变异后仍然没有发现新状态时,则启动符号执行引擎依次分析模糊测试生成的能够发现新状态的所有用例,效率较低。
本发明实施例所提出的根据增量信息融合结果,精准调度模块切换时机,通过实时监测属性图中每条边的覆盖情况,如果发现某一条边Eik的前驱节点被击中的次数Hi大于预设门限T而该边Eik的击中次数Hik仍然为0,则认为模糊测试引擎难于突破分支约束,从而切换到符号执行模块针对边Eik进行针对性的定向覆盖,快速生成能够覆盖边Eik的测试用例,参数T的具体取值可以根据测试目标的类型进行动态调整。
在用例选取优化方面,假设需要突破的边为Eik,当有N个测试用例都能到击中Eij却不能击中边Eik时,利用符号执行模块进行求解,这N个测试用例在基本块Bi处并不一定都可解,为了达到最优化的效果,避免无效的符号执行,就需要从N个测试用例中选取一个最大概率在基本块Bi处可解的用例,并驱动符号执行模块的分析过程,提高测试用例生成的效率。
具体地,包括以下步骤:
步骤S41:获取变Eik的起始节点Bi的支配节点Bi-dom;
步骤S42:获取支配节点Bi-dom的可到达路径集合IBi-dom;
步骤S43:给所述可到达路径集合IBi-dom打上可解性标签;
步骤S44:通过机器学习算法进行可解性预测,得到可解概率最大的测试用例。
本发明实施例中机器学习算法包括:决策树、随机森林、支持向量机和神经网络。
通过上述系统,填补了的Android平台原生程序漏洞挖掘方面研究的缺失。通过增量信息融合实现模糊测试和符号执行方法的智能调度,能够更好的发挥两种测试方法的优势,通过未覆盖分支集合来引导模糊测试和符号执行过程,生成的测试用例针对性更强,测试效率更高。同时具备很好的适用性,可以不依赖于真实设备、模拟器实现对Android平台原生程序的动态测试。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,仅表达了本发明的较佳实施例而已,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (9)
1.一种复合式Android平台原生程序动态漏洞挖掘系统,其特征在于:包括模糊测试模块、信息融合调度模块和符号执行模块;
所述模糊测试模块,用于设置测试用例池;从测试用例池中选取测试用例进行测试,当测试用例发生变异时,进行覆盖率信息的跟踪,当覆盖率提升时,则将变异后的测试用例添加至测试用例池;
所述符号执行模块,用于进行符号执行并收集路径约束,当执行到未覆盖分支时进行约束优化求解生成新的测试用例并添加至所述测试用例池;
所述信息融合调度模块,用于将目标Android程序的静态信息和运行时信息进行融合为属性图EIMap={(e,hit,input,input_offset)|input∈T,e∈G},e表示属性图的边,hit表示被击中的次数,input表示输入用例,input_offset表示与边相关的关键字节的偏移量;基于属性图的覆盖情况,对所述模糊测试模块的变异过程进行引导,以覆盖指定控制流节点;当所述模糊测试模块无法覆盖时,则进行测试用例选取优化,并切换至所述符号执行模块进行定向覆盖。
2.根据权利要求1所述的一种复合式Android平台原生程序动态漏洞挖掘系统,其特征在于:所述信息融合调度模块对模糊测试模块的变异过程进行引导的方法包括以下步骤:
步骤S11:对目标Android程序进行动态插桩,在程序运行过程中收集比较指令的操作数信息;
步骤S12:对当前测试用例的关键字节进行标记,标记出字节影响的比较指令;
步骤S13:构造关键字节集合S={(ti,ci,offsets)|ti∈T,ci∈C},T表示用例集合,C表示比较指令集合,offsets表示字节位置偏移量;
步骤S14:通过目标比较指令操作数信息的变化来计算变异过程中个体的适应度值,以引导变异过程。
3.根据权利要求2所述的一种复合式Android平台原生程序动态漏洞挖掘系统,其特征在于:步骤S14中所述适应度值的计算方法为:获取比较指令操作数信息,取得比较指令两个操作数的值,并将两个操作数的差值的绝对值进行累加,累加结果作为的适应度值。
4.根据权利要求1所述的一种复合式Android平台原生程序动态漏洞挖掘系统,其特征在于:所述符号执行模块进行符号执行的方法包括以下步骤:
步骤S21:加载对目标Android程序,对所有代码添加执行前的回调插桩,以进行模拟执行;
步骤S22:通过回调插桩中判断是否需要进行符号执行,当需要时则执行步骤S23,不需要时则不进行处理;
步骤S23:对需要进行符号执行的程序,构造动态二进制分析框架triton实例,以进行符号执行。
5.根据权利要求4所述的一种复合式Android平台原生程序动态漏洞挖掘系统,其特征在于:需要进行符号执行的程序包括:只有符号数据且为未覆盖的分支集合。
6.根据权利要求1所述的一种复合式Android平台原生程序动态漏洞挖掘系统,其特征在于:所述符号执行模块进行约束优化求解的方法包括:
动态地构造全局控制流图,并在运行时自动检测循环结构,当覆盖的循环数超过设定阈值时,则直接跳过循环结构的约束收集;
如果当前分支由于约束冲突而不可解,则尝试遍历所有约束并逐次剔除前一个冲突约束,然后重新求解路径约束。
7.根据权利要求1所述的一种复合式Android平台原生程序动态漏洞挖掘系统,其特征在于:所述信息融合调度模块判断模糊测试模块无法覆盖的方法包括:
步骤S31:获取边Eik的前驱节点的击中次数Hi;
步骤S32:当所述击中次数Hi大于预设门限T,而变Eik的击中次数Hik为0时,则判定为所述模糊测试模块无法覆盖。
8.根据权利要求1所述的一种复合式Android平台原生程序动态漏洞挖掘系统,其特征在于:所述信息融合调度模块进行测试用例选取优化的方法包括以下步骤:
步骤S41:获取变Eik的起始节点Bi的支配节点Bi-dom;
步骤S42:获取支配节点Bi-dom的可到达路径集合IBi-dom;
步骤S43:给所述可到达路径集合IBi-dom打上可解性标签;
步骤S44:通过机器学习算法进行可解性预测,得到可解概率最大的测试用例。
9.根据权利要求8所述的一种复合式Android平台原生程序动态漏洞挖掘系统,其特征在于:所述机器学习算法包括:决策树、随机森林、支持向量机和神经网络。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310461237.9A CN116541846A (zh) | 2023-04-26 | 2023-04-26 | 复合式Android平台原生程序动态漏洞挖掘系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310461237.9A CN116541846A (zh) | 2023-04-26 | 2023-04-26 | 复合式Android平台原生程序动态漏洞挖掘系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116541846A true CN116541846A (zh) | 2023-08-04 |
Family
ID=87446315
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310461237.9A Pending CN116541846A (zh) | 2023-04-26 | 2023-04-26 | 复合式Android平台原生程序动态漏洞挖掘系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116541846A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117873908A (zh) * | 2024-03-12 | 2024-04-12 | 中兴通讯股份有限公司 | 测试用例确定方法及装置 |
-
2023
- 2023-04-26 CN CN202310461237.9A patent/CN116541846A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117873908A (zh) * | 2024-03-12 | 2024-04-12 | 中兴通讯股份有限公司 | 测试用例确定方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109739755B (zh) | 一种基于程序追踪和混合执行的模糊测试系统 | |
Tian et al. | BVDetector: A program slice-based binary code vulnerability intelligent detection system | |
CN103116540B (zh) | 基于全局超级块支配图的动态符号执行方法 | |
Avancini et al. | Security testing of web applications: A search-based approach for cross-site scripting vulnerabilities | |
CN104598383A (zh) | 一种基于模式的动态漏洞挖掘集成系统和方法 | |
CN111177733B (zh) | 一种基于数据流分析的软件补丁检测方法及装置 | |
CN116541846A (zh) | 复合式Android平台原生程序动态漏洞挖掘系统 | |
CN106055479B (zh) | 一种基于强制执行的Android应用软件测试方法 | |
CN115794625A (zh) | 一种智能合约模糊测试的方法及系统 | |
CN111737697B (zh) | 一种基于原子化功能的安全扫描系统及扫描方法 | |
CN105426707A (zh) | 一种指令级密码算法识别方法和系统 | |
Dahl et al. | Stack-based buffer overflow detection using recurrent neural networks | |
CN106294136A (zh) | 并行程序运行期间性能变化的在线检测方法和系统 | |
CN112506564A (zh) | 一种用于建立控制流图的方法、系统和介质 | |
Akour et al. | Test case minimization using genetic algorithm: pilot study | |
Zhao et al. | A systematic review of fuzzing | |
Murphy et al. | The case for grammatical evolution in test generation | |
Piskachev et al. | SWAN_ASSIST: semi-automated detection of code-specific, security-relevant methods | |
Andarzian et al. | Compositional taint analysis of native codes for security vetting of android applications | |
Li et al. | Semantically find similar binary codes with mixed key instruction sequence | |
Anbunathan et al. | Basis path based test suite minimization using genetic algorithm | |
Dolog et al. | Navigation modelling in adaptive hypermedia | |
Zhang et al. | Machine Learning-based Fuzz Testing Techniques: A Survey | |
Bachwani et al. | Mojave: A recommendation system for software upgrades | |
Yan et al. | A survey of human-machine collaboration in fuzzing |
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 |