CN114780962A - 基于动态能量调控的Windows程序模糊测试方法及系统 - Google Patents

基于动态能量调控的Windows程序模糊测试方法及系统 Download PDF

Info

Publication number
CN114780962A
CN114780962A CN202210340402.0A CN202210340402A CN114780962A CN 114780962 A CN114780962 A CN 114780962A CN 202210340402 A CN202210340402 A CN 202210340402A CN 114780962 A CN114780962 A CN 114780962A
Authority
CN
China
Prior art keywords
program
seed
path
target
dynamic
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.)
Granted
Application number
CN202210340402.0A
Other languages
English (en)
Other versions
CN114780962B (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.)
Information Engineering University of PLA Strategic Support Force
Original Assignee
Information Engineering University of PLA Strategic Support Force
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 Information Engineering University of PLA Strategic Support Force filed Critical Information Engineering University of PLA Strategic Support Force
Priority to CN202210340402.0A priority Critical patent/CN114780962B/zh
Publication of CN114780962A publication Critical patent/CN114780962A/zh
Application granted granted Critical
Publication of CN114780962B publication Critical patent/CN114780962B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开一种基于动态能量调控的Windows程序模糊测试方法及系统,包括:步骤A、轻量化动态插桩;步骤B、路径风险判断;步骤C、动态能量调控。本发明从动态二进制插桩的工作机制入手,以静态污点分析和目标最优化模型为基础,有效解决了传统Windows模糊测试误报率和漏报率较高,运行开销大的缺点。并且,其目标覆盖率与崩溃发现数量均有明显提升,并且发现了新的未公开漏洞,具有良好的适用性。

Description

基于动态能量调控的Windows程序模糊测试方法及系统
技术领域
本发明属于网络安全技术领域,尤其涉及一种基于动态能量调控的Windows程序模糊测试方法及系统。
背景技术
软件漏洞作为计算机系统的主要威胁不仅个人甚至国家层面也会因其不正当的利用而面临危急的态势,2021年国家信息安全漏洞共享平台(CNVD)收录安全漏洞数量共计20704个,其中软件应用程序漏洞占到了总量的47.9%,位列影响对象分类统计的第一。软件漏洞一旦被利用,就可能导致获得计算机系统的额外权限,使攻击者能够在未授权的情况下访问或破坏系统,从而导致危害计算机系统安全。
虽然软件应用程序所分布的平台种类繁多,但其中Windows平台软件仍占据绝对的主导地位。截至2020年2月Windows平台占据了所有搭载系统设备的73%,目前流行的iOS和Android两个操作系统合计仅占5%的份额,Windows平台由于其庞大的用户数量,软件漏洞危害面的广度以及潜在风险程度均远远超过其他的操作系统平台。
而与这一情况截然相反的是,近年来迅猛发展的漏洞挖掘技术与学术研究,如模糊测试等关注的主流目标对象仍是类Unix的OS系统,主要原因是Windows平台下覆盖率引导的模糊测试需要在闭源二进制程序上进行,执行过程缓慢,漏洞识别的误报率和漏报率均较高。因此,提出一种高效的Windows平台模糊测试工具是当今信息安全领域的亟待解决的问题之一。
发明内容
本发明针对传统Windows模糊测试误报率和漏报率较高,运行开销大的问题,提出一种基于动态能量调控的Windows程序模糊测试方法及系统,其可以针对无源码二进制进行轻量化动态插桩,并持续监控输入文件状态信息来执导模糊测试中的能量分配过程,以提高运行效率。
为了实现上述目的,本发明采用以下技术方案:
本发明一方面提出一种基于动态能量调控的Windows程序模糊测试方法,包括:
步骤A、轻量化动态插桩;包括:
执行目标应用程序,使用TinyInst对其进行轻量化插桩,并实时记录运行过程中反馈的覆盖率与基本块信息;
步骤B、路径风险判断;包括:
对目标应用程序利用二进制静态分析工具进行程序控制流图的提取,并针对敏感函数进行位置匹配;
对匹配的敏感函数,利用污点分析进行筛选,仅选择受可控变量影响的敏感函数作为目标点位;
将选择的敏感函数目标点作为基准,依据距离远近和执行的概率对目标程序中基本块进行动静结合的风险值判定;
步骤C、动态能量调控;包括:
将输入的种子文件依据风险值不同,划分为Fast、Normal、Slow三种状态,并依据最优化数学模型对其进行排序;
对不同状态的输入种子,分别设置对应的动态能量计算的优化算法;
对进行能量赋值后的输入文件进行实时监控,针对有效性过低的输入进行截断操作。
进一步地,所述步骤A包括:
目标程序开始运行,待加载到目标进程中,此时modul.dll所处空间为可执行内存,TinyInst将目标应用程序的可执行代码复制到Tinylnst进程Moduleinfo.AddressRange.data中以加快后续访问速度,同时将Target process中原有的可执行内存空间标记为不可执行内存;
调试器在TinyInst与目标进程中为待插桩的模块代码重新申请两个缓冲区,分别命名为instrumented_code_local与instrumented_code_remote,此时若程序RIP寄存器指针执行到目标进程中的module时将会导致异常,因为试图执行不可执行的内存;
当Tinylnst进程捕获到RIP寄存器指针异常访问时,将劫持原有的控制流至自进程instrumented_code_local内,并按照预设插桩规则开始重写从异常地址开始的汇编代码,重写完成后将插桩代码转移至目标进程缓冲区instrumented_code_remote中,以待运行;
Tinylnst进程释放之前捕获的异常,并更改之前被劫持的异常线程RIP寄存器,将其重新指向目标进程instrumented_code_remote中已插桩的代码,模糊测试引擎由此开始统计基本块相关覆盖率。
进一步地,所述步骤B包括:
利用静态分析工具对敏感函数进行定位;
利用污点分析方法对被检测到的敏感函数进行进一步筛选,针对静态提取后的中间层代码表示,污点分析根据程序中的函数调用关系构建调用图,通过分析程序变量间的数据依赖关系来检测数据能否从污点源传播到污点汇聚点:
首先,将定位的敏感函数位置设为sink点,同时识别文件读取相关api函数OpenFile_*与ReadFile_*并将其输入设置为Source源;随后为输入变量添加布尔类型污染标签表示变量是否被污染,同时使用队列记录污染变量的信息,依据控制范围将其区分为不同级别;最终污染传播沿着程序路径的方向分析污点信息的流向,检查Source点处程序接收的变量是否会影响到Sink点处的敏感操作,若影响则定义该敏感函数所在source点是易受攻击的,由此进一步筛选出受可控变量影响敏感函数位置;
将程序的执行控制流映射为Markov链,在筛选出的敏感函数基本块基础上,依据其它基本块与敏感函数基本块的距离对基本块进一步进行赋值,所述距离指的是Markov模型中基本块间最短距离L:
L(b1,b2)=θ[L(b1,b2)-M]L(b1,b2)+Mθ[M-L(b1,b2)] (2)
其中L(b1,b2)表示基本块b1和b2间的最短距离,M为截断阈值,当距离超过阈值M时将默认该路径可达性为0,并将路径距离设为最大值M,θ(x)为对截断判定的跃阶函数;
按照下式对基本块进行风险值计算:
Figure BDA0003578936460000031
其中Weight(bα)表示基本块bα在控制流中的风险程度,λ为常数,Vulbβ表示敏感函数在二进制程序中所在的基本块位置;
按照下式对种子执行路径风险进行综合判断:
Figure BDA0003578936460000041
其中seed.risk表示种子执行路径风险值,weight(bi)表示基本块在控制流中的风险程度,k为常量,
Figure BDA0003578936460000042
表示自bi到bj路径path(bi,bj)的概率、即为转移概率。
进一步地,所述步骤C包括:
依据风险值seed.risk与路径信息将种子文件定义为Fast、Normal、Slow三种状态,并以此对种子进行标签分类;
利用多目标优化模型根据不同的状态构造不同的目标函数进行求解:
Figure BDA0003578936460000043
其中
Figure BDA0003578936460000044
表示种子执行后所覆盖所有基本块数量和,Mseed表示种子进行变异后产生的测试用例数量,Trun表示单次种子运行时间,Sizeseed表示种子自身的文件大小;
对于队列T中的任一输入文件s′,首先设置αi为原始能量分配函数assignEnergy的值,若选取的种子为Fast状态,则s.energy在覆盖率反馈过程中保持恒定常数αi,以进行快速路经探索;若其切换为Normal状态,则能量分配时利用路径执行的频率信息进行调控,执行频率越小分配能量越高;对于处于Slow状态的种子,对于变异次数少执行频率低的输入赋予高能量,促使种子充分变异;
在种子赋能后的执行过程中,按照如下方式计算种子有效性eff,当种子有效性大于或等于阈值μthreshold时快速执行;当有效性值小于阈值时采取截断措施,对该输入文件进行跳过处理:
Figure BDA0003578936460000045
其中Num0表示在运行前种子文件的原始覆盖BB块纵坐标,
Figure BDA0003578936460000046
表示路径pathi所执行的次数。
进一步地,还包括:
循环执行步骤A至步骤C的模糊测试过程,直至被用户中断。
本发明另一方面还提出一种基于动态能量调控的Windows程序模糊测试系统,包括:
轻量化动态插桩模块,用于进行轻量化动态插桩;包括:
执行目标应用程序,使用TinyInst调试器对其进行轻量化插桩,并实时记录运行过程中反馈的覆盖率与基本块信息;
路径风险判断模块,用于进行路径风险判断;包括:
对目标应用程序利用二进制静态分析工具进行程序控制流图的提取,并针对敏感函数进行位置匹配;
对匹配的敏感函数,利用污点分析进行筛选,仅选择受可控变量影响的敏感函数作为目标点位;
将选择的敏感函数目标点作为基准,依据距离远近和执行的概率对目标程序中基本块进行动静结合的风险值判定;
动态能量调控模块,用于进行动态能量调控;包括:
将输入的种子文件依据风险值不同,划分为Fast、Normal、Slow三种状态,并依据最优化数学模型对其进行排序;
对不同状态的输入种子,分别设置对应的动态能量计算的优化算法;
对进行能量赋值后的输入文件进行实时监控,针对有效性过低的输入进行截断操作。
进一步地,所述轻量化动态插桩模块具体用于:
目标程序开始运行,待加载到目标进程中,此时modul.dll所处空间为可执行内存,TinyInst将目标应用程序的可执行代码复制到Tinylnst进程Moduleinfo.AddressRange.data中以加快后续访问速度,同时将Target process中原有的可执行内存空间标记为不可执行内存;
调试器在TinyInst与目标进程中为待插桩的模块代码重新申请两个缓冲区,分别命名为instrumented_code_local与instrumented_code_remote,此时若程序RIP寄存器指针执行到目标进程中的module时将会导致异常,因为试图执行不可执行的内存;
当Tinylnst进程捕获到RIP寄存器指针异常访问时,将劫持原有的控制流至自进程instrumented_code_local内,并按照预设插桩规则开始重写从异常地址开始的汇编代码,重写完成后将插桩代码转移至目标进程缓冲区instrumented_code_remote中,以待运行;
Tinylnst进程释放之前捕获的异常,并更改之前被劫持的异常线程RIP寄存器,将其重新指向目标进程instrumented_code_remote中已插桩的代码,模糊测试引擎由此开始统计基本块相关覆盖率。
进一步地,所述路径风险判断模块具体用于:
利用静态分析工具对敏感函数进行定位;
利用污点分析方法对被检测到的敏感函数进行进一步筛选,针对静态提取后的中间层代码表示,污点分析根据程序中的函数调用关系构建调用图,通过分析程序变量间的数据依赖关系来检测数据能否从污点源传播到污点汇聚点:
首先,将定位的敏感函数位置设为sink点,同时识别文件读取相关api函数OpenFile_*与ReadFile_*并将其输入设置为Source源;随后为输入变量添加布尔类型污染标签表示变量是否被污染,同时使用队列记录污染变量的信息,依据控制范围将其区分为不同级别;最终污染传播沿着程序路径的方向分析污点信息的流向,检查Source点处程序接收的变量是否会影响到Sink点处的敏感操作,若影响则定义该敏感函数所在source点是易受攻击的,由此进一步筛选出受可控变量影响敏感函数位置;
将程序的执行控制流映射为Markov链,在筛选出的敏感函数基本块基础上,依据其它基本块与敏感函数基本块的距离对基本块进一步进行赋值,所述距离指的是Markov模型中基本块间最短距离L:
L(b1,b2)=θ[L(b1,b2)-M]L(b1,b2)+Mθ[M-L(b1,b2)] (2)
其中L(b1,b2)表示基本块b1和b2间的最短距离,M为截断阈值,当距离超过阈值M时将默认该路径可达性为0,并将路径距离设为最大值M,θ(x)为对截断判定的跃阶函数;
按照下式对基本块进行风险值计算:
Figure BDA0003578936460000071
其中Weight(bα)表示基本块bα在控制流中的风险程度,λ为常数,Vulbβ表示敏感函数在二进制程序中所在的基本块位置;
按照下式对种子执行路径风险进行综合判断:
Figure BDA0003578936460000072
其中seed.risk表示种子执行路径风险值,weight(bi)表示基本块在控制流中的风险程度,k为常量,
Figure BDA0003578936460000073
表示自bi到bj路径path(bi,bj)的概率、即为转移概率。
进一步地,所述动态能量调控模块具体用于:
依据风险值seed.risk与路径信息将种子文件定义为Fast、Normal、Slow三种状态,并以此对种子进行标签分类;
利用多目标优化模型根据不同的状态构造不同的目标函数进行求解:
Figure BDA0003578936460000074
其中
Figure BDA0003578936460000075
表示种子执行后所覆盖所有基本块数量和,Mseed表示种子进行变异后产生的测试用例数量,Trun表示单次种子运行时间,Sizeseed表示种子自身的文件大小;
对于队列T中的任一输入文件s′,首先设置αi为原始能量分配函数assignEnergy的值,若选取的种子为Fast状态,则s.energy在覆盖率反馈过程中保持恒定常数αi,以进行快速路经探索;若其切换为Normal状态,则能量分配时利用路径执行的频率信息进行调控,执行频率越小分配能量越高;对于处于Slow状态的种子,对于变异次数少执行频率低的输入赋予高能量,促使种子充分变异;
在种子赋能后的执行过程中,按照如下方式计算种子有效性eff,当种子有效性大于或等于阈值μthreshold时快速执行;当有效性值小于阈值时采取截断措施,对该输入文件进行跳过处理:
Figure BDA0003578936460000081
其中Num0表示在运行前种子文件的原始覆盖BB块纵坐标,
Figure BDA0003578936460000082
表示路径pathi所执行的次数。
进一步地,还包括:
循环模块,用于循环执行轻量化动态插桩模块至动态能量调控模块的模糊测试过程,直至被用户中断。
与现有技术相比,本发明具有的有益效果:
本发明从动态二进制插桩的工作机制入手,以静态污点分析和目标最优化模型为基础,提出了一种基于动态能量调控的Windows程序模糊测试方法及系统,有效解决了传统Windows模糊测试误报率和漏报率较高,运行开销大的缺点。并且,其目标覆盖率与崩溃发现数量均有明显提升,并且发现了新的未公开漏洞,具有良好的适用性。
附图说明
图1为本发明实施例一种基于动态能量调控的Windows程序模糊测试方法的流程示意图;
图2为本发明实施例一种基于动态能量调控的Windows程序模糊测试方法的TinyInst动态插桩过程示意图;
图3为本发明实施例一种基于动态能量调控的Windows程序模糊测试方法的污点分析执行流程图;
图4为本发明实施例一种基于动态能量调控的Windows程序模糊测试方法的执行次数与覆盖基本块关系示意图;
图5为本发明实施例一种基于动态能量调控的Windows程序模糊测试系统的架构示意图。
具体实施方式
下面结合附图和具体的实施例对本发明做进一步的解释说明:
如图1所示,一种基于动态能量调控的Windows程序模糊测试方法,包括(1)轻量化动态插桩(2)路径风险判断(3)动态能量调控三个核心阶段。轻量化动态插桩针对目标程序进行覆盖路径的信息反馈,路径风险判断对不同基本块进行风险的赋值,动态能量调控阶段优化提高模糊测试的效率。该方法促使模糊测试过程在较少消耗情况下生成更多的高质量测试用例,使其能够在Windows平台上进行高效的模糊测试进程。
该方法具体包括下述步骤,其中步骤1)属于轻量化动态插桩阶段,步骤2)-步骤4)属于路径风险判断阶段,步骤5)-步骤7)属于动态能量调控阶段:
1)执行目标应用程序,使用TinyInst调试器对其进行轻量化插桩,并实时记录运行过程中反馈的覆盖率与基本块信息。
2)对步骤1)中的程序利用二进制静态分析工具进行程序控制流图(CFG)的提取,并针对敏感函数进行位置匹配;
3)对步骤2)匹配的敏感函数,进一步利用污点分析进行筛选,仅选择受可控变量影响的敏感函数作为目标点位;
4)将步骤3)敏感函数目标点作为基准,依据距离远近和执行的概率对目标程序中基本块进行动静结合的风险值判定。
5)将输入的种子文件依据步骤4)风险值等不同特性,划分为Fast、Normal、Slow三种状态,并依据最优化数学模型对其进行排序;
6)对步骤5)中不同状态的输入种子,分别设置对应的动态能量计算的优化算法。
7)对步骤6)进行能量赋值后的输入文件进行实时监控,针对有效性过低的输入进行截断操作。
8)模糊测试一直循环执行,直到被用户中断。
在轻量化动态插桩阶段中,TinyInst调试器对该过程进行优化。相较于DynamoRIO、PIN等动态模拟执行方式,TinyInst进程在本地直接运行,具有更短的进程启动时间,由于其重点关注指定的特定模块而不会模拟执行整个软件,因此其性能明显优于其他解决方案,详细过程如图2所示:
①目标程序开始运行,待插桩模块加载到目标进程中,此时该modul.dll所处空间为可执行内存。TinyInst对模块进行快速分析,并将可执行代码复制到Tinylnst进程Moduleinfo.AddressRange.data中以加快后续访问速度,同时将Target process中原有的可执行内存空间标记为不可执行内存。
②调试器在TinyInst与目标进程中为待插桩的模块代码重新申请两个缓冲区,分别命名为instrumented_code_local与instrumented_code_remote。此时若程序RIP寄存器指针执行到目标进程中的module时将会导致异常,因为试图执行不可执行的内存。
③当Tinylnst进程捕获到RIP寄存器指针异常访问时,将劫持原有的控制流至自进程instrumented_code_local内,并按照预设插桩规则开始重写从异常地址开始的汇编代码,重写完成后将插桩代码转移至目标进程缓冲区instrumented_code_remote中,以待运行。
④Tinylnst进程释放之前捕获的异常,并更改之前被劫持的异常线程RIP寄存器,将其重新指向目标进程instrumented_code_remote中已插桩的代码,模糊测试引擎由此开始统计基本块相关覆盖率。
在路径风险判断阶段中,首先利用静态分析工具对表1中常见敏感函数进行定位,但并非所有敏感函数均包含在主进程执行流内,若均设为目标将造成较大消耗,因此本发明利用污点分析方法对被检测到的敏感函数进行进一步筛选。
表1 常见敏感函数
Figure BDA0003578936460000101
针对静态提取后的中间层代码表示,污点分析根据程序中的函数调用关系构建调用图(call graph),通过分析程序变量间的数据依赖关系来检测数据能否从污点源传播到污点汇聚点,过程如图3所示。首先,将定位的敏感函数位置设为sink点,同时识别文件读取相关api函数OpenFile_*与ReadFile_*并将其输入设置为Source源;随后为输入变量添加布尔类型污染标签表示变量是否被污染,同时使用队列记录污染变量的信息,依据控制范围将其区分为不同级别;最终污染传播将沿着程序路径的方向分析污点信息的流向,检查Source点处程序接收的变量是否会影响到Sink点处的敏感操作,若影响则定义该敏感函数所在source点是易受攻击的,由此进一步筛选出受可控变量影响敏感函数位置。
本发明将程序的执行控制流映射为Markov链,而各个基本块之间的跳转则满足一阶Markov模型,表2列出了模型中出现的变量及其含义。
表2 变量表
Figure BDA0003578936460000111
同时,经过路径b0,b1,...,bn的路径可表示为path(b0,b1,...,bn),若种子ti变异操作后从基本块i执行到基本块j,则自i到j路径path(bi,bj)的概率即为转移概率
Figure BDA0003578936460000112
单一路径被执行的概率则可用路径中每个基本块概率之积进行表示为式1。
Figure BDA0003578936460000113
本发明在筛选出的敏感函数基本块基础上,依据其它基本块与敏感函数基本块的距离对基本块进一步进行赋值。此处对距离的定义为模型中基本块间最短距离L,计算方式如式2所示。
L(b1,b2)=θ[L(b1,b2)-M]L(b1,b2)+Mθ[M-L(b1,b2)] (2)
其中M为截断阈值,当距离超过阈值M时将默认该路径可达性为0,并将路径距离设为最大值M,θ(x)为对截断判定的跃阶函数。
对基本块进行风险值计算的方式如式3所示,其中λ为常数,具体分配原则为敏感点所在基本块赋值最高,距离敏感点位置越近的基本块将赋予更多的分值,值大小为其到其他所有敏感点的基本块距离反比之和。
Figure BDA0003578936460000114
其中Vulbβ表示敏感函数在二进制程序中所在的基本块位置。
结合以上内容对种子执行路径风险进行综合判断如式4所示,其中k为常量。该风险策略兼顾软件静态代码本身的语义信息与实际测试时的动态信息,其中静态权值源自软件执行过程中途经的基本块权值之和,表示为一条路径的敏感程度由其经过的基本块敏感程度决定;而动态权值则考虑了用例种子被执行覆盖敏感点的概率,对于测试中出现较少的执行路径将被赋予更高风险值,而这些出现比较少的执行路径往往会对应着更深的危险点。
Figure BDA0003578936460000121
在动态能量调控阶段中,依据风险值seed.risk与路径信息将种子文件定义为Fast、Normal、Slow三种状态,并以此对种子进行标签分类。对于这三种状态本发明采用了不同的种子属性作为筛选标准,同时利用多目标优化模型根据不同的状态构造不同的目标函数进行求解。详细状态含义与数学表示如下文所示:
Figure BDA0003578936460000122
(a)快速模式(Fast):Fast表示当前的种子存在较大漏洞发现潜力,输入文件仍保持着多样性,主要是仍未被选择或未经过深层次变异的输入文件。在此状态种子中进行选择时,着重关注风险值、路径覆盖基本块数量,同时考虑到Windows模糊测试速度较慢,因此输入文件自身的容量大小与运行耗费的时间也需要重点关注。
(b)一般模式(Normal):在Normal状态下,被偏好的种子已进行过测试,但仍存在未被选择过的种子。在此状态种子中进行选择时,需集中能量探寻更多路径,因此重点关注风险路径执行的频率和风险值,为加快探索速度尽快覆盖更多基本块,输入文件的大小与运行时间仍需要进行考虑。
(c)低速模式(Slow):在Slow状态下,所有的输入文件均至少已经过一轮选择变异,偏好种子难以认定。对于此状态种子,其变异操作更具指导意义,因此重点关注路径风险值、变异效果、路径覆盖基本块数量。并且由于已变异多次的输入很难再产生新种子,因此输入文件的大小与时间不再作为平衡能量消耗的标准。
Figure BDA0003578936460000123
Figure BDA0003578936460000131
所示算法为种子动态能量调控算法,对于队列T中的任一输入文件s′,首先设置αi为原始能量分配函数assignEnergy的值,若选取的种子为Fast状态,则输入文件自身包含多样性,s.energy在覆盖率反馈过程中将保持恒定常数αi,以进行快速路经探索。若其切换为Normal状态,则输入存在探索新路径困难的情况,能量分配时将利用路径执行的频率信息进行调控,原则为执行频率越小分配能量越高。对于处于Slow状态的种子,新路径最难探索,能量分配需同时与路径执行频率和变异能力相结合,对于变异次数少执行频率低的输入赋予高能量,促使种子充分变异。
在种子赋能后的执行过程中,同时监控执行时的覆盖基本块数量与执行次数关系如图4所示。在覆盖率引导的模糊测试过程中,随着执行次数的增加覆盖基本块的数量将逐渐减少,这意味在初期发现新路径往往比在后期更有效,同时点(0,Num0)指在运行前种子文件的原始覆盖BB块,点P显示了在
Figure BDA0003578936460000132
次执行中新覆盖到
Figure BDA0003578936460000133
的基本块数量,则该输入的有效程度可定义为式6,且该指标会随着执行次数的增加而降低(即S2区域),但若模糊引擎生成高价值测试用例,执行次数越少、覆盖量更多则该指标会增加(即S1区域)。
Figure BDA0003578936460000141
基于此在变异过程中能够截断过高消耗输入的执行,当种子有效性eff大于或等于阈值μthreshold时将快速执行,以期尽快达到执行次数与覆盖新BB块(Basicblock,即基本块)的均衡点;当有效值过低时、即小于阈值μthreshold时采取截断措施,对该输入文件进行跳过处理,以此提升整个模糊测试过程的运行效率。通过以上种子动态能量调控算法,能够动态地控制种子选取过程与赋予种子能量的多少,从而促使模糊测试进程搜索转向更可能隐藏漏洞的路径。
值得说明的是,目前的Window模糊测试方法中,Eddington开发的peach旨在给定的样本文件基础上变异产生畸形文件,但并不支持覆盖率的反馈;Swiecki发布跨平台模糊测试引擎honggFuzz,但其Windows版本利用CygWin创建Unix环境,同样无法支持覆盖率反馈;Google发布的Winafl使用动态插桩与硬件辅助来进行覆盖率反馈,为CGF(Coverage-guided fuzzing)在Windows平台的后续发展奠定基础;Lucas利用IDA静态分析工具通过静态插桩实现针对闭源程序的覆盖引导的Fuzzer,以弥补常见动态检测造成的性能损失;Hardik将mopt粒子群优化算法移植到winafl之中,改善变异过程所造成的高消耗;Jinho则借助Windows第一方api实现了Fork模式,并且在计算覆盖率时引入了全速模糊测试这一概念。
在现有的测试引擎中,硬件辅助跟踪(IntelPT)与程序检测不兼容增加了后处理开销;动态二进制转换(DynamoRIO、PIN)在模拟执行的过程中对程序运行状态进行监控与修改,面临着更严重的运行管理消耗;静态重写技术能够提升运行速度,但对目标稳定性有较大影响。且目前仅有winafl_mopt针对模糊测试过程中输入的能量分配与变异进行优化,其余引擎则仅注重覆盖率统计方式的改变,
而本发明提出利用TinyInst调试器进行轻量化插桩,其工作机制与性能表现均优于现有的动态插桩方式;利用静态污点分析判定基本块风险的方法,并基于此将种子文件划分为三种状态,依据不同状态提高Windows模糊测试探寻漏洞的针对性;通过提出一种动态能量分配方法与种子有效性监控机制,优化能量的分配过程并对有效性过低的输入进行截断,改善了Windows模糊测试的运行速度。
为验证本发明效果,本发明在真实应用程序XunleiPlayer、SumatraPDF、2345Picture和VLC中进行了测试,测试期间收集到的89个崩溃记录,通过手动对其进行分类并根据堆栈回溯过滤重复项之后,最终发现了5个未公开漏洞,其中2个已提交国家漏洞中心并被分配CNVD编号,另有1个被分配CVE编号,漏洞细节如表3所示。未公开漏洞的发现同时证明将本发明方案用于漏洞检测与挖掘是真实有效的。
表3 已发现漏洞信息表
Figure BDA0003578936460000151
在上述实施例的基础上,如图5所示,本发明还提出一种基于动态能量调控的Windows程序模糊测试系统,包括:
轻量化动态插桩模块,用于进行轻量化动态插桩;包括:
执行目标应用程序,使用TinyInst调试器对其进行轻量化插桩,并实时记录运行过程中反馈的覆盖率与基本块信息;
路径风险判断模块,用于进行路径风险判断;包括:
对目标应用程序利用二进制静态分析工具进行程序控制流图的提取,并针对敏感函数进行位置匹配;
对匹配的敏感函数,利用污点分析进行筛选,仅选择受可控变量影响的敏感函数作为目标点位;
将选择的敏感函数目标点作为基准,依据距离远近和执行的概率对目标程序中基本块进行动静结合的风险值判定;
动态能量调控模块,用于进行动态能量调控;包括:
将输入的种子文件依据风险值不同,划分为Fast、Normal、Slow三种状态,并依据最优化数学模型对其进行排序;
对不同状态的输入种子,分别设置对应的动态能量计算的优化算法;
对进行能量赋值后的输入文件进行实时监控,针对有效性过低的输入进行截断操作。
进一步地,所述轻量化动态插桩模块具体用于:
目标程序开始运行,待加载到目标进程中,此时modul.dll所处空间为可执行内存,TinyInst将目标应用程序的可执行代码复制到Tinylnst进程Moduleinfo.AddressRange.data中以加快后续访问速度,同时将Target process中原有的可执行内存空间标记为不可执行内存;
调试器在TinyInst与目标进程中为待插桩的模块代码重新申请两个缓冲区,分别命名为instrumented_code_local与instrumented_code_remote,此时若程序RIP寄存器指针执行到目标进程中的module时将会导致异常,因为试图执行不可执行的内存;
当Tinylnst进程捕获到RIP寄存器指针异常访问时,将劫持原有的控制流至自进程instrumented_code_local内,并按照预设插桩规则开始重写从异常地址开始的汇编代码,重写完成后将插桩代码转移至目标进程缓冲区instrumented_code_remote中,以待运行;
Tinylnst进程释放之前捕获的异常,并更改之前被劫持的异常线程RIP寄存器,将其重新指向目标进程instrumented_code_remote中已插桩的代码,模糊测试引擎由此开始统计基本块相关覆盖率。
进一步地,所述路径风险判断模块具体用于:
利用静态分析工具对敏感函数进行定位;
利用污点分析方法对被检测到的敏感函数进行进一步筛选,针对静态提取后的中间层代码表示,污点分析根据程序中的函数调用关系构建调用图,通过分析程序变量间的数据依赖关系来检测数据能否从污点源传播到污点汇聚点:
首先,将定位的敏感函数位置设为sink点,同时识别文件读取相关api函数OpenFile_*与ReadFile_*并将其输入设置为Source源;随后为输入变量添加布尔类型污染标签表示变量是否被污染,同时使用队列记录污染变量的信息,依据控制范围将其区分为不同级别;最终污染传播沿着程序路径的方向分析污点信息的流向,检查Source点处程序接收的变量是否会影响到Sink点处的敏感操作,若影响则定义该敏感函数所在source点是易受攻击的,由此进一步筛选出受可控变量影响敏感函数位置;
将程序的执行控制流映射为Markov链,在筛选出的敏感函数基本块基础上,依据其它基本块与敏感函数基本块的距离对基本块进一步进行赋值,所述距离指的是Markov模型中基本块间最短距离L:
L(b1,b2)=θ[L(b1,b2)-M]L(b1,b2)+Mθ[M-L(b1,b2)] (2)
其中L(b1,b2)表示基本块b1和b2间的最短距离,M为截断阈值,当距离超过阈值M时将默认该路径可达性为0,并将路径距离设为最大值M,θ(x)为对截断判定的跃阶函数;
按照下式对基本块进行风险值计算:
Figure BDA0003578936460000171
其中Weight(bα)表示基本块bα在控制流中的风险程度,λ为常数,Vulbβ表示敏感函数在二进制程序中所在的基本块位置;
按照下式对种子执行路径风险进行综合判断:
Figure BDA0003578936460000172
其中seed.risk表示种子执行路径风险值,weight(bi)表示基本块在控制流中的风险程度,k为常量,
Figure BDA0003578936460000173
表示自bi到bj路径path(bi,bj)的概率、即为转移概率。
进一步地,所述动态能量调控模块具体用于:
依据风险值seed.risk与路径信息将种子文件定义为Fast、Normal、Slow三种状态,并以此对种子进行标签分类;
利用多目标优化模型根据不同的状态构造不同的目标函数进行求解:
Figure BDA0003578936460000174
其中
Figure BDA0003578936460000175
表示种子执行后所覆盖所有基本块数量和,Mseed表示种子进行变异后产生的测试用例数量,Trun表示单次种子运行时间,Sizeseed表示种子自身的文件大小;
对于队列T中的任一输入文件s′,首先设置αi为原始能量分配函数assignEnergy的值,若选取的种子为Fast状态,则s.energy在覆盖率反馈过程中保持恒定常数αi,以进行快速路经探索;若其切换为Normal状态,则能量分配时利用路径执行的频率信息进行调控,执行频率越小分配能量越高;对于处于Slow状态的种子,对于变异次数少执行频率低的输入赋予高能量,促使种子充分变异;
在种子赋能后的执行过程中,按照如下方式计算种子有效性eff,当种子有效性大于或等于阈值μthreshold时快速执行;当有效性值小于阈值时采取截断措施,对该输入文件进行跳过处理:
Figure BDA0003578936460000181
其中Num0表示在运行前种子文件的原始覆盖BB块纵坐标,
Figure BDA0003578936460000182
表示路径pathi所执行的次数。
进一步地,还包括:
循环模块,用于循环执行轻量化动态插桩模块至动态能量调控模块的模糊测试过程,直至被用户中断。
综上,本发明从动态二进制插桩的工作机制入手,以静态污点分析和目标最优化模型为基础,提出了一种基于动态能量调控的Windows程序模糊测试方法及系统,有效解决了传统Windows模糊测试误报率和漏报率较高,运行开销大的缺点。并且,其目标覆盖率与崩溃发现数量均有明显提升,并且发现了新的未公开漏洞,具有良好的适用性。
以上所示仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种基于动态能量调控的Windows程序模糊测试方法,其特征在于,包括:
步骤A、轻量化动态插桩;包括:
执行目标应用程序,使用TinyInst对其进行轻量化插桩,并实时记录运行过程中反馈的覆盖率与基本块信息;
步骤B、路径风险判断;包括:
对目标应用程序利用二进制静态分析工具进行程序控制流图的提取,并针对敏感函数进行位置匹配;
对匹配的敏感函数,利用污点分析进行筛选,仅选择受可控变量影响的敏感函数作为目标点位;
将选择的敏感函数目标点作为基准,依据距离远近和执行的概率对目标程序中基本块进行动静结合的风险值判定;
步骤C、动态能量调控;包括:
将输入的种子文件依据风险值不同,划分为Fast、Normal、Slow三种状态,并依据最优化数学模型对其进行排序;
对不同状态的输入种子,分别设置对应的动态能量计算的优化算法;
对进行能量赋值后的输入文件进行实时监控,针对有效性过低的输入进行截断操作。
2.根据权利要求1所述的基于动态能量调控的Windows程序模糊测试方法,其特征在于,所述步骤A包括:
目标程序开始运行,待加载到目标进程中,此时modul.dll所处空间为可执行内存,TinyInst将目标应用程序的可执行代码复制到Tinylnst进程Moduleinfo.AddressRange.data中以加快后续访问速度,同时将Target process中原有的可执行内存空间标记为不可执行内存;
调试器在TinyInst与目标进程中为待插桩的模块代码重新申请两个缓冲区,分别命名为instrumented_code_local与instrumented_code_remote,此时若程序RIP寄存器指针执行到目标进程中的module时将会导致异常,因为试图执行不可执行的内存;
当Tinylnst进程捕获到RIP寄存器指针异常访问时,将劫持原有的控制流至自进程instrumented_code_local内,并按照预设插桩规则开始重写从异常地址开始的汇编代码,重写完成后将插桩代码转移至目标进程缓冲区instrumented_code_remote中,以待运行;
Tinylnst进程释放之前捕获的异常,并更改之前被劫持的异常线程RIP寄存器,将其重新指向目标进程instrumented_code_remote中已插桩的代码,模糊测试引擎由此开始统计基本块相关覆盖率。
3.根据权利要求1所述的基于动态能量调控的Windows程序模糊测试方法,其特征在于,所述步骤B包括:
利用静态分析工具对敏感函数进行定位;
利用污点分析方法对被检测到的敏感函数进行进一步筛选,针对静态提取后的中间层代码表示,污点分析根据程序中的函数调用关系构建调用图,通过分析程序变量间的数据依赖关系来检测数据能否从污点源传播到污点汇聚点:
首先,将定位的敏感函数位置设为sink点,同时识别文件读取相关api函数OpenFile_*与ReadFile_*并将其输入设置为Source源;随后为输入变量添加布尔类型污染标签表示变量是否被污染,同时使用队列记录污染变量的信息,依据控制范围将其区分为不同级别;最终污染传播沿着程序路径的方向分析污点信息的流向,检查Source点处程序接收的变量是否会影响到Sink点处的敏感操作,若影响则定义该敏感函数所在source点是易受攻击的,由此进一步筛选出受可控变量影响敏感函数位置;
将程序的执行控制流映射为Markov链,在筛选出的敏感函数基本块基础上,依据其它基本块与敏感函数基本块的距离对基本块进一步进行赋值,所述距离指的是Markov模型中基本块间最短距离L:
L(b1,b2)=θ[L(b1,b2)-M]L(b1,b2)+Mθ[M-L(b1,b2)] (2)
其中L(b1,b2)表示基本块b1和b2间的最短距离,M为截断阈值,当距离超过阈值M时将默认该路径可达性为0,并将路径距离设为最大值M,θ(x)为对截断判定的跃阶函数;
按照下式对基本块进行风险值计算:
Figure FDA0003578936450000021
其中Weight(bα)表示基本块bα在控制流中的风险程度,λ为常数,Vulbβ表示敏感函数在二进制程序中所在的基本块位置;
按照下式对种子执行路径风险进行综合判断:
Figure FDA0003578936450000031
其中seed.risk表示种子执行路径风险值,weight(bi)表示基本块在控制流中的风险程度,k为常量,
Figure FDA0003578936450000032
表示自bi到bj路径path(bi,bj)的概率、即为转移概率。
4.根据权利要求3所述的基于动态能量调控的Windows程序模糊测试方法,其特征在于,所述步骤C包括:
依据风险值seed.risk与路径信息将种子文件定义为Fast、Normal、Slow三种状态,并以此对种子进行标签分类;
利用多目标优化模型根据不同的状态构造不同的目标函数进行求解:
Figure FDA0003578936450000033
其中
Figure FDA0003578936450000034
表示种子执行后所覆盖所有基本块数量和,Mseed表示种子进行变异后产生的测试用例数量,Trun表示单次种子运行时间,Sizeseed表示种子自身的文件大小;
对于队列T中的任一输入文件s′,首先设置αi为原始能量分配函数assignEnergy的值,若选取的种子为Fast状态,则s.energy在覆盖率反馈过程中保持恒定常数αi,以进行快速路经探索;若其切换为Normal状态,则能量分配时利用路径执行的频率信息进行调控,执行频率越小分配能量越高;对于处于Slow状态的种子,对于变异次数少执行频率低的输入赋予高能量,促使种子充分变异;
在种子赋能后的执行过程中,按照如下方式计算种子有效性eff,当种子有效性大于或等于阈值μthreshold时快速执行;当有效性值小于阈值时采取截断措施,对该输入文件进行跳过处理:
Figure FDA0003578936450000041
其中Num0表示在运行前种子文件的原始覆盖BB块纵坐标,
Figure FDA0003578936450000042
表示路径pathi所执行的次数。
5.根据权利要求1所述的基于动态能量调控的Windows程序模糊测试方法,其特征在于,还包括:
循环执行步骤A至步骤C的模糊测试过程,直至被用户中断。
6.一种基于动态能量调控的Windows程序模糊测试系统,其特征在于,包括:
轻量化动态插桩模块,用于进行轻量化动态插桩;包括:
执行目标应用程序,使用TinyInst调试器对其进行轻量化插桩,并实时记录运行过程中反馈的覆盖率与基本块信息;
路径风险判断模块,用于进行路径风险判断;包括:
对目标应用程序利用二进制静态分析工具进行程序控制流图的提取,并针对敏感函数进行位置匹配;
对匹配的敏感函数,利用污点分析进行筛选,仅选择受可控变量影响的敏感函数作为目标点位;
将选择的敏感函数目标点作为基准,依据距离远近和执行的概率对目标程序中基本块进行动静结合的风险值判定;
动态能量调控模块,用于进行动态能量调控;包括:
将输入的种子文件依据风险值不同,划分为Fast、Normal、Slow三种状态,并依据最优化数学模型对其进行排序;
对不同状态的输入种子,分别设置对应的动态能量计算的优化算法;
对进行能量赋值后的输入文件进行实时监控,针对有效性过低的输入进行截断操作。
7.根据权利要求6所述的基于动态能量调控的Windows程序模糊测试系统,其特征在于,所述轻量化动态插桩模块具体用于:
目标程序开始运行,待加载到目标进程中,此时modul.dll所处空间为可执行内存,TinyInst将目标应用程序的可执行代码复制到Tinylnst进程Moduleinfo.AddressRange.data中以加快后续访问速度,同时将Target process中原有的可执行内存空间标记为不可执行内存;
调试器在TinyInst与目标进程中为待插桩的模块代码重新申请两个缓冲区,分别命名为instrumented_code_local与instrumented_code_remote,此时若程序RI P寄存器指针执行到目标进程中的module时将会导致异常,因为试图执行不可执行的内存;
当Tinylnst进程捕获到RIP寄存器指针异常访问时,将劫持原有的控制流至自进程instrumented_code_local内,并按照预设插桩规则开始重写从异常地址开始的汇编代码,重写完成后将插桩代码转移至目标进程缓冲区instrumented_cod e_remote中,以待运行;
Tinylnst进程释放之前捕获的异常,并更改之前被劫持的异常线程RIP寄存器,将其重新指向目标进程instrumented_code_remote中已插桩的代码,模糊测试引擎由此开始统计基本块相关覆盖率。
8.根据权利要求6所述的基于动态能量调控的Windows程序模糊测试系统,其特征在于,所述路径风险判断模块具体用于:
利用静态分析工具对敏感函数进行定位;
利用污点分析方法对被检测到的敏感函数进行进一步筛选,针对静态提取后的中间层代码表示,污点分析根据程序中的函数调用关系构建调用图,通过分析程序变量间的数据依赖关系来检测数据能否从污点源传播到污点汇聚点:
首先,将定位的敏感函数位置设为sink点,同时识别文件读取相关api函数OpenFile_*与ReadFile_*并将其输入设置为Source源;随后为输入变量添加布尔类型污染标签表示变量是否被污染,同时使用队列记录污染变量的信息,依据控制范围将其区分为不同级别;最终污染传播沿着程序路径的方向分析污点信息的流向,检查Source点处程序接收的变量是否会影响到Sink点处的敏感操作,若影响则定义该敏感函数所在source点是易受攻击的,由此进一步筛选出受可控变量影响敏感函数位置;
将程序的执行控制流映射为Markov链,在筛选出的敏感函数基本块基础上,依据其它基本块与敏感函数基本块的距离对基本块进一步进行赋值,所述距离指的是Markov模型中基本块间最短距离L:
L(b1,b2)=θ[L(b1,b2)-M]L(b1,b2)+Mθ[M-L(b1,b2)] (2)
其中L(b1,b2)表示基本块b1和b2间的最短距离,M为截断阈值,当距离超过阈值M时将默认该路径可达性为0,并将路径距离设为最大值M,θ(x)为对截断判定的跃阶函数;
按照下式对基本块进行风险值计算:
Figure FDA0003578936450000061
其中Weight(bα)表示基本块bα在控制流中的风险程度,λ为常数,Vulbβ表示敏感函数在二进制程序中所在的基本块位置;
按照下式对种子执行路径风险进行综合判断:
Figure FDA0003578936450000062
其中seed.risk表示种子执行路径风险值,weight(bi)表示基本块在控制流中的风险程度,k为常量,
Figure FDA0003578936450000063
表示自bi到bj路径path(bi,bj)的概率、即为转移概率。
9.根据权利要求8所述的基于动态能量调控的Windows程序模糊测试系统,其特征在于,所述动态能量调控模块具体用于:
依据风险值seed.risk与路径信息将种子文件定义为Fast、Normal、Slow三种状态,并以此对种子进行标签分类;
利用多目标优化模型根据不同的状态构造不同的目标函数进行求解:
Figure FDA0003578936450000064
其中
Figure FDA0003578936450000065
表示种子执行后所覆盖所有基本块数量和,Mseed表示种子进行变异后产生的测试用例数量,Trun表示单次种子运行时间,Sizeseed表示种子自身的文件大小;
对于队列T中的任一输入文件s′,首先设置αi为原始能量分配函数assignEnergy的值,若选取的种子为Fast状态,则s.energy在覆盖率反馈过程中保持恒定常数αi,以进行快速路经探索;若其切换为Normal状态,则能量分配时利用路径执行的频率信息进行调控,执行频率越小分配能量越高;对于处于Slow状态的种子,对于变异次数少执行频率低的输入赋予高能量,促使种子充分变异;
在种子赋能后的执行过程中,按照如下方式计算种子有效性eff,当种子有效性大于或等于阈值μthreshold时快速执行;当有效性值小于阈值时采取截断措施,对该输入文件进行跳过处理:
Figure FDA0003578936450000071
其中Num0表示在运行前种子文件的原始覆盖BB块纵坐标,
Figure FDA0003578936450000072
表示路径pathi所执行的次数。
10.根据权利要求6所述的基于动态能量调控的Windows程序模糊测试系统,其特征在于,还包括:
循环模块,用于循环执行轻量化动态插桩模块至动态能量调控模块的模糊测试过程,直至被用户中断。
CN202210340402.0A 2022-04-02 2022-04-02 基于动态能量调控的Windows程序模糊测试方法及系统 Active CN114780962B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210340402.0A CN114780962B (zh) 2022-04-02 2022-04-02 基于动态能量调控的Windows程序模糊测试方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210340402.0A CN114780962B (zh) 2022-04-02 2022-04-02 基于动态能量调控的Windows程序模糊测试方法及系统

Publications (2)

Publication Number Publication Date
CN114780962A true CN114780962A (zh) 2022-07-22
CN114780962B CN114780962B (zh) 2024-04-26

Family

ID=82426617

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210340402.0A Active CN114780962B (zh) 2022-04-02 2022-04-02 基于动态能量调控的Windows程序模糊测试方法及系统

Country Status (1)

Country Link
CN (1) CN114780962B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116894209A (zh) * 2023-09-05 2023-10-17 北京开源芯片研究院 采样点的分类方法、装置、电子设备及可读存储介质
CN116932416A (zh) * 2023-09-15 2023-10-24 北京华云安信息技术有限公司 基于敏感函数的模糊测试方法、装置、设备以及存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101814053A (zh) * 2010-03-29 2010-08-25 中国人民解放军信息工程大学 一种基于功能模型的二进制代码漏洞发现方法
CN102622558A (zh) * 2012-03-01 2012-08-01 北京邮电大学 一种二进制程序漏洞的挖掘装置和方法
CN103984900A (zh) * 2014-05-19 2014-08-13 南京赛宁信息技术有限公司 Android应用漏洞检测方法及系统
CN107038378A (zh) * 2016-11-14 2017-08-11 平安科技(深圳)有限公司 应用软件安全漏洞检测方法和系统
CN108334780A (zh) * 2018-02-06 2018-07-27 南京航空航天大学 基于上下文信息的隐私泄露检测方法
CN110008710A (zh) * 2019-04-15 2019-07-12 上海交通大学 基于深度强化学习和程序路径插桩的漏洞检测方法
CN110941552A (zh) * 2019-11-20 2020-03-31 广州大学 一种基于动态污点分析的内存分析方法及装置
CN112506564A (zh) * 2021-02-04 2021-03-16 中国人民解放军国防科技大学 一种用于建立控制流图的方法、系统和介质
CN114048132A (zh) * 2021-11-12 2022-02-15 北京知道未来信息技术有限公司 基于决策树的模糊测试方法和装置

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101814053A (zh) * 2010-03-29 2010-08-25 中国人民解放军信息工程大学 一种基于功能模型的二进制代码漏洞发现方法
CN102622558A (zh) * 2012-03-01 2012-08-01 北京邮电大学 一种二进制程序漏洞的挖掘装置和方法
CN103984900A (zh) * 2014-05-19 2014-08-13 南京赛宁信息技术有限公司 Android应用漏洞检测方法及系统
CN107038378A (zh) * 2016-11-14 2017-08-11 平安科技(深圳)有限公司 应用软件安全漏洞检测方法和系统
WO2018086292A1 (zh) * 2016-11-14 2018-05-17 平安科技(深圳)有限公司 应用软件安全漏洞检测方法、系统、设备及存储介质
CN108334780A (zh) * 2018-02-06 2018-07-27 南京航空航天大学 基于上下文信息的隐私泄露检测方法
CN110008710A (zh) * 2019-04-15 2019-07-12 上海交通大学 基于深度强化学习和程序路径插桩的漏洞检测方法
CN110941552A (zh) * 2019-11-20 2020-03-31 广州大学 一种基于动态污点分析的内存分析方法及装置
CN112506564A (zh) * 2021-02-04 2021-03-16 中国人民解放军国防科技大学 一种用于建立控制流图的方法、系统和介质
CN114048132A (zh) * 2021-11-12 2022-02-15 北京知道未来信息技术有限公司 基于决策树的模糊测试方法和装置

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
XIAOQI ZHAO 等: "MooFuzz:Many-Objective Optimization Seed Schedule for Fuzzer", SPECIAL ISSUE EVOLUTIONARY COMPUTATION, vol. 9, no. 3, 20 January 2021 (2021-01-20), pages 1 - 19 *
戴渭;陆余良;朱凯龙;: "基于动态能量调控的导向式灰盒模糊测试技术", 浙江大学学报(工学版), no. 08, 15 August 2020 (2020-08-15), pages 1534 - 1542 *
沙乐天;肖甫;杨红柯;喻辉;王汝传;: "基于自适应模糊测试的IaaS层漏洞挖掘方法", 软件学报, no. 05, 11 January 2018 (2018-01-11), pages 1303 - 1317 *
董国良;臧洌;李航;甘露;郭咏科;: "基于污点分析的二进制程序漏洞检测", 计算机技术与发展, no. 03, 4 December 2017 (2017-12-04), pages 137 - 142 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116894209A (zh) * 2023-09-05 2023-10-17 北京开源芯片研究院 采样点的分类方法、装置、电子设备及可读存储介质
CN116894209B (zh) * 2023-09-05 2023-12-22 北京开源芯片研究院 采样点的分类方法、装置、电子设备及可读存储介质
CN116932416A (zh) * 2023-09-15 2023-10-24 北京华云安信息技术有限公司 基于敏感函数的模糊测试方法、装置、设备以及存储介质
CN116932416B (zh) * 2023-09-15 2023-12-22 北京华云安信息技术有限公司 基于敏感函数的模糊测试方法、装置、设备以及存储介质

Also Published As

Publication number Publication date
CN114780962B (zh) 2024-04-26

Similar Documents

Publication Publication Date Title
CN114780962B (zh) 基于动态能量调控的Windows程序模糊测试方法及系统
NL2028230B1 (en) Methods and systems for preventing malicious activity in a computer system
CN111832026B (zh) 一种漏洞利用定位方法、系统、装置及介质
CN112904817B (zh) 一种面向智能制造生产线的全局安全检测系统及其工作方法
CN108667912B (zh) 一种云资源分配方法及装置
CN111240991A (zh) 一种抗隐式污点传播的动态污点检测方法及系统
Sadeghi et al. Mining the categorized software repositories to improve the analysis of security vulnerabilities
CN110222243A (zh) 确定异常行为的方法、装置和存储介质
CN109948338B (zh) 基于静态分析的安卓应用敏感路径触发方法
Zuo Defense of Computer Network Viruses Based on Data Mining Technology.
Ji et al. Effuzz: Efficient fuzzing by directed search for smart contracts
CN112632547A (zh) 一种数据处理方法和相关装置
CN107729747A (zh) 一种面向二进制程序的堆溢出检测方法
CN117034299A (zh) 一种基于区块链的智能合约安全检测系统
CN112257077A (zh) 一种基于深度学习的自动化漏洞挖掘方法
CN116595523A (zh) 基于动态编排的多引擎文件检测方法、系统、设备及介质
CN111104670A (zh) 一种apt攻击的识别和防护方法
Moffie et al. Hunting trojan horses
Kang A review on javascript engine vulnerability mining
CN116032595A (zh) 一种通用型恶意样本的分类方法、装置、介质及设备
CN114840418A (zh) 模糊测试方法及装置
CN111190813B (zh) 基于自动化测试的安卓应用网络行为信息提取系统及方法
CN114338170A (zh) 检测控制方法、装置、电子设备、存储介质及计算机系统
CN113923007A (zh) 一种安全渗透测试方法、装置、电子设备及存储介质
US9800588B1 (en) Automated analysis pipeline determination in a malware analysis environment

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