CN110909358A - 一种基于动静态分析的整形漏洞检测方法 - Google Patents
一种基于动静态分析的整形漏洞检测方法 Download PDFInfo
- Publication number
- CN110909358A CN110909358A CN201911005049.5A CN201911005049A CN110909358A CN 110909358 A CN110909358 A CN 110909358A CN 201911005049 A CN201911005049 A CN 201911005049A CN 110909358 A CN110909358 A CN 110909358A
- Authority
- CN
- China
- Prior art keywords
- operand
- value
- shaping
- type
- type information
- 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
Images
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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种基于动静态分析的整形漏洞检测方法,它结合了静态和动态程序分析技术。欲保护的点包括在静态分析阶段,该工具反编译二进制程序,并创建可疑的指令集。在动态分析阶段,该工具动态扫描可疑指令集中的指令,结合可触发漏洞的输入,判断指令是否是漏洞。目前的漏洞挖掘要么静态分析,要么动态分析。而该漏洞检测技术可以很好的弥补现有漏洞挖掘的不足,不仅提供了精确并且充足的类型信息,而且通过基于反编译器的静态分析,减少了动态运行时需要检测的指令数目。
Description
技术领域
本发明涉及针对整形漏洞的检测方法,特别涉及一种基于动静态分析的整形漏洞检测方法。
背景技术
在过去的几年里,一些检测整形漏洞的方法被提出。但整形漏洞仍然没有消失,其主要原因有三点:(1)有相当多的方法,如BLIP,RICH,SafeInt,IntSafe等需要程序源代码,但对绝大多数商业软件来说,源代码对普通用户一般是不可得到的。(2)类型信息提取不完整。针对二进制代码的整形漏洞检测工具(BRICK,IntScope,SmartFuzz)在提取类型信息的时候,没有考虑控制流依赖关系,丢失了一部分的类型信息,从而影响到整形漏洞的检测。(3)检测局限性,一些工具只能检测整形溢出,如IntScope,UQBTng。而有的工具缺少专门针对整形漏洞的动态检测工具,会产生漏报,SmartFuzz产生可能触发整形漏洞的测试用例,并通过检测工具Memcheck报告引起内存错误的测试用例。然而引起非控制流攻击的整形漏洞不能被Memcheck检测到,该漏洞的测试用例不会被报告,SmartFuzz产生漏报。
发明内容
发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种基于动静态分析的整形漏洞检测方法,包括如下步骤:
步骤1,建立整形漏洞模型,整形漏洞是在对整形变量进行运算的过程中没有考虑其边界范围,造成运算后的数值超出了其存储空间。描述漏洞相关的属性;
步骤2,根据整形漏洞模型,静态扫描二进制程序的代码,分析可疑指令集;
步骤3,根据整形漏洞模型,动态运行二进制程序的代码,检测可疑指令集中的指令是否为整形漏洞。
步骤1包括:
步骤1-1,建立检测整形溢出的规则:对特定的算术运算进行约束,特定的算术运算包括加、减、乘、除,约束是指根据算术运算的结果进行判断,防止超出结果变量的存储空间能够表示的最大值或最小值;判断算术运算得到的结果是否超过目标操作数所能表示的最大值或最小值,如果超过了最大值或者最小值,则需要对结果变量进行存储空间的扩容,增加其能够存储值的范围,使结果值能够准确的存储;
步骤1-2,建立检测赋值截断的规则:对赋值运算进行约束,判断源操作数的值是否在目标操作数类型可表示的数值范围内;数值范围是指数值变量的存储空间能够表示的最大值和最小值,比如32位的有符号整形变量的数值范围是-2,147,483,648~2,147,483,647;如果源操作数的值在目标操作数类型可表示的数值范围内,可以直接赋值;如果源操作数的值不在目标操作数类型可表示的数值范围内,则需要对目标操作数进行存储空间扩容,增加其可以存储值的范围,使其能够装下源操作数的值。
步骤1-3,建立检测符号错误的规则:对存在类型冲突的操作数进行约束,判断其值是否是负数;类型冲突的操作数是指定义时有符号数,而使用时是无符号数,或者相反,即定义时无符号数,使用时有符号数;只有在数值是负数时,类型冲突的操作数才会引起错误计算;如果是负数,则需要对操作数进行存储空间扩容,增加其能够存储值的范围;如果不是负数,则无需处理。
步骤2包括:给定二进制程序,采用静态分析的方法从二进制程序的代码中提取类型信息,并构造可疑指令集,在LLVM的基础上,对LLVM的类型分析进行扩展。
步骤2具体包括如下步骤:
步骤2-1,利用反编译器(例如Boomerang)将二进制程序转化为SSA形式的中间语言,并提供控制流图和数据流图;
步骤2-2,在中间语言上,按照反编译的顺序,利用函数和语句来提取类型信息,所述函数和语句包括:算术、逻辑运算,判断语句,数组下标,内存分配函数以及内存拷贝函数;
类型信息包括两部分(1)符号信息;(2)长度信息。例如32位有符号整形signedint,类型包括两部分:(1)有符号;(2)32位。
具体的,算术、逻辑运算能够从操作符来得到操作数的类型信息。指令系统的每一条指令都有一个操作符,它表示该指令应进行什么性质的操作。例如算术运算mov r/m8,r8,操作数类型的长度是8位,符号不确定。逻辑运算jb r32,操作数类型的长度是32位,无符号。
步骤2-3,获得类型信息后,在基本块内部按照数据流图中的数据依赖关系,传播类型信息,并更新没有确定的操作数类型;基本块是反编译器产生控制流图时的最小单位,基本块是顺序执行的语句序列。按照步骤2-2的方法,对基本块的语句进行分析,获得操作数的类型信息。对从单一指令无法获得类型信息的操作数,根据数据流图中的数据依赖关系,更新操作数的类型。
步骤2-4,利用控制流图,将类型信息传播到其他基本块,并保存操作数的类型信息;在获得操作数类型信息后,静态扫描二进制程序,将包含完整类型信息的算术运算和赋值操作作为可疑指令纳入可疑指令集。
步骤2-4中,针对整形溢出,将目标操作数有完整类型信息的算术运算指令放入可疑指令集;针对符号错误,将包含类型冲突操作数的指令放入可疑指令集;针对赋值截断,将源操作数与目标操作数大小不一致的赋值指令放入可疑指令集。
整形溢出:例如add ebx,[ebp+0x12b];如果目标操作数ebx的类型是32位,有符号数,则该加法运算加入可疑指令集。
符号错误:例如call strncpy;如果strncpy第三个参数ecx的类型原来是32位,且为有符号数,则作为无符号类型数传入strncpy,将该函数调用放入可疑指令集。
赋值截断:例如mov ebx.[ebp+0x12b];如果ebx代表的是32位操作数,内存[ebp+0x12b]代表是8位操作数,则将该赋值操作数放入可疑指令集。
步骤3包括如下步骤:
步骤3-1,染色分析:利用外部输入函数对外部输入的数据染色,并在二进制程序运行时传播该染色标记,从可疑指令集中,筛选出包含与外部输入相关操作数的指令;
接受外部输入的函数包括read,fread,recv等。选择这些函数作为外部输入源,并且将与这些函数相关的内存染色,根据不同的指令传播这些标记,检测那些包含染色数据的可疑指令。
例如,
call read;---[ebp-0x8]是read读入内容的内存,因此有染色标记;
mov edx,[ebp-0x8]---edx与[ebp-0x8]有数值依赖,因此edx也被染色标记。
mov ecx,edx---由于ecx的类型确定,因此该指令为可疑指令;又由于edx有染色标记,所以该可疑指令筛选出。
步骤3-2,动态检查:动态的运行二进制程序,利用步骤1-1~步骤1-3建立的三条规则对步骤3-1筛选出的指令进行检测,如果二进制程序违背了三条规则之一,即算术运算得到的结果超过目标操作数所能表示的最大值或最小值,或者,源操作数的值在目标操作数类型可表示的数值范围外,或者,对存在类型冲突的操作数进行约束,判断其值是负数,则表示检测到整形漏洞。
LLVM现有的类型构建仅仅考虑特殊的运算操作如IMUL,SAL确定操作数的符号类型。本发明扩展了该方法,利用以下特定函数或语句提取更多的类型信息:
内存分配函数:内存分配函数(如malloc,realloc)是攻击者的首选。内存分配函数的size参数是无符号型整数。
内存拷贝函数:内存拷贝函数(如memcpy,memset)包含无符号的length参数,这个参数决定了从源操作数拷贝数据到目标操作数的大小。如length参数被溢出,会引起缓冲区溢出。
数组下标:数组下标被视为无符号整数,它通常用做基地址访问内存的偏移。
判断语句:判断语句,特别是有符号的比较操作通常被攻击者利用负值绕过,接着这个负值被当作一个很大的无符号数使用。
LLVM记录少量的类型信息,它不保存单个操作数类型信息。为了方便类型分析。本发明为语句中的内存操作数保存类型信息。此外,LLVM不考虑由后向前的类型传播,然而在检测整形漏洞时,这种后向的传播方式非常重要。例如,符号错误中,需要判断同一操作数现有的类型信息和已有的类型信息是否存在冲突。
LLVM现有的类型分析通过数据流分析来提取类型信息,只能分析出在一个基本块内部的类型。本发明利用控制流分析,在基本块之间传播操作的类型信息,从而构造更完整的类型信息。
本发明中,提取类型信息的方法如下。首先当LLVM将程序装载时,修改某些库函数的定义,例如,修改memcpy第三个参数的类型,从“size_t”到“unsigned int”。第二步,LLVM执行其原有的类型分析功能。第三步,利用所述的某些函数或语句,提取类型信息并在基本块内部传播,记录内存操作数的类型信息传播到其他的基本块。当发现类型冲突时,设置该操作数类型为“bot”,但不再继续传播该类型。当没有可更新的类型信息时,停止类型传播。
静态分析得到的可疑指令集相对较大,并且包括一些良性的指令(程序员或编译器优化加进去的)。为了进一步的缩小检测指令的数量,减少程序的误报率,采用动态的染色技术选择那些包含外部输入数据的指令。接受外部输入的函数包括read,fread,recv等。选择这些函数作为外部输入源,并且将与这些函数相关的内存染色,根据不同的指令传播这些标记,仅检测那些饱含染色数据的可疑指令。染色分析组件基于二进制动态插装工具PIN实现。
动态检测组件也是在二进制动态插装工具PIN上实现。它结合了静态分析得出的可疑指令集,以及动态染色组件,选择可疑指令集中饱含染色数据的指令进行检测。为此,本发明设计了检测策略分别针对不同类型的整形漏洞。
针对整形溢出,通过EFLAGS寄存器来检测整形溢出。然而对于一些特殊的运算,需要重新计算。例如,8/16位的加法运算,GCC编译器在编译时,将8/16位的操作数提升至32位,并存入32位的寄存器。这会将内存中的一些“脏数据”存入32位寄存器的高字节,当执行该加法指令时,CF和SF符号位会出错。这种情况下,在检测时需要重新计算该加法指令。
符号错误:针对符号错误。检测那些源和目的操作数的指令。判断该操作数的值是否为负数。如果是,则报告符号错误。
赋值截断:针对赋值截断,检测那些源和目的操作数宽度类型不一致的赋值语句,并且判断源操作数的值是否超过了目标操作数类型所能表示的范围。
有益效果:本发明提供了一种基于动静态分析的整形漏洞检测方法,具有如下优点:1、可以有效的检测整形漏洞,包括整形溢出,符号错误,赋值截断等三种类型。2、无漏报率,误报率低于10%。3、可以发现未知漏洞。4、对没有源代码的商业程序可以分析,并且定位漏洞点。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
图1是本发明涉及的检测规则。
图2是本发明检测方法结构图。
具体实施方式
本发明方法提出了一种二进制工具,该工具由静态和动态分析两部分组成。首先,利用LLVM将x86二进制程序转换成中间语言。接着,通过扩展LLVM的类型分析系统,提取完整的类型信息,并且构造可疑指令集。最后,结合动态检测工具,在可疑指令集中确定与漏洞相关的指令。
如图2所示,为实现上述目的,本发明分三个步骤完成:
步骤1,建立整形漏洞模型,描述漏洞相关的属性;
步骤2,根据漏洞模型,静态扫描代码,分析可疑指令集;
步骤3,根据漏洞模型,动态运行代码,检测可疑指令集中的指令是否为整形漏洞;优选的,所述整形漏洞模型如下。图1中所示的三条规则分别针对三种整形漏洞的特点检测,图1中,规则一:
运算(内存地址)->
正常:最小值结果<=结果值<=最大值结果
否则存在整形溢出bug
结果值=左操作数操作符右操作数
规则二:
赋值(内存地址)->
正常:最小值目标操作数<=源操作数值<=最大值目标操作数
否则存在赋值截断bug
规则三、
操作数类型冲突->
正常:操作数值>=0
否则存在符号错误bug;
其中,第一条规则检测整形溢出。对一些特定的算术运算进行约束,判断算术运算得到的结果是否超过目标操作数所能表示的最大/最小值。第二条规则用来检测赋值截断。对赋值运算进行约束,判断源操作数的值是否在目标操作数类型可表示的数值范围内。第三条规则检测符号错误。用来对存在类型冲突的操作数进行约束,判断其值是否是负数。因为负数被有符号和无符号数解释称不同的数值。
优选的,所述静态分析方法。给定二进制程序,采用静态分析的方法从二进制程序中提取类型信息,并构造可疑指令集。在LLVM的基础上,对其类型分析进行扩展。
优选的,所述扩展的类型分析如下(1)利用反编译器将二进制程序转化为中间语言。(2)在该中间语言上,按照反编译的顺序,利用一些具体的函数和语句来提取信息,包括:算术/逻辑运算,判断语句,数组下标,内存分配函数以及内存拷贝函数。(3)获得类型信息后,在基本块内部按照数据流图中的数据依赖关系,传播该类型信息,并更新那些没有确定的操作数类型。(4)利用控制流图,将类型信息传播到其他基本块,并保存操作数的类型信息。
优选的,所述动态分析方法。静态分析得到较大的可疑指令集,需要从中进一步确定那些真正的整形漏洞,利用二进制动态插装工具,对程序进行动态分析,其过程分为两部分。(1)染色分析。由于整形漏洞通常由外部输入触发,因此那些包含与外部输入相关的操作数,并且在可疑指令集中的指令是检测的对象.利用一些常用的外部输入函数(读文件,读网络数据包,用户输入函数)对外部输入的数据染色,并在程序运行时传播该染色标记.从可疑指令集中,我们筛选出那些包含与外部输入相关操作数的指令。(2)动态检测.基于类型分析,动态的运行程序,并对上述筛选出的指令进行检测。
本发明提供了一种基于动静态分析的整形漏洞检测方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。
Claims (6)
1.一种基于动静态分析的整形漏洞检测方法,其特征在于,包括如下步骤:
步骤1,建立整形漏洞模型;
步骤2,根据整形漏洞模型,静态扫描二进制程序的代码,分析可疑指令集;
步骤3,根据整形漏洞模型,动态运行二进制程序的代码,检测可疑指令集中的指令是否为整形漏洞。
2.根据权利要求1所述的方法,其特征在于,步骤1包括:
步骤1-1,建立检测整形溢出的规则:对特定的算术运算进行约束,特定的算术运算包括加、减、乘、除,约束是指根据算术运算的结果进行判断,防止超出结果变量的存储空间能够表示的最大值或最小值;判断算术运算得到的结果是否超过目标操作数所能表示的最大值或最小值,如果超过了最大值或者最小值,则需要对结果变量进行存储空间的扩容,增加其能够存储值的范围;
步骤1-2,建立检测赋值截断的规则:对赋值运算进行约束,判断源操作数的值是否在目标操作数类型可表示的数值范围内;数值范围是指数值变量的存储空间能够表示的最大值和最小值,如果源操作数的值在目标操作数类型可表示的数值范围内,直接赋值;如果源操作数的值不在目标操作数类型可表示的数值范围内,则需要对目标操作数进行存储空间扩容,增加其可以存储值的范围,使其能够装下源操作数的值;
步骤1-3,建立检测符号错误的规则:对存在类型冲突的操作数进行约束,判断其值是否是负数;类型冲突的操作数是指定义时有符号数,而使用时是无符号数,或者相反,即定义时无符号数,使用时有符号数;只有在数值是负数时,类型冲突的操作数才会引起错误计算;如果是负数,则需要对操作数进行存储空间扩容,增加其能够存储值的范围;如果不是负数,则无需处理。
3.根据权利要求2所述的方法,其特征在于,步骤2包括:给定二进制程序,采用静态分析的方法从二进制程序的代码中提取类型信息,并构造可疑指令集,在LLVM的基础上,对LLVM的类型分析进行扩展。
4.根据权利要求3所述的方法,其特征在于,步骤2具体包括如下步骤:
步骤2-1,利用反编译器将二进制程序转化为SSA形式的中间语言,并提供控制流图和数据流图;
步骤2-2,在中间语言上,按照反编译的顺序,利用函数和语句来提取类型信息,所述函数和语句包括:算术、逻辑运算,判断语句,数组下标,内存分配函数以及内存拷贝函数;
所述类型信息包括两部分:符号信息和长度信息;
其中,算术、逻辑运算能够从操作符来得到操作数的类型信息;
步骤2-3,获得类型信息后,在基本块内部按照数据流图中的数据依赖关系,传播类型信息,并更新没有确定的操作数类型;
步骤2-4,利用控制流图,将类型信息传播到其他基本块,并保存操作数的类型信息;在获得操作数类型信息后,静态扫描二进制程序,将包含完整类型信息的算术运算和赋值操作作为可疑指令纳入可疑指令集。
5.根据权利要求4所述的方法,其特征在于,步骤2-4中,针对整形溢出,将目标操作数有完整类型信息的算术运算指令放入可疑指令集;针对符号错误,将包含类型冲突操作数的指令放入可疑指令集;针对赋值截断,将源操作数与目标操作数大小不一致的赋值指令放入可疑指令集。
6.根据权利要求5所述的方法,其特征在于,步骤3包括如下步骤:
步骤3-1,染色分析:利用外部输入函数对外部输入的数据染色,并在二进制程序运行时传播该染色标记,从可疑指令集中,筛选出包含与外部输入相关操作数的指令;
步骤3-2,动态检查:动态的运行二进制程序,利用步骤1-1~步骤1-3建立的三条规则对步骤3-1筛选出的指令进行检测,如果二进制程序违背了三条规则之一,即算术运算得到的结果超过目标操作数所能表示的最大值或最小值,或者,源操作数的值在目标操作数类型可表示的数值范围外,或者,对存在类型冲突的操作数进行约束,判断其值是负数,则表示检测到整形漏洞。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911005049.5A CN110909358A (zh) | 2019-10-22 | 2019-10-22 | 一种基于动静态分析的整形漏洞检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911005049.5A CN110909358A (zh) | 2019-10-22 | 2019-10-22 | 一种基于动静态分析的整形漏洞检测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110909358A true CN110909358A (zh) | 2020-03-24 |
Family
ID=69814914
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911005049.5A Pending CN110909358A (zh) | 2019-10-22 | 2019-10-22 | 一种基于动静态分析的整形漏洞检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110909358A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111428247A (zh) * | 2020-04-23 | 2020-07-17 | 南京大学 | 一种对计算机漏洞库进行改进的方法 |
CN111488579A (zh) * | 2020-03-25 | 2020-08-04 | 腾讯科技(深圳)有限公司 | 漏洞检测方法、装置、电子设备和计算机可读存储介质 |
CN111931187A (zh) * | 2020-08-13 | 2020-11-13 | 深信服科技股份有限公司 | 一种组件漏洞检测方法、装置、设备及可读存储介质 |
CN113672234A (zh) * | 2021-07-26 | 2021-11-19 | 北京市机械施工集团有限公司 | 一种用于数控设备的智能进度监控方法及系统 |
WO2021238462A1 (zh) * | 2020-05-28 | 2021-12-02 | 华为技术有限公司 | 一种检测内存乱序的方法及装置 |
CN114282221A (zh) * | 2021-12-09 | 2022-04-05 | 苏州浪潮智能科技有限公司 | 注入类漏洞检测方法、系统、终端及存储介质 |
CN114896606A (zh) * | 2022-07-13 | 2022-08-12 | 苏州知微安全科技有限公司 | 一种基于静态表达的漏洞数据动态处理方法及装置 |
CN115017507A (zh) * | 2022-07-14 | 2022-09-06 | 北京华云安信息技术有限公司 | 一种检测源代码篡改的方法、装置、设备及存储介质 |
CN115080985A (zh) * | 2022-07-27 | 2022-09-20 | 北京北大软件工程股份有限公司 | 基于分块的大规模代码静态分析方法和系统 |
CN116305173A (zh) * | 2023-05-24 | 2023-06-23 | 中国人民解放军国防科技大学 | 一种整数漏洞查找方法、装置、计算机设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510241A (zh) * | 2009-03-12 | 2009-08-19 | 南京大学 | 整形溢出漏洞的二进制检测定位装置 |
CN101551773A (zh) * | 2009-03-12 | 2009-10-07 | 南京大学 | 符号错误和赋值截断的二进制漏洞检测定位装置 |
CN101714118A (zh) * | 2009-11-20 | 2010-05-26 | 北京邮电大学 | 一种二进制代码缓冲区溢出漏洞的检测器及其检测方法 |
CN101814053A (zh) * | 2010-03-29 | 2010-08-25 | 中国人民解放军信息工程大学 | 一种基于功能模型的二进制代码漏洞发现方法 |
WO2018101575A1 (ko) * | 2016-11-29 | 2018-06-07 | 한국전력공사 | 바이너리 코드 기반 임베디드 소프트웨어 취약점 분석 장치 및 그 방법 |
-
2019
- 2019-10-22 CN CN201911005049.5A patent/CN110909358A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510241A (zh) * | 2009-03-12 | 2009-08-19 | 南京大学 | 整形溢出漏洞的二进制检测定位装置 |
CN101551773A (zh) * | 2009-03-12 | 2009-10-07 | 南京大学 | 符号错误和赋值截断的二进制漏洞检测定位装置 |
CN101714118A (zh) * | 2009-11-20 | 2010-05-26 | 北京邮电大学 | 一种二进制代码缓冲区溢出漏洞的检测器及其检测方法 |
CN101814053A (zh) * | 2010-03-29 | 2010-08-25 | 中国人民解放军信息工程大学 | 一种基于功能模型的二进制代码漏洞发现方法 |
WO2018101575A1 (ko) * | 2016-11-29 | 2018-06-07 | 한국전력공사 | 바이너리 코드 기반 임베디드 소프트웨어 취약점 분석 장치 및 그 방법 |
Non-Patent Citations (1)
Title |
---|
陈平: "基于动静态程序分析的整形漏洞检测工具", 《电子学报》 * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111488579A (zh) * | 2020-03-25 | 2020-08-04 | 腾讯科技(深圳)有限公司 | 漏洞检测方法、装置、电子设备和计算机可读存储介质 |
CN111428247A (zh) * | 2020-04-23 | 2020-07-17 | 南京大学 | 一种对计算机漏洞库进行改进的方法 |
WO2021238462A1 (zh) * | 2020-05-28 | 2021-12-02 | 华为技术有限公司 | 一种检测内存乱序的方法及装置 |
CN113742252A (zh) * | 2020-05-28 | 2021-12-03 | 华为技术有限公司 | 一种检测内存乱序的方法及装置 |
CN113742252B (zh) * | 2020-05-28 | 2024-03-29 | 华为技术有限公司 | 一种检测内存乱序的方法及装置 |
CN111931187A (zh) * | 2020-08-13 | 2020-11-13 | 深信服科技股份有限公司 | 一种组件漏洞检测方法、装置、设备及可读存储介质 |
CN113672234B (zh) * | 2021-07-26 | 2024-02-09 | 北京市机械施工集团有限公司 | 一种用于数控设备的智能进度监控方法及系统 |
CN113672234A (zh) * | 2021-07-26 | 2021-11-19 | 北京市机械施工集团有限公司 | 一种用于数控设备的智能进度监控方法及系统 |
CN114282221A (zh) * | 2021-12-09 | 2022-04-05 | 苏州浪潮智能科技有限公司 | 注入类漏洞检测方法、系统、终端及存储介质 |
CN114282221B (zh) * | 2021-12-09 | 2024-01-12 | 苏州浪潮智能科技有限公司 | 注入类漏洞检测方法、系统、终端及存储介质 |
CN114896606B (zh) * | 2022-07-13 | 2022-11-01 | 苏州知微安全科技有限公司 | 一种基于静态表达的漏洞数据动态处理方法及装置 |
CN114896606A (zh) * | 2022-07-13 | 2022-08-12 | 苏州知微安全科技有限公司 | 一种基于静态表达的漏洞数据动态处理方法及装置 |
CN115017507A (zh) * | 2022-07-14 | 2022-09-06 | 北京华云安信息技术有限公司 | 一种检测源代码篡改的方法、装置、设备及存储介质 |
CN115080985A (zh) * | 2022-07-27 | 2022-09-20 | 北京北大软件工程股份有限公司 | 基于分块的大规模代码静态分析方法和系统 |
CN116305173A (zh) * | 2023-05-24 | 2023-06-23 | 中国人民解放军国防科技大学 | 一种整数漏洞查找方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110909358A (zh) | 一种基于动静态分析的整形漏洞检测方法 | |
US9715593B2 (en) | Software vulnerabilities detection system and methods | |
CN101661543B (zh) | 软件源代码安全漏洞的检测方法及检测装置 | |
CN109002721B (zh) | 一种信息安全漏洞的挖掘分析方法 | |
US9824214B2 (en) | High performance software vulnerabilities detection system and methods | |
US9390261B2 (en) | Securing software by enforcing data flow integrity | |
KR100503387B1 (ko) | 악성 암호화 스크립트에 대한 분석 및 해독 방법 | |
US8407800B2 (en) | Method for software vulnerability flow analysis, generation of vulnerability-covering code, and multi-generation of functionally-equivalent code | |
CN111695119B (zh) | 一种基于细粒度静态污点分析与符号执行的web漏洞检测方法 | |
CN104636256A (zh) | 一种内存访问异常的检测方法及装置 | |
CN110287693B (zh) | 基于符号执行路径剪枝的缓冲区溢出漏洞自动检测方法 | |
US10599852B2 (en) | High performance software vulnerabilities detection system and methods | |
EP3264274B1 (en) | Input discovery for unknown program binaries | |
CN111475168A (zh) | 一种代码编译方法及装置 | |
CN109165509B (zh) | 软件实时可信度量的方法、设备、系统及存储介质 | |
Li | Finding concurrency exploits on smart contracts | |
CN113419960B (zh) | 用于可信操作系统内核模糊测试的种子生成方法及系统 | |
KR102425474B1 (ko) | BinTyper: C++ 프로그램 바이너리 대상의 타입 컨퓨전 버그 탐지 | |
CN114510723A (zh) | 一种智能合约权限管理漏洞检测方法及装置 | |
CN113139184A (zh) | 基于静态分析的Binder通信过载漏洞的检测方法 | |
CN114077737A (zh) | 基于污点分析的Android组件间通信数据流检测方法 | |
Stepney et al. | Formal methods for industrial products | |
Jiang et al. | An exploitability analysis technique for binary vulnerability based on automatic exception suppression | |
CN117389858A (zh) | 基于二进制重写的模糊测试方法、装置、设备和存储介质 | |
Situ et al. | Automatic detection and repair recommendation for missing checks |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200324 |