CN108647520B - 一种基于脆弱性学习的智能模糊测试方法与系统 - Google Patents

一种基于脆弱性学习的智能模糊测试方法与系统 Download PDF

Info

Publication number
CN108647520B
CN108647520B CN201810464884.4A CN201810464884A CN108647520B CN 108647520 B CN108647520 B CN 108647520B CN 201810464884 A CN201810464884 A CN 201810464884A CN 108647520 B CN108647520 B CN 108647520B
Authority
CN
China
Prior art keywords
vulnerability
binary program
control flow
tested
binary
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
CN201810464884.4A
Other languages
English (en)
Other versions
CN108647520A (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.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
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 Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN201810464884.4A priority Critical patent/CN108647520B/zh
Publication of CN108647520A publication Critical patent/CN108647520A/zh
Application granted granted Critical
Publication of CN108647520B publication Critical patent/CN108647520B/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/043Architecture, e.g. interconnection topology based on fuzzy logic, fuzzy membership or fuzzy inference, e.g. adaptive neuro-fuzzy inference systems [ANFIS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Data Mining & Analysis (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Quality & Reliability (AREA)
  • Automation & Control Theory (AREA)
  • Computational Mathematics (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种基于脆弱性学习的智能模糊测试方法与系统,智能模糊测试系统包括:数据预处理模块,将待测二进制程序进行逆向分析得到其控制流图,对所述控制流图中的每个基本块进行特征提取,得到每个基本块的特征向量;漏洞预测模块,根据待测二进制程序的控制流图预测该程序中每个函数存在漏洞的概率;漏洞导向模糊测试模块,对待测二进制程序进行测试,结合某一输入的执行路径、执行路径中函数存在漏洞的概率以及执行结果,计算该输入的适应度分数;以高适应度分数的输入作为种子进行遗传变异生成下一代输入,对待测二进制程序进行循环测试,直至测试结束。本发明的智能模糊测试系统能够更高效地挖掘二进制程序中的漏洞。

Description

一种基于脆弱性学习的智能模糊测试方法与系统
技术领域
本发明涉及模糊测试应用领域,尤其涉及一种基于脆弱性学习的智能模糊测试方法与系统。
背景技术
模糊测试是一种软件测试技术,通过向被测程序中输入大量非预期输入,并监视程序执行过程中是否出现异常,如崩溃,断言等,从而发现程序中是否存在漏洞的方法。相比如其他漏洞挖掘方法,模糊测试具有简单、误报率低、扩展性好等特点,并广泛应用于实际的漏洞挖掘领域中。根据对被测应用程序已知信息的不同,模糊测试工具可以分为白盒、黑盒和灰盒模糊测试。白盒模糊测试主要针对源码已知的应用程序;黑盒模糊测试主要针对二进制应用程序;灰盒模糊测试主要针对反编译后的二进制应用程序。根据输入的生成策略不同,模糊测试工具可以分为基于定向和基于覆盖率的模糊测试工具。基于定向的模糊测试工具目标是产生能到达特定程序位置的输入;基于覆盖率的模糊测试工具的目标是产生覆盖程序更多位置的输入。
目前主流的模糊测试工具有AFL和Driller等,AFL是一种基于遗传算法的模糊测试测试工具,主要根据测试用例是否发现新的基本块、执行的时间和测试用例本身的大小等信息对测试用例进行评分,并选择评分较高的测试用例进行变异产生新的测试用例。AFL的目标是通过遗传算法选择出能够实现更高覆盖率的输入。AFL的缺陷在于只是盲目地追求覆盖率,而忽略了模糊测试的本质在于挖掘漏洞。另一种模糊测试工具Driller将符号执行技术与AFL相结合,当模糊测试工具在一段时间内无法发现新的基本块时,则启动符号执行模块对当前的程序分支进行求解,求出可以进入新分支的输入,将输入交给AFL,并在此基础上进行变异以产生新的输入。Driller的问题在于符号执行的复杂性,尤其对于实际中的应用程序,由于约束表达式的复杂性,符号执行往往无法求出满足该表达式的解。比如,对于126个DARPA CGC二进制程序的测试中,AFL在其中的41个二进制程序的测试中卡住,而Driller的符号执行引擎只能对其中的13个二进制程序产生有效的输入。因此,结合符号执行的模糊测试在实际的应用中仍面临很大困境。
模糊测试的缺陷在于盲目性和低效率,而这种盲目和低效主要源于对被测应用程序的未知。目前的模糊测试工具主要以覆盖率为导向,希望能够尽可能测试到程序的所有部分,这种方法将程序中所有的部分都视为同等,并且目前模糊测试工具很难达到较高的覆盖率,因此模糊测试工具需要更多地关注更可能有漏洞的部分,从而提高模糊测试的挖掘漏洞的效率。
发明内容
针对目前模糊测试工具缺少对应用程序本身进行漏洞分析导致的盲目性和低效率的现状,本发明提供了一种基于脆弱性学习的智能模糊测试系统,能够更高效地实现程序漏洞的挖掘。
本发明提供了如下技术方案:
一种基于脆弱性学习的智能模糊测试系统,包括:
数据预处理模块,将待测二进制程序进行逆向分析得到其控制流图,对所述控制流图中的每个基本块进行特征提取,得到每个基本块的特征向量;
漏洞预测模块,根据待测二进制程序的控制流图预测该程序中每个函数存在漏洞的概率;
漏洞导向模糊测试模块,对待测二进制程序进行测试,结合某一输入的执行路径、执行路径中函数存在漏洞的概率以及执行结果,计算该输入的适应度分数;以高适应度分数的输入作为种子进行遗传变异生成下一代输入,对待测二进制程序进行循环测试,直至测试结束。
程序的脆弱性是指由于设计或者运行环境的缺陷,导致程序可能存在可被利用的漏洞的性质。
计算机应用程序中存在很多种类的漏洞,目前主流的漏洞类型有缓冲区溢出漏洞、整型溢出漏洞和释放后使用漏洞等。这些漏洞主要是由一些不安全的操作造成的,这些不安全操作包括调用不安全的库函数、循环赋值操作、没有进行缓冲区边界检查、对释放后的内存地址进行访问操作等。因此,应用程序中存在此类不安全操作的部分的脆弱性更高,需要在测试时被更多地关注。
本发明的智能模糊测试系统,首先采用漏洞预测模型预测其更可能出现漏洞的部分,再基于对二进制程序的漏洞预测结果和不同输入测试用例的执行结果,采用遗传算法生成更倾向于到达有该二进制程序中漏洞概率高的部分的输入。因此,本发明的智能模糊测试系统能够更高效地挖掘二进制程序中的漏洞。
本发明中的漏洞预测模块主要关注二进制程序,原因在于很多情况下无法获取被测程序的源代码。由于源码实现方式、编译环境、优化选项等因素的不同,导致类似不安全操作的代码有着不同的二进制形式,而这些形式难以使用固定的规则进行描述,采用传统的静态分析方法会产生大量的漏报和误报现象。
所述的漏洞预测模块具有漏洞预测模型。漏洞预测模块的核心是漏洞预测模型,漏洞预测模型是有监督的神经网络模型。
优选的,所述的漏洞预测模型包括图嵌入网络和Softmax层。
进一步优选的,漏洞预测模型的形式化表示如下:
所述的漏洞预测模型以二进制函数的控制流图G=<V,E>为输入,其中V表示该控制流图中所有基本块的集合,E表示该控制流图中所有的边的集合;
图嵌入网络根据控制流图中某一基本块的特征向量和网络拓扑信息,计算该基本块的嵌入向量,计算公式为
Figure BDA0001661331590000031
其中,μv为基本块v的d维嵌入向量,
Figure BDA0001661331590000032
为非线性函数,xv为c维特征向量,N(v)为基本块v的邻居基本块集合,μj为N(v)中基本块j的嵌入向量;
每个基本块的嵌入向量需要被迭代计算T次,初始的嵌入向量设置为0,嵌入向量的每次计算公式为
Figure BDA0001661331590000033
其中,W1为d×c维参数矩阵,t为当前迭代次数,σ是一个k层的全连接神经网络,神经网络σ的参数为集合P={P1,P2,...,Pk},设ReLU(x)=max{0,x}是一个线性矫正单元,则神经网络σ可表示为σ(x)=P1ReLU(P2...ReLU(Pk(x)));
二进制函数的控制流图的图嵌入向量为所有迭代T次后的基本块嵌入向量之和,
Figure BDA0001661331590000041
其中,μG为控制流图的图嵌入向量,W2为d×d维参数矩阵;
将图嵌入向量μG转化成一个二维向量Z={z0,z1},Z=W3μG;其中,W3为2×d维参数矩阵;
最后,所述的神经网络模型中的Softmax层将向量Z={z0,z1}映射为向量Q={p,1-p},其中p∈[0,1];Q=Softmax(Z)。
优选的,所述的
Figure BDA0001661331590000043
为tanh非线性函数或sigmoid非线性函数。
采用训练集对漏洞预测模型进行训练时,整个模型的参数W1,W2,W3,...,P1,P2,...,Pk可以通过对下面的公式求得。
Figure BDA0001661331590000042
其中H为交叉熵损失函数,训练至交叉熵损失函数收敛后,模型训练完毕。
本发明还公开了基于智能模糊测试系统进行智能模糊测试方法,包括以下步骤:
(1)构建基于神经网络的漏洞预测模型并进行训练;
(2)对待测二进制程序进行预处理,采用训练好的漏洞预测模型预测待测二进制程序中每个函数存在漏洞的概率p,并根据函数存在漏洞的概率p计算该函数中所有基本块的静态漏洞分数S,计算公式为:
S=a×p+b
其中,a、b为常系数;
(3)根据待测二进制程序的输入类型,选择初始化测试例;采用初始化测试例分别对待测二进制程序进行模糊测试,记录每个初始化测试例执行路径中的所有基本块,将执行路径中所有基本块的静态漏洞分数S相加得到该初始化测试例的适应度分数;
(4)选择适应度分数排名前N%的初始化测试例作为父种子,基于遗传变异算法产生子测试例,采用子测试例分别对待测二进制程序进行模糊测试;
(5)循环执行步骤(4)直至达到模糊测试结束条件。
优选的,步骤(1)中,对漏洞预测模型进行训练的训练集构建方法为:
(i)收集大量二进制程序,标记二进制程序中的每个函数是否存在漏洞;
(ii)将标记后的二进制程序进行逆向分析得到其控制流图;
(iii)对每个二进制程序控制流图中的每个基本块进行特征提取,得到每个基本块的特征向量;
(iv)将每个函数以该函数所包含的所有基本块的特征向量集合表示,作为训练样本构建训练集。
步骤(2)中,对待测二进制程序进行预处理的方法为:
(a)将待测二进制程序进行逆向分析得到其控制流图;
(b)对待测二进制程序控制流图中的每个基本块进行特征提取,得到每个基本块的特征向量。
步骤(iii)和步骤(b)中,特征向量的提取可以采用编写IDA Pro插件的方式实现,其中IDA Pro是一款著名的逆向分析软件。
步骤(2)中,常系数a和b需要通过实验来决定具体数值的大小。
优选的,步骤(3)中,在模糊测试过程中,采用二进制动态插桩技术记录测试例执行路径中的所有基本块。
步骤(4)中,可根据具体需要选择N的具体数值。
步骤(5)中,模糊测试的结束条件可以设置为:模糊测试执行一定的时间(如100小时)。
与现有技术相比,本发明的有益效果为:
本发明的智能模糊测试系统,首先采用漏洞预测模型预测其更可能出现漏洞的部分,再基于对二进制程序的漏洞预测结果和不同输入测试用例的执行结果,采用遗传算法生成更倾向于到达有该二进制程序中漏洞概率高的部分的输入。因此,本发明的智能模糊测试系统能够更高效地挖掘二进制程序中的漏洞。
附图说明
图1为智能模糊测试系统的架构示意图;
图2为漏洞预测模块的架构示意图;
图3为训练数据的预处理流程示意图;
图4为智能模糊测试方法的流程示意图;
图5为模糊测试模块的工作流程示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步详细描述,需要指出的是,以下所述实施例旨在便于对本发明的理解,而对其不起任何限定作用。
如图1所示,本发明基于脆弱性学习的智能模糊测试系统包括数据预处理模块、基于神经网络的漏洞预测模块和漏洞导向的模糊测试模块,核心在于漏洞预测模块和模糊测试模块。
本发明中的漏洞预测模块主要关注二进制程序,原因在于很多情况下无法获取被测程序的源代码。由于源码实现方式、编译环境、优化选项等因素的不同,导致类似不安全操作的代码有着不同的二进制形式,而这些形式难以使用固定的规则进行描述,采用传统的静态分析方法会产生大量的漏报和误报现象。近几年,人工智能技术如机器学习和深度学习等取得了突飞猛进的发展,不仅成功应用在语音识别、图像识别等领域,在信息安全和程序分析等领域也出现了一些成功的应用。因此,本发明提出基于神经网络的二进制程序漏洞预测模型。
如图2所示,漏洞预测模型的核心架构是一个有监督的神经网络模型,可以采用深度学习框架,如Pytorch、TensorFlow等模型框架。下面从模型架构和模式的训练与使用等方面对漏洞预测模型进行介绍。
漏洞预测模型以二进制函数的控制流图G=<V,E>为输入,其中V表示该控制流图中所有基本块的集合,E表示该控制流图中所有边的集合;
对于该控制流图的某个基本块v,其特征向量为xv,xv为c维向量,其中每一维表示该基本块在对应特征下的值;
假设N(v)表示基本块v的邻居基本块集合,对于每个基本块,图嵌入网络会根据其特征向量xv和网络的拓扑信息计算一个d维嵌入向量μv,计算公式为:
Figure BDA0001661331590000061
其中
Figure BDA0001661331590000062
是一个非线性函数,可以取tanh或sigmoid等非线性函数;
每个基本块的嵌入向量需要被迭代计算T次,初始的嵌入向量设置为0,嵌入向量的每次计算公式如下:
Figure BDA0001661331590000071
其中W1为d×c维参数矩阵,t为当前迭代次数,σ是一个k层的全连接神经网络,神经网络σ的参数为集合P={P1,P2,...,Pk},设ReLU(x)=max{0,x}是一个线性矫正单元,则神经网络σ可表示为:
σ(x)=P1ReLU(P2...ReLU(Pk(x)));
二进制函数的控制流图G=<V,E>对应的嵌入向量μG为所有迭代T次后的基本块嵌入向量之和;
Figure BDA0001661331590000072
其中W2为d×d维参数矩阵;
接下来将图嵌入向量μG转化成一个二维向量Z={z0,z1};
Z=W3μG
其中W3为2×d维参数矩阵;
最后,所述的神经网络模型中的Softmax层将向量Z={z0,z1}映射为向量Q={p,1-p},其中p∈[0,1];
Q=Softmax(Z)。
在训练模型时,训练数据为二进制函数的控制流图G,并且该控制流图被标记为l,l=0表示该二进制函数中至少包含一个漏洞,l=1表示该二进制函数中没有漏洞。
训练数据的来源可以是来自一些公开的漏洞代码网站如CVE(http://cve.mitre.org/)、NIST(https://nvd.nist.gov/)等,也可以是来自其他的开源网站如github(https://github.com/)等。
如图3所示,获取这些漏洞代码后,需要将其编译成二进制形式,并且准确标记其中每个函数是否存在漏洞。将二进制程序逆向得到其控制流图,并对基本块提取特征,将控制流图转化为有属性的控制流图。其中基本块的特征可以为表1中的一些特征,也可以是其他相关特征。特征向量的提取可以采用编写IDA Pro插件的方式实现,其中IDA Pro是一款著名的逆向分析软件。
表1基本块的特征类型与示例
特征类型 示例
指令相关 CALL指令的个数、RET指令的个数等
操作数相关 内存操作数的个数、寄存器操作数的个数等
库函数相关 调用strcpy的个数等
训练数据的总数为m,那么整个模型的参数W1,W2,W3,...,P1,P2,...,Pk可以通过对下面的公式求得。
Figure BDA0001661331590000081
其中H为交叉熵损失函数。
训练至交叉熵损失函数收敛后,模型训练完毕。
如图4和图5所示,对于一个未知脆弱性的二进制程序,首先需要经过上述过程的数据编码格式转化成数值向量,然后漏洞预测模型会输出二进制程序中所有函数存在漏洞的概率p,保存在文件中。然后基于漏洞预测结果,编写IDA Pro插件对二进制中的基本块进行静态漏洞分数评估,并将基本块的静态漏洞分数保存在文件中。
模糊测试的过程是一个循环执行二进制程序的过程,首先需要根据二进制程序提供一些初始的输入测试用例。
与传统的覆盖率导向的模糊测试技术不同,本发明提出了以漏洞导向的模糊测试技术。覆盖率导向的模糊测试是指优先选择发现新路径的测试用例作为种子,漏洞导向的模糊测试是指优先选择到达漏洞概率高路径的测试用例作为种子。因此,漏洞导向的模糊测试会更多地关注可能存在漏洞的路径,从而更高效地挖掘二进制程序中的漏洞。
本发明的以漏洞导向的模糊测试技术,在执行二进制程序的过程中使用动态插桩工具Intel Pin记录程序执行过程中的覆盖率等执行状态信息。对于每一个执行完毕后的测试用例,根据其执行状态信息对其进行适应度评分,其适应度分数为该测试用例执行路径中所有基本块的静态漏洞分数之和,基本块的静态漏洞分数的计算公式为:。
S=a×p+b
其中a,b为常系数,需要通过实验来决定具体数值的大小。
选择适应度分数排名前N%的测试用例作为父种子,并基于父种子进行遗传变异,部分变异方法见表2,产生新的子测试用例,对待测二进制程序进行循环测试,并按照上述方法记录执行状态、生成新的测试用例并执行,直到满足模糊测试的终止条件。
表2部分变异方法
变异方法 示例
位翻转 0→1
字节翻转 0x11\0x12→0x12\0x11
替换部分字节为特殊值 0xa3→0xff
截取两个测试用例的部分片段并拼接 aaaabbbb,ccccdddd→aaaadddd
删除某个字节 0x11\0x12→0x11
本发明的智能模糊测试系统,首先采用漏洞预测模型预测其更可能出现漏洞的部分,再基于对二进制程序的漏洞预测结果和不同输入测试用例的执行结果,采用遗传算法生成更倾向于到达有该二进制程序中漏洞概率高的部分的输入。因此,本发明的智能模糊测试系统能够更高效地挖掘二进制程序中的漏洞。
以上所述的实施例对本发明的技术方案和有益效果进行了详细说明,应理解的是以上所述仅为本发明的具体实施例,并不用于限制本发明,凡在本发明的原则范围内所做的任何修改、补充和等同替换等,均应包含在本发明的保护范围之内。

Claims (6)

1.一种基于脆弱性学习的智能模糊测试系统,其特征在于,包括:
数据预处理模块,将待测二进制程序进行逆向分析得到其控制流图,对所述控制流图中的每个基本块进行特征提取,得到每个基本块的特征向量;
漏洞预测模块,具有漏洞预测模型;所述漏洞预测模型是有监督的神经网络模型,所述漏洞预测模型以待测二进制程序的控制流图为输入,根据控制流图中每个基本块的特征向量和网络拓扑计算每个基本块的嵌入向量,将所有基本块的嵌入向量分别迭代计算多次后求和得到控制流图的图嵌入向量,再将图嵌入向量转化成二维向量,输出该待测二进制程序中每个函数存在漏洞的概率;
漏洞导向模糊测试模块,对待测二进制程序进行测试,结合某一输入的执行路径、执行路径中函数存在漏洞的概率以及执行结果,计算该输入的适应度分数;以高适应度分数的输入作为种子进行遗传变异生成下一代输入,对待测二进制程序进行循环测试,执行至预设时长后结束。
2.根据权利要求1所述的智能模糊测试系统,其特征在于,所述的漏洞预测模型包括图嵌入网络和Softmax层。
3.一种基于脆弱性学习的智能模糊测试方法,其特征在于,包括以下步骤:
(1)构建基于神经网络的漏洞预测模型并进行训练;所述漏洞预测模型是有监督的神经网络模型,所述漏洞预测模型以待测二进制程序的控制流图为输入,根据控制流图中每个基本块的特征向量和网络拓扑计算每个基本块的嵌入向量,将所有基本块的嵌入向量分别迭代计算多次后求和得到控制流图的图嵌入向量,再将图嵌入向量转化成二维向量,输出该待测二进制程序中每个函数存在漏洞的概率;
(2)对待测二进制程序进行预处理,采用训练好的漏洞预测模型预测待测二进制程序中每个函数存在漏洞的概率p,并根据函数存在漏洞的概率p计算该函数中所有基本块的静态漏洞分数S,计算公式为:
S=a×p+b
其中,a、b为常系数;
(3)根据待测二进制程序的输入类型,选择初始化测试例;采用初始化测试例分别对待测二进制程序进行模糊测试,记录每个初始化测试例执行路径中的所有基本块,将执行路径中所有基本块的静态漏洞分数S相加得到该初始化测试例的适应度分数;
(4)选择适应度分数排名前N%的初始化测试例作为父种子,基于遗传变异算法产生子测试例,采用子测试例分别对待测二进制程序进行模糊测试;
(5)循环执行步骤(4)至预设时长后结束。
4.根据权利要求3所述的智能模糊测试方法,其特征在于,步骤(1)中,对漏洞预测模型进行训练的训练集构建方法为:
(ⅰ)收集大量二进制程序,标记二进制程序中的每个函数是否存在漏洞;
(ⅱ)将标记后的二进制程序进行逆向分析得到其控制流图;
(ⅲ)对每个二进制程序的控制流图中的每个基本块进行特征提取,得到每个基本块的特征向量;
(ⅳ)将每个函数以该函数所包含的所有基本块的特征向量集合表示,作为训练样本构建训练集。
5.根据权利要求3所述的智能模糊测试方法,其特征在于,步骤(2)中,对待测二进制程序进行预处理的方法为:
(a)将待测二进制程序进行逆向分析得到其控制流图;
(b)对待测二进制程序的控制流图中的每个基本块进行特征提取,得到每个基本块的特征向量。
6.根据权利要求3所述的智能模糊测试方法,其特征在于,步骤(3)中,在模糊测试过程中,采用二进制动态插桩技术记录测试例执行路径中的所有基本块。
CN201810464884.4A 2018-05-15 2018-05-15 一种基于脆弱性学习的智能模糊测试方法与系统 Active CN108647520B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810464884.4A CN108647520B (zh) 2018-05-15 2018-05-15 一种基于脆弱性学习的智能模糊测试方法与系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810464884.4A CN108647520B (zh) 2018-05-15 2018-05-15 一种基于脆弱性学习的智能模糊测试方法与系统

Publications (2)

Publication Number Publication Date
CN108647520A CN108647520A (zh) 2018-10-12
CN108647520B true CN108647520B (zh) 2020-05-29

Family

ID=63755767

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810464884.4A Active CN108647520B (zh) 2018-05-15 2018-05-15 一种基于脆弱性学习的智能模糊测试方法与系统

Country Status (1)

Country Link
CN (1) CN108647520B (zh)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109525556B (zh) * 2018-10-18 2022-01-11 中国电力科学研究院有限公司 一种用于确定嵌入式系统固件中协议漏洞的轻量级方法及系统
CN109902024B (zh) * 2019-03-18 2022-04-29 中国人民解放军战略支援部队信息工程大学 一种程序路径敏感的灰盒测试方法及装置
CN110059010B (zh) * 2019-04-12 2023-01-31 西北工业大学 基于动态符号执行与模糊测试的缓冲区溢出检测方法
CN110008710B (zh) * 2019-04-15 2022-11-18 上海交通大学 基于深度强化学习和程序路径插桩的漏洞检测方法
CN110175454B (zh) * 2019-04-19 2021-03-26 佛山市微风科技有限公司 一种基于人工智能的智能合约安全漏洞挖掘方法及系统
CN110276198B (zh) * 2019-06-14 2021-04-20 中国科学院信息工程研究所 一种基于概率预测的嵌入式可变粒度控制流验证方法及系统
US11205004B2 (en) * 2019-06-17 2021-12-21 Baidu Usa Llc Vulnerability driven hybrid test system for application programs
CN110365678B (zh) * 2019-07-15 2021-10-22 北京工业大学 一种基于反样本的工控网络协议漏洞挖掘方法
CN110443045B (zh) * 2019-08-13 2020-12-15 北京计算机技术及应用研究所 一种基于机器学习方法的模糊测试用例生成方法
CN110764992B (zh) * 2019-08-26 2023-06-16 北京丁牛科技有限公司 测试方法及装置
CN110895508B (zh) * 2019-10-16 2022-05-24 厦门美柚股份有限公司 生成遍历测试路径的方法及装置
CN111008126A (zh) * 2019-11-13 2020-04-14 浙江大学 基于粒子群优化的模糊测试变异调度方法和系统
CN110990277A (zh) * 2019-11-29 2020-04-10 珠海豹趣科技有限公司 一种漏洞挖掘方法、装置及计算机可读存储介质
CN111767546B (zh) * 2020-06-17 2022-09-16 北京理工大学 一种基于深度学习的输入结构推断方法和装置
CN111858358B (zh) * 2020-07-23 2023-07-25 中国人民解放军国防科技大学 一种面向二进制代码的导向型模糊测试方法
CN111897729B (zh) * 2020-08-03 2022-08-19 北京理工大学 基于TensorFuzz的深度神经网络模糊测试框架和测试方法
CN112364354A (zh) * 2020-11-04 2021-02-12 深圳供电局有限公司 一种云安全漏洞的挖掘分析系统
US11809841B1 (en) * 2020-12-10 2023-11-07 Amazon Technologies, Inc. Automatic source code refactoring to mitigate anti-patterns
CN112463638B (zh) * 2020-12-11 2022-09-20 清华大学深圳国际研究生院 基于神经网络的模糊测试方法及计算机可读存储介质
CN112527681B (zh) * 2020-12-24 2024-03-12 中国银联股份有限公司 一种程序的漏洞检测方法及装置
CN113204498B (zh) * 2021-06-07 2023-04-07 支付宝(杭州)信息技术有限公司 针对闭源函数库生成模糊测试驱动器的方法和装置
CN113569251B (zh) * 2021-07-05 2024-05-31 哈尔滨工业大学 一种基于汇编指令序列的二进制可执行文件脆弱性检测方法
CN114117454A (zh) * 2021-12-10 2022-03-01 中国电子科技集团公司第十五研究所 一种基于漏洞预测模型的种子优化方法
CN115576840B (zh) * 2022-11-01 2023-04-18 中国科学院软件研究所 基于机器学习的静态程序插桩检测方法及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7926114B2 (en) * 2007-05-31 2011-04-12 Microsoft Corporation Testing software applications with schema-based fuzzing
CN102385550B (zh) * 2010-08-30 2012-10-31 北京理工大学 一种针对软件缺陷的检测方法
CN102622558B (zh) * 2012-03-01 2014-10-08 北京邮电大学 一种二进制程序漏洞的挖掘装置和方法
CN107832619B (zh) * 2017-10-10 2020-12-15 电子科技大学 Android平台下应用程序漏洞自动化挖掘系统及方法

Also Published As

Publication number Publication date
CN108647520A (zh) 2018-10-12

Similar Documents

Publication Publication Date Title
CN108647520B (zh) 一种基于脆弱性学习的智能模糊测试方法与系统
Wang et al. Combining graph-based learning with automated data collection for code vulnerability detection
CN111460472B (zh) 一种基于深度学习图网络的加密算法识别方法
CN113158194B (zh) 一种基于多关系图网络的漏洞模型的构建方法及检测方法
CN113836009B (zh) 一种基于强化学习的智能合约模糊测试方法及系统
CN113326050A (zh) 基于神经网络与动态模糊测试结合的智能合约漏洞检测方法
CN113468044B (zh) 一种基于改进的灰色预测演化算法的测试用例生成方法
CN111177731A (zh) 一种基于人工神经网络的软件源代码漏洞检测方法
CN114996126A (zh) 一种针对eosio智能合约的漏洞检测方法及系统
CN113010895A (zh) 一种基于深度学习的漏洞危害评估指标技术
CN115048316A (zh) 一种半监督的软件代码缺陷检测方法及装置
CN115935372A (zh) 一种基于图嵌入和双向门控图神经网络的漏洞检测方法
CN116361788A (zh) 一种基于机器学习的二进制软件漏洞预测方法
Dahl et al. Stack-based buffer overflow detection using recurrent neural networks
CN114254323A (zh) 基于PCODE和Bert的软件脆弱性分析方法及系统
CN116663019B (zh) 一种源代码漏洞检测方法、装置和系统
CN113904844A (zh) 基于跨模态教师-学生网络的智能合约漏洞检测方法
CN117725592A (zh) 一种基于有向图注意力网络的智能合约漏洞检测方法
CN116702157B (zh) 一种基于神经网络的智能合约漏洞检测方法
CN117692242A (zh) 一种基于图谱分析的网络攻击路径分析方法
CN117272312A (zh) 一种基于强化学习的可解释性智能合约漏洞检测及定位方法
CN114707151B (zh) 一种基于api调用和网络行为的僵尸软件检测方法
CN114840856B (zh) 一种状态感知的物联网可信执行环境模糊测试方法和系统
CN116663018A (zh) 一种基于代码可执行路径的漏洞检测方法及装置
CN116561761A (zh) 一种基于智能合约字节码的漏洞检测方法及系统

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