CN103198260A - 一种二进制程序漏洞自动化定位方法 - Google Patents
一种二进制程序漏洞自动化定位方法 Download PDFInfo
- Publication number
- CN103198260A CN103198260A CN2013101049538A CN201310104953A CN103198260A CN 103198260 A CN103198260 A CN 103198260A CN 2013101049538 A CN2013101049538 A CN 2013101049538A CN 201310104953 A CN201310104953 A CN 201310104953A CN 103198260 A CN103198260 A CN 103198260A
- Authority
- CN
- China
- Prior art keywords
- instruction
- leak
- program
- node
- dependent tree
- 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
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种二进制程序漏洞自动化定位方法。本方法为:1)运行待检测二进制程序,记录从该程序开始运行到出错过程中所有指令;2)根据所记录的指令构建漏洞依赖树,并根据所构建漏洞依赖树从所记录指令中检测指令中的漏洞指令;其中,构建所述漏洞依赖树的过程中,每增加若干个节点检查是否出现漏洞候选节点,如果出现,则产生该漏洞候选节点的临时补丁;3)观察该临时补丁是否有效,如果有效则停止构建漏洞依赖树,并作为定位到漏洞位置的依据;否则继续构建漏洞依赖树。本发明减少了需要分析的指令数量,极大地提高了分析效率。
Description
技术领域
本发明主要涉及漏洞定位方法,更确切地是涉及一种二进制程序漏洞自动化定位方法,属于网络信息安全领域。
背景技术
漏洞已经给Internet带来很大威胁:一方面,攻击者可以利用漏洞入侵系统;另一方面,蠕虫利用漏洞进行传播,并产生破坏。近些年,软件漏洞数量持续上涨,但是其补丁的生成需要很长时间,据分析微软当前的21个漏洞(MS11-087~MS12-007)公布和补丁发布平均需要115天。补丁的生成需要较长时间的主要原因:首先,软件越来越复杂,分析人员需要针对数以万计的指令进行分析,因此,在软件中快速定位漏洞代码是困难的;其次,漏洞种类繁多,分析人员需要熟悉各种类型,也增加了查找漏洞的难度;最后,由于大部分程序并不开源,只有开发人员可以对漏洞分析并打补丁,降低了第三方专业人员的参与度,减少了发布补丁的有效通道。由此可见,需要很长时间来发布漏洞补丁,给用户带来了很大安全威胁。
为了解决上述问题,现有方法主要分为三类:1)一类方法主要针对单一类型的漏洞进行分析(如缓冲区溢出)定位并产生补丁,但是只能解决一种类型的漏洞且大多数方法需要源代码的支持;2)一类方法从正常执行流中研究不变量来定位漏洞,但是这类方法无法寻找出漏洞的真正成因;3)差分切片可以在两个相似的路径中发现不同,帮助分析人员识别执行中的异常,但是需要一个正常执行流作比对,而不同程序输入会使得执行流差异不可控,因此难以找到合适的用于比对的执行流。因此,如何对漏洞进行快速定位是当前补丁生成面临的重要难题,也是当前研究的热点。
发明内容
针对上述问题,本发明的目的在于面向无需源码的二进制程序提供一种二进制程序漏洞自动化定位方法,它支持多种类型的漏洞,包括堆/栈/整数型/缓冲区溢出,内存泄漏,格式字符串等。通过对程序执行路径进行记录,进而对异常位置进行分析,产生的相应漏洞依赖树(以下简称“依赖树”),有效减少需要分析指令的数量,实现对漏洞位置的快速定位。在此基础上,提出一种简单有效的样例补丁生成方法,有效保证系统不被恶意利用。
根据以上目的,实现本发明的技术方案是:
一种二进制程序漏洞自动化定位方法,其步骤为:
1)运行待检测二进制程序,记录从该程序开始运行到出错过程中所有指令;
2)根据所记录的指令构建漏洞依赖树,并根据所构建漏洞依赖树从所记录指令中检测指令中的漏洞指令;其中,构建所述漏洞依赖树的过程中,每增加若干个节点检查是否出现漏洞候选节点,如果出现,则产生该漏洞候选节点的临时补丁;
3)观察该临时补丁是否有效,如果有效则停止构建漏洞依赖树,并作为定位到漏洞位置的依据;否则继续构建漏洞依赖树。
进一步的,所述漏洞依赖树中的节点表示该程序中的指令,指令之间通过边连接。
进一步的,所述漏洞依赖树的构建方法为:
1)初始化一工作集wl为空集;对所记录指令中每一执行路径,从该执行路径的最后一条指令开始,顺次取出一指令i;
2)将指令i对应的指令地址加入漏洞依赖树v,将由指令i使用的变量加入工作集wl;
3)初始化一变量branchNum=0;
4)如果指令i不为空且工作集wl不为空,则进行以下循环:如果指令i是依赖输入数据的分支指令,则branchNum=branchNum+1,即对依赖于外部输入的分支进行计数,i指向前一条指令,继续循环过程;如果当前指令i定义的变量var和wl有交集,则从wl中移除这个变量var,并在wl中加入当前指令i使用的变量;计算边长度edgeLen=branchNum-j为指令j到树根的长度,指令j为漏洞依赖树中使用var的节点;然后在漏洞依赖树v中增加节点i,在漏洞依赖树v中增加边(j,i),其长度为edgeLen。
进一步的,所述每增加若干个节点检查是否出现漏洞候选节点的方法为:a)每增加若干个节点后,检测所述漏洞依赖树中连接每一新增加节点的入边和出边,如果其长度的比值大于设定阈值则将此节点作为漏洞候选节点;b)选择所增加若干个节点中改变变量范围值超过设定比例的节点,将此节点作为漏洞候选节点。
进一步的,所述记录从该程序开始运行到出错过程中所有指令的方法为:首先设定一阈值;然后从该程序开始运行到出错过程中,对每条指令进行记录,包括每个分支指令和选用的分支进行记录,当记录指令超过设定阈值时则新记录的指令将覆盖最先记录的指令,进行循环记录。
进一步的,如果该程序的指令指针依赖于外部输入,或者内存引用依赖于外部输入,或者指定的异常函数被触发,则判定该程序出错。
进一步的,所述临时补丁的生成方法为:利用指令的执行条件,实现不执行这条指令即可得到程序运行不出错结果的临时补丁。
进一步的,如果函数A调用函数B出现问题,但该函数B也被其他函数调用且没出现问题,则对函数A打补丁。
本发明的主要内容为:
1)在攻击检测阶段:在攻击输入,即输入待检测二进制程序,程序运行过程中记录导致程序错误的执行路径。通过污点分析或程序是否崩溃来检测攻击,如程序指针(EIP)依赖于外部输入或者某些异常被触发,异常触发包括UNHANDLED_EXCEPTION_FILTER函数被调用等。
2)当检测到攻击后:找到执行路径中相关指令中的漏洞,并产生依赖树。与传统切片方法不同,我们在树中增加边的长度来显示指令和漏洞之间的相关度,依赖树中节点表示程序中某个指令,边是连接这些指令的。当节点之间存在数据依赖关系时,例如指令a中使用了在指令b中定义的变量,则有一条从a到b的边。相关度即“边的长度”,指两个指令之间的“依赖于外部输入的条件指令”数目。利用当前执行路径即可产生依赖树。
3)依赖树的构建:并不是路径上所有指令都需要分析。实际上在构建依赖树的过程中,当发现可能是漏洞的代码,就停止构建依赖树,并产生一个临时补丁。临时补丁可以验证漏洞位置的正确性,同时也是对攻击的一种临时防御措施(有可能产生程序的非正常运行),为真实漏洞分析提供参考;验证方法为:如果变化程序输入,漏洞不再出现,程序也能正常运行,则判断这个补丁有效。如果验证失败,则继续构建依赖树,找其他指令;如果成功,则停止依赖树的构建过程。
临时补丁的生成方法,即利用指令的执行条件(控制这条指令执行的条件指令),从而不执行这条指令,也就避免了漏洞的发生。(如执行条件是判断某个标志位不为1,则把这个标志位设置为1,这样这条指令就不执行了。)这个是临时的方法,本文的目的不在于找到正确的补丁,而是提供一个定位漏洞的方法,为今后正确补丁提供支持。
与现有技术相比,本发明的积极效果为:
本发明的优点在于,在无源码情况下定位多种类型的未知漏洞位置,通过构建依赖树,并在依赖树边上进行赋值,有效描述指令和漏洞之间的相关度,在减少了需要分析的指令数量的同时,极大地提高了分析效率;此外,提出一种临时漏洞补丁生成方法,可以临时防御漏洞被恶意利用。
附图说明
图1为程序执行中漏洞定位处理流程图;
图2为跟踪路径。
图3为根据图2样例代码生成的依赖树。
具体实施方式
1)在待检测二进制程序运行中记录错误运行的执行路径,即记录从程序开始运行到出错过程中所有指令(已知某个输入会导致程序出错,如崩溃现象,然后从头就开始记录)。为了避免再次对程序进行分析,记录过程中包括对每个分支指令和选用的分支也进行记录。在实际分析中,由于漏洞位置与指令较为接近,而且考虑到程序和硬盘空间的限制,我们设定阈值进行指令跟踪与记录,目前选用100000个,如果超过此阈值,新记录的指令将覆盖最先记录的指令,进行循环记录。如果在记录的指令中无法找到漏洞代码,我们将重新设定阈值并运行程序。
对指令进行记录后,将检测利用漏洞的位置。
当满足如下条件时,判定漏洞被利用,即导致程序出错:
●指令指针EIP依赖于外部输入数据,此时程序指针能够被外部输入改写,易出现任意代码执行的危险。
●内存引用依赖于外部输入,此时内存引用被外部输入任意指定,易产生任意读/写错误。
●系统默认异常处理函数被触发,此时表示系统出现异常,也属于错误类型一种。
2)因为执行路径中有数以百万计的指令,很难直接找到漏洞代码。我们将选择与漏洞相关的指令,为后续分析漏洞代码位置提供基础。
首先,根据指令构建漏洞依赖树。漏洞依赖树构建算法如下:
输入:执行路径t,执行路径由记录的指令组成,即路径是一组指令;即输入上一步记录的指令;
输出:依赖树v
即:
在构建好依赖树之后,可以通过对依赖树的分析定位漏洞可能出现的程序位置,进而寻找漏洞解决方法。
举例说明:
指令如表1所示,设置第9行作为程序的入口点;输入字符为0x78作为终止符。表1中第12行为用户终端输入一个字符,第13行判断是否为0x78,如果不等就继续循环,否则跳到第20行。
表1代码样例
图2为当输入为连续16个不为字符0x78的执行路径图。其中双圆圈的点表示与输入相关的分支语句;单圆圈是赋值节点。“0x10”和“0x11”分别表示“11,13,15”和“1,2,4”循环的次数。此外,一些没有内存操作指令(如第十行)将不会构建在执行路径图中。
依据具体算法,图2可以生成依赖树如图3所示。其中,“24”节点为崩溃节点,将其定义为树根,相关的工作集包括eax。由此节点开始,将与其相关的路径,对eax产生影响的输入的节点进行记录,并构建在依赖树中。可知,对eax产生影响的为“23”节点中的ebp变量及[ebp-0x1c]的值。在22行调用L1的过程中,初始的时候edi为ebp-0x2c,由于循环每次对edi增加1(第5行),在循环11次后,edi为ebp-0x1c,所以节点4改变了[edi-0x1c]的值,将其加入依赖树中,同时将edi和eax加入工作集中。由于节点1改变了eax,将节点1加入依赖树同时将esi以及[ebp-0x8]加入工作集中(此时esi=ebp-0x8),注意节点2是一个分支语句,且依赖于外部输入,所以节点4到节点1的边标记长度为1。以此类推,最后终止于节点“9”。而且由于节点“1”到节点“9”中存在0x20个依赖于外部输入的分支语句(涉及分支的节点“13”和“2”),因此,该边赋值为0x20。
3)依赖树中的节点与利用指令相关,但是并不都是漏洞代码,给漏洞打补丁的方法并不唯一,我们的方法基于如下条件构建:
●当有漏洞的程序打好补丁后,即使输入相同时,漏洞也不能被利用。
●打好补丁的程序在输入其他数据时,仍能正常运行,即补丁尽可能少的影响原始程序;例如发现一个错误的pdf文件会导致acrobat reader崩溃,那么使用正确的pdf文件进行这项测试。
我们对漏洞代码定位产生一些规则:
R1)在依赖树中选择边长度变化比较大的节点(即连接某个节点的入边和出边,如果其长度的比值大于某个阈值则可以将此节点作为漏洞候选节点),如果前面的长度都是0或者1,突然来了一个11或者20,则认为变化比较大,具体执行的时候可以有一个指标,如10倍于之前的距离等。因此,可以尽量将漏洞定位在一个小的代码区域中,即可以先检查被利用指令附近的代码。
R2)选择改变某个变量值范围超过设定比例的指令,这些指令更可能让程序运行异常。例如某条指令将某个变化突然变为原始数值的一倍以上,则有可能出错。修改过程即为利用这个语句的前面的分支语句条件,使得这条指令不执行。
R3)补丁代码尽可能少的执行,例如我们试图给调用程序本身打补丁,而不是被调用的程序。举个例子,例如函数A调用函数B,如果发现问题可能出现在B中,但是B也同时被函数C等其他函数调用且没出现问题,则尽量对函数A打补丁。实际情况中,B很可能是strcpy这类函数,其本身不存在问题,而是调用strcpy这个函数的其他函数上的问题。
其中R1和R2可以帮助定位受攻击代码区域,R3帮助调整补丁位置,找到最合适的;一般情况下,可以顺着函数调用的方向向上,即发现某个函数被多次调用且在其被调用的时候漏洞现象不出现,我们就尽量在其父函数(调用者)的位置进行补丁,以此类推。当然依此构建的临时补丁并不能替代正式补丁。一个样例补丁可以阻止使用漏洞进行攻击,帮助分析人员生成一个正式的补丁。
在图3中,节点4改变[ebp-0x1c],且深度为0。我们将其作为易攻击区域。由于节点4在第一段程序L1中,而且被其他指令(L22和L26)调用,我们设置调用指令为漏洞代码。为了修复这个漏洞,我们采用一个简单的方法,在L3处改变路径的方向。但是我们不能直接改变代码,因为分支指令执行多次(如图2中执行了0x11次),可能造成程序运行不正常。因此,在L22前增加代码“mov[ebp-0xc],0”。当打好补丁后,输入恶意数据或正常数据,程序都将运行正常,由此可验证漏洞位置的正确性。
在依赖树构建过程中,每增加若干个节点(根据“长度”来判断增加的数量),如果长度变化不大(即新增加若干节点后所产生的边长度未超过设定阈值)就一直构建,如果碰到长度很长的指令,则先停止,观察这些节点(指令)是否满足R1~R3,如果满足,就产生一个临时补丁,同时观察这个补丁是否有效,如果有效则停止构建依赖树,并作为找到漏洞位置的依据;如果这个指令不满足这些条件,则继续构建树并查找。
Claims (8)
1.一种二进制程序漏洞自动化定位方法,其步骤为:
1)运行待检测二进制程序,记录从该程序开始运行到出错过程中所有指令;
2)根据所记录的指令构建漏洞依赖树,并根据所构建漏洞依赖树从所记录指令中检测指令中的漏洞指令;其中,构建所述漏洞依赖树的过程中,每增加若干个节点检查是否出现漏洞候选节点,如果出现,则产生该漏洞候选节点的临时补丁;
3)观察该临时补丁是否有效,如果有效则停止构建漏洞依赖树,并作为定位到漏洞位置的依据;否则继续构建漏洞依赖树。
2.如权利要求1所述的方法,其特征在于所述漏洞依赖树中的节点表示该程序中的指令,指令之间通过边连接。
3.如权利要求1或2所述的方法,其特征在于所述漏洞依赖树的构建方法为:
1)初始化一工作集wl为空集;对所记录指令中每一执行路径,从该执行路径的最后一条指令开始,顺次取出一指令i;
2)将指令i对应的指令地址加入漏洞依赖树v,将由指令i使用的变量加入工作集wl;
3)初始化一变量branchNum=0;
4)如果指令i不为空且工作集wl不为空,则进行以下循环:如果指令i是依赖输入数据的分支指令,则branchNum=branchNum+1,即对依赖于外部输入的分支进行计数,i指向前一条指令,继续循环过程;如果当前指令i定义的变量var和wl有交集,则从wl中移除这个变量var,并在wl中加入当前指令i使用的变量;计算边长度edgeLen=branchNum-j为指令j到树根的长度,指令j为漏洞依赖树中使用var的节点;然后在漏洞依赖树v中增加节点i,在漏洞依赖树v中增加边(j,i),其长度为edgeLen。
4.如权利要求1或2所述的方法,其特征在于所述每增加若干个节点检查是否出现漏洞候选节点的方法为:a)每增加若干个节点后,检测所述漏洞依赖树中连接每一新增加节点的入边和出边,如果其长度的比值大于设定阈值则将此节点作为漏洞候选节点;b)选择所增加若干个节点中改变变量范围值超过设定比例的节点,将此节点作为漏洞候选节点。
5.如权利要求1或2所述的方法,其特征在于所述记录从该程序开始运行到出错过程中所有指令的方法为:首先设定一阈值;然后从该程序开始运行到出错过程中,对每条指令进行记录,包括每个分支指令和选用的分支进行记录,当记录指令超过设定阈值时则新记录的指令将覆盖最先记录的指令,进行循环记录。
6.如权利要求1或2所述的方法,其特征在于如果该程序的指令指针依赖于外部输入,或者内存引用依赖于外部输入,或者指定的异常函数被触发,则判定该程序出错。
7.如权利要求1所述的方法,其特征在于所述临时补丁的生成方法为:利用指令的执行条件,实现不执行这条指令即可得到程序运行不出错结果的临时补丁。
8.如权利要求7所述的方法,其特征在于如果函数A调用函数B出现问题,但该函数B也被其他函数调用且没出现问题,则对函数A打补丁。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310104953.8A CN103198260B (zh) | 2013-03-28 | 2013-03-28 | 一种二进制程序漏洞自动化定位方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310104953.8A CN103198260B (zh) | 2013-03-28 | 2013-03-28 | 一种二进制程序漏洞自动化定位方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103198260A true CN103198260A (zh) | 2013-07-10 |
CN103198260B CN103198260B (zh) | 2016-06-08 |
Family
ID=48720807
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310104953.8A Active CN103198260B (zh) | 2013-03-28 | 2013-03-28 | 一种二进制程序漏洞自动化定位方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103198260B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107239696A (zh) * | 2017-04-11 | 2017-10-10 | 中国科学院信息工程研究所 | 一种针对虚拟化超级调用函数的漏洞热修复方法 |
CN108073817A (zh) * | 2017-12-05 | 2018-05-25 | 中国科学院软件研究所 | 一种基于主动构造的离线堆溢出漏洞挖掘方法 |
CN110059390A (zh) * | 2019-04-10 | 2019-07-26 | 北京中科寒武纪科技有限公司 | 待测器件验证装置及相关产品 |
CN110261758A (zh) * | 2019-06-10 | 2019-09-20 | 北京中科寒武纪科技有限公司 | 待测器件验证装置及相关产品 |
CN111783103A (zh) * | 2020-07-03 | 2020-10-16 | Oppo广东移动通信有限公司 | 基于Maven的依赖管理方法、装置、电子装置及存储介质 |
CN111914260A (zh) * | 2020-06-22 | 2020-11-10 | 西安交通大学 | 一种基于函数差分的二进制程序漏洞检测方法 |
CN112434305A (zh) * | 2020-12-07 | 2021-03-02 | 北京中科微澜科技有限公司 | 基于补丁的漏洞检测方法、装置、存储介质和电子设备 |
CN113407442A (zh) * | 2021-05-27 | 2021-09-17 | 杭州电子科技大学 | 一种基于模式的Python代码内存泄漏检测方法 |
CN111783103B (zh) * | 2020-07-03 | 2024-06-04 | Oppo广东移动通信有限公司 | 基于Maven的依赖管理方法、装置、电子装置及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101616151A (zh) * | 2009-07-31 | 2009-12-30 | 中国科学院软件研究所 | 一种自动化的网络攻击特征生成方法 |
CN102054149A (zh) * | 2009-11-06 | 2011-05-11 | 中国科学院研究生院 | 一种恶意代码行为特征提取方法 |
US8024719B2 (en) * | 2008-11-03 | 2011-09-20 | Advanced Micro Devices, Inc. | Bounded hash table sorting in a dynamic program profiling system |
-
2013
- 2013-03-28 CN CN201310104953.8A patent/CN103198260B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8024719B2 (en) * | 2008-11-03 | 2011-09-20 | Advanced Micro Devices, Inc. | Bounded hash table sorting in a dynamic program profiling system |
CN101616151A (zh) * | 2009-07-31 | 2009-12-30 | 中国科学院软件研究所 | 一种自动化的网络攻击特征生成方法 |
CN102054149A (zh) * | 2009-11-06 | 2011-05-11 | 中国科学院研究生院 | 一种恶意代码行为特征提取方法 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107239696A (zh) * | 2017-04-11 | 2017-10-10 | 中国科学院信息工程研究所 | 一种针对虚拟化超级调用函数的漏洞热修复方法 |
CN107239696B (zh) * | 2017-04-11 | 2019-07-19 | 中国科学院信息工程研究所 | 一种针对虚拟化超级调用函数的漏洞热修复方法 |
CN108073817A (zh) * | 2017-12-05 | 2018-05-25 | 中国科学院软件研究所 | 一种基于主动构造的离线堆溢出漏洞挖掘方法 |
CN110059390A (zh) * | 2019-04-10 | 2019-07-26 | 北京中科寒武纪科技有限公司 | 待测器件验证装置及相关产品 |
CN110059390B (zh) * | 2019-04-10 | 2022-12-09 | 中科寒武纪科技股份有限公司 | 待测器件验证装置及相关产品 |
CN110261758B (zh) * | 2019-06-10 | 2021-09-21 | 中科寒武纪科技股份有限公司 | 待测器件验证装置及相关产品 |
CN110261758A (zh) * | 2019-06-10 | 2019-09-20 | 北京中科寒武纪科技有限公司 | 待测器件验证装置及相关产品 |
CN111914260A (zh) * | 2020-06-22 | 2020-11-10 | 西安交通大学 | 一种基于函数差分的二进制程序漏洞检测方法 |
CN111914260B (zh) * | 2020-06-22 | 2023-03-31 | 西安交通大学 | 一种基于函数差分的二进制程序漏洞检测方法 |
CN111783103A (zh) * | 2020-07-03 | 2020-10-16 | Oppo广东移动通信有限公司 | 基于Maven的依赖管理方法、装置、电子装置及存储介质 |
CN111783103B (zh) * | 2020-07-03 | 2024-06-04 | Oppo广东移动通信有限公司 | 基于Maven的依赖管理方法、装置、电子装置及存储介质 |
CN112434305A (zh) * | 2020-12-07 | 2021-03-02 | 北京中科微澜科技有限公司 | 基于补丁的漏洞检测方法、装置、存储介质和电子设备 |
CN112434305B (zh) * | 2020-12-07 | 2024-03-08 | 北京中科微澜科技有限公司 | 基于补丁的漏洞检测方法、装置、存储介质和电子设备 |
CN113407442A (zh) * | 2021-05-27 | 2021-09-17 | 杭州电子科技大学 | 一种基于模式的Python代码内存泄漏检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103198260B (zh) | 2016-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103198260A (zh) | 一种二进制程序漏洞自动化定位方法 | |
Andriesse et al. | Compiler-agnostic function detection in binaries | |
Gupta et al. | PHP-sensor: a prototype method to discover workflow violation and XSS vulnerabilities in PHP web applications | |
KR101568224B1 (ko) | 소프트웨어 취약점 분석방법 및 분석장치 | |
CN108694320B (zh) | 一种多安全环境下敏感应用动态度量的方法及系统 | |
CN108459954B (zh) | 应用程序漏洞检测方法和装置 | |
CN112733150B (zh) | 一种基于脆弱性分析的固件未知漏洞检测方法 | |
CN105681134A (zh) | 一种通用型多种串口通信协议检测识别方法 | |
WO2020075335A1 (ja) | 解析機能付与装置、解析機能付与方法及び解析機能付与プログラム | |
CN111240991B (zh) | 一种抗隐式污点传播的动态污点检测方法及系统 | |
CN102693396A (zh) | 一种基于虚拟执行模式的Flash漏洞检测方法 | |
CN112749389B (zh) | 一种检测智能合约破坏敏感数据漏洞的检测方法及装置 | |
CN104766016B (zh) | 一种基于系统调用短序列的软件漏洞检测方法 | |
CN109241737B (zh) | 一种面向多种补丁模式的差异分支识别方法及系统 | |
CN107193732A (zh) | 一种基于路径比对的校验函数定位方法 | |
CN112651028A (zh) | 基于上下文语义和补丁验证的漏洞代码克隆检测方法 | |
KR101696694B1 (ko) | 역추적을 이용한 소스 코드 취약점 분석 방법 및 장치 | |
CN108399321B (zh) | 基于动态指令依赖图胎记的软件局部抄袭检测方法 | |
CN108959936A (zh) | 一种基于路径分析的缓冲区溢出漏洞自动利用方法 | |
Xiao et al. | Viva: Binary level vulnerability identification via partial signature | |
CN111159482A (zh) | 数据校验方法及系统 | |
JP4913353B2 (ja) | ソフトウェア動作モデル化装置及びソフトウェア動作監視装置 | |
CN111475809B (zh) | 脚本混淆检测方法、装置、计算机设备和存储介质 | |
CN104239801A (zh) | 0day漏洞的识别方法以及装置 | |
RU168346U1 (ru) | Устройство выявления уязвимостей |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |