CN108073817A - 一种基于主动构造的离线堆溢出漏洞挖掘方法 - Google Patents

一种基于主动构造的离线堆溢出漏洞挖掘方法 Download PDF

Info

Publication number
CN108073817A
CN108073817A CN201711266952.8A CN201711266952A CN108073817A CN 108073817 A CN108073817 A CN 108073817A CN 201711266952 A CN201711266952 A CN 201711266952A CN 108073817 A CN108073817 A CN 108073817A
Authority
CN
China
Prior art keywords
heap
overflow
allocation
program
instruction
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
Application number
CN201711266952.8A
Other languages
English (en)
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.)
Institute of Software of CAS
Original Assignee
Institute of Software of CAS
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 Institute of Software of CAS filed Critical Institute of Software of CAS
Priority to CN201711266952.8A priority Critical patent/CN108073817A/zh
Publication of CN108073817A publication Critical patent/CN108073817A/zh
Pending legal-status Critical Current

Links

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
    • 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)
  • 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

本发明提供一种基于主动构造的离线堆溢出漏洞挖掘方法,通过分析程序动态执行记录(即使未发生程序崩溃),对执行中涉及的堆分配和堆访问操作进行关联性分析,对于每一个堆分配‑访问对,分析其可控属性(是否受外部输入影响)和溢出条件,结合路径约束条件,求解是否存在能够触发潜在的堆溢出的输入,并构造漏洞样本(PoC文件)进行验证,从而挖掘潜在的堆溢出漏洞。对比于通用的堆溢出漏洞挖掘方法更具针对性,直接从堆溢出的本质(即存在堆分配和访问不一致的情况)出发,结合外部输入是否能够影响堆操作,挖掘潜在的堆溢出漏洞。同时能够直接指出堆溢出发生的位置(不同于崩溃位置),便于安全人员分析和开发者修复。

Description

一种基于主动构造的离线堆溢出漏洞挖掘方法
技术领域
本发明属于软件漏洞挖掘技术领域,具体涉及一种基于主动构造的离线堆溢出漏洞挖掘方法。
背景技术
内存破坏漏洞是很严重的一类安全漏洞,其中栈溢出漏洞随着保护机制的完善已经很难利用,而堆溢出漏洞逐渐成为了研究的热点和难点。通过堆喷射或风水堆等方式,攻击者能够利用堆溢出漏洞达到任意地址读写和任意代码执行的攻击效果,具有很大危害。
现有的堆漏洞挖掘方法中,静态分析的方法因为指针别名、误报率高等问题,存在局限性。动态测试和分析的方法被越来越多的应用。模糊测试(Fuzzing)是其中广泛应用的方法之一,其通过生成大量的测试样本,检查是否能够触发程序崩溃,判断软件是否存在漏洞。例如开源模糊测试工具AFL(American Fuzzy Loop)即基于上述方式发现了大量的软件漏洞。此外,软件动态分析的方法应用于漏洞挖掘也取得了良好的效果,如麻省理工学院的Stelios等人研发的DIODE、阿姆斯特丹自由大学的Herbert等人研发的Dowser等成果,已发表在ASPLOS、USENIX Security等软件和安全顶级会议上。它们通过对软件执行过程中敏感操作的定位和分析,有指导性地探索软件执行状态,发掘软件漏洞。
尽管动态分析的漏洞挖掘方法已经取得了很大的研究进展和良好的应用效果,然而现有的方法仍然存在以下的不足:
1)模糊测试存在一定的盲目性,发现的崩溃样本仍然需要大量的后续分析确定漏洞类型2)通过堆漏洞检测发现堆溢出漏洞具有被动性,依赖于程序崩溃的触发
3)软件动态分析相关技术存在分析数据量过大、分析效率低等问题
发明内容
针对现有技术中存在的技术问题,本发明的目的在于提供一种基于主动构造的离线堆溢出漏洞挖掘方法,通过分析程序动态执行记录(即使未发生程序崩溃),对执行中涉及的堆分配和堆访问操作进行关联性分析,对于每一个堆分配-访问对,分析其可控属性(是否受外部输入影响)和溢出条件,结合路径约束条件,求解是否存在能够触发潜在的堆溢出的输入,并构造漏洞样本(PoC文件)进行验证,从而挖掘潜在的堆溢出漏洞。
本发明采取的技术方案是:
一种基于主动构造的离线堆溢出漏洞挖掘方法,其步骤如下:
在动态分析环境中执行目标程序,获取动态执行过程的指令记录;
对指令记录进行扫描,寻找并跟踪堆分配函数,根据堆分配函数的参数,重构并维护程序运行过程时的堆状态;
在扫描过程中,进行指针污点传播;当通过堆指针进行堆访问操作时,通过堆指针的污点信息回溯到相应的堆分配操作,建立堆分配-访问操作的关联;
标记外部输入为污点源,进行数据污点传播;当发现堆分配操作或堆访问操作时,检测堆分配或堆访问操作的相关参数是否被数据污点标记,记录污点信息以及堆状态信息;
对关联的每一个堆分配-访问操作,根据其数据污点状态和堆状态以及堆溢出的类型,构造潜在溢出条件;
再次对指令记录进行扫描,提取从外部污点数据进入程序开始,到存在潜在溢出可能的堆分配-访问对的程序执行路径上的路径约束条件,结合堆溢出条件,形成该堆分配-访问对的最终溢出条件;
求解最终溢出条件,如有解,则根据求解结果生成样本文件,再次运行程序并输入样本文件,用以验证堆溢出漏洞。
进一步地,所述堆分配函数选自malloc函数、free函数。
进一步地,所述在动态分析环境中执行目标程序包括:
通过目标程序打开原始种子文件,获取动态执行过程的指令记录;
所述指令记录包括指令信息、运行时寄存器信息。
进一步地,所述样本文件为依据最终溢出条件的求解结果修改原始的种子文件获得。
进一步地,所述对指令记录进行扫描,寻找并跟踪堆分配函数包括:
根据堆分配函数的指令偏移地址,在指令记录中寻找堆分配操作指令;
通过分析堆分配操作指令的上下文提取堆分配操作的参数;
所述参数包括:分配大小、分配地址。
进一步地,所述指针污点传播采用带符号标签的污点传播规则;所述数据污点传播采用带标签的污点传播规则;
所述最终溢出条件表示为可求解的符号表达式形式;
符号表达式采用Z3-Python的规则,将X86指令根据指令语义转化为Z3-Python的表达式。
进一步地,所述堆溢出条件用以表示是否存在堆访问的范围超过堆分配的范围的情况,存在则表示有堆溢出的可能;
路径约束条件用以表示目标程序是否沿着脆弱路径执行经过潜在的堆溢出漏洞的分配和访问操作。如是,则表示符合路径约束条件。
进一步地,所述求解最终溢出条件包括:采用Z3作为符号求解器;如有解,则得到的求解结果用以显示原始种子文件中与堆溢出条件相关的字节,并给字节满足堆溢出条件的取值。
一种服务器,其包括存储器和处理器,所述存储器存储计算机程序,所述程序被配置为由所述处理器执行,所述程序包括用于执行前述方法中各步骤的指令。
一种存储计算机程序的计算机可读存储介质,所述计算机程序包括指令,所述指令当由服务器的处理器执行时使得所述服务器执行前述方法中的各个步骤。
通过采取上述技术方案,本发明通过污点传播找到外部输入能够影响对操作的相关字节,再通过把路径约束和溢出条件转化为符号表达式求解的方法,主动构造样本触发潜在的堆溢出漏洞,提高了堆溢出漏洞的主动挖掘能力。
并且通过带标签的数据污点传播和符号标签的指针污点传播,提高了污点传播方法的准确性和描述能力。通过先进行污点传播再把相关指令转化为Z3-Python表达式的方法,减少了需要符号化的指令数量,提高了堆溢出漏洞挖掘的效率和可用性。
对比于通用的堆溢出漏洞挖掘方法更具针对性,直接从堆溢出的本质(即存在堆分配和访问不一致的情况)出发,结合外部输入是否能够影响堆操作,挖掘潜在的堆溢出漏洞。同时能够直接指出堆溢出发生的位置(不同于崩溃位置),便于安全人员分析和开发者修复。
附图说明
图1为本发明一实施例中基于主动构造的离线堆溢出漏洞挖掘方法的流程图。
图2为本发明一实施例中利用XnView软件打开正常的mbm文件,得到程序执行记录示意图。
图3为本发明一实施例中记录的堆分配-访问对的示意图。
图4为本发明一实施例中生成的包含最终溢出条件的PythonZ3可求解的表达式形式描述的示意图。
图5为本发明一实施例中求解PythonZ3表达式得到的、能够造成XnView软件崩溃的PoC文件示意图。
具体实施方式
下面结合附图详细说明本发明的技术方案:
如图1所示,一种基于主动构造的离线堆溢出漏洞挖掘方法,包括步骤:
在动态分析环境中执行目标程序,获取动态执行过程的指令记录,后续分析是基于指令记录的离线分析;
本实施例的分析对象是程序的动态执行记录,然而并不要求如何获得。如采用PIN等工具也可以得到动态执行记录,有相关的论文和工具,本发明采用修改QEMU源码,在系统底层指令转译过程插入分析代码的方式,在程序动态执行的同时记录运行的指令,并根据后续分析要求记录指令的上下文信息。后续分析要用到记录指令相关信息,包括指令和寄存器信息。
其中,在动态分析环境中执行目标程序,用目标程序打开原始的种子文件(无论是否能够触发程序崩溃),获取动态执行过程的指令记录,包括指令信息、运行时寄存器信息等;新的文件是通过分析原始种子文件的处理过程,发现问题后,修改原始文件得到的,种子文件为构造样本文件的基础,在执行目标程序过程中,所以打开原始种子文件是本申请的必要操作。
对指令记录进行扫描,寻找并跟踪堆分配函数(如malloc、free等),根据堆分配函数的参数,重构并维护程序运行过程时的堆状态;
逆向分析二进制指令记录,根据堆分配相关的系统调用(如malloc、free)的偏移地址计算得到当前系统调用的入口和出口地址,从而获得调用的参数和返回值,即堆分配的大小和地址,同时记录分配的时间(指令记录编号)。根据堆的变化,恢复程序的堆状态,并维护堆状态表便于后续分析查询。
根据堆分配函数的指令偏移地址,在指令记录中寻找堆分配操作(包括释放操作),通过分析堆分配相关指令的上下文提取堆分配操作相关参数,包括分配大小、分配地址等信息。利用堆状态表记录这些信息,并随着分析的过程进行更新。
同时,标记堆分配函数的返回指针为污点源,在指令记录扫描的过程中,进行指针污点传播计算。当通过堆指针进行堆访问操作时,通过堆指针的污点信息回溯到相应的堆分配操作,建立堆访问操作和相应堆分配操作的关系;
在堆分配函数的返回的时刻,以函数返回值(即分配的地址)为污点标签,跟踪指向分配堆地址的指针传播过程。在指针解引用的时刻(即堆访问操作),查询指针的污点标签,得到对应的堆分配操作信息,从而把堆访问操作和堆分配操作进行关联,记录为堆分配-访问对。
特别指出,在进行指针污点传播的过程中,为了正确表示指针计算过程,采用带符号的标签传播规则。具体情况是EAX是指针污点TaintEAX,EBX是指针污点TaintEBX,之前的方法认为SUB EAX,EBX之后EAX不再表示指针而漂白污点,后续存在指令MOV ESI,EAX和ADDESI,EBX,ESI的指针污点为TaintEBX,然而ESI=(EAX-EBX)+EBX=EAX。因此采用带符号的污点标签,SUB EAX,EBX之后EAX的标签为(TaintEAX,—TaintEBX),在ADD ESI,EBX之后ESI的污点标签为TaintEAX。
也就是说,在找到堆分配操作之后,标记堆分配函数的返回指针为污点源,进行指针污点传播计算。当堆指针被解引用的时候,即发生堆访问操作时,检测指针的污点状态和污点来源,回溯相应的堆分配操作信息,并把这些信息记录为堆分配-访问对的形式。
同时,标记外部输入为污点源,在指令扫描过程中,进行数据污点传播计算。当发现堆分配操作或堆访问操作时,检测堆分配或堆访问操作的相关参数(如分配的大小)是否被数据污点标记,记录污点信息以及当时的堆状态信息到对应的堆分配-访问对中。
在外部输入进入程序的时刻,以外部输入的文件偏移为污点标签,跟踪程序处理输入的过程。在堆分配或访问的时刻,检查堆分配的参数或者堆访问的参数是否为污点,从而判断是否存在外部输入影响堆操作的情况,标记为危险的堆分配-访问对。
对关联的每一个堆分配-访问操作,根据其数据污点状态和当时的堆状态以及堆溢出的类型(堆分配操作或堆访问操作的相关参数是否包含数据污点,即受到外部输入的控制),构造潜在堆溢出条件(即堆访问的范围超过堆分配的范围)。
再次对指令记录进行扫描,提取从外部污点数据进入程序开始,到存在潜在溢出可能的堆分配-访问对的程序执行路径上的路径约束条件,结合堆溢出条件,形成该堆分配-访问对的最终溢出条件,该最终溢出条件表示为可求解的符号表达式形式;
对于危险的堆分配-访问对,根据堆分配或堆访问的数据污点标签,提取指令记录中从读入相关污点到该堆操作对中堆访问操作之间的指令记录片段,并把x86的指令记录根据指令语义表达为Z3-Python可求解的表达式形势。例如MOV EAX,EBX表示为(m_0=m_4,m_1=m_5,m_2=m_6,m_3=m_7),其中EAX表示为(m_0-m_3),EBX表示为(m_4-m_7).如果数据污点影响跳转指令,即为路径约束条件;在堆访问操作时刻,根据堆溢出的原理(即堆访问的范围超过堆分配的范围)构造堆溢出条件,表示为不等式形式。
利用符号求解器对溢出条件求解,如果有解,说明存在溢出的可能。根据求解结果修改原始的种子文件,生成新的样本文件。再次运行程序并输入新的样本文件,检测堆溢出漏洞的触发情况,得到最终能够验证漏洞存在的PoC文件,用以验证堆溢出漏洞的真实存在。
此外,在上述获取到的指令记录包括指令的EIP、相关寄存器(如EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP等)的内容、指令的机器码、记录编号。
堆分配函数的偏移地址采用相对偏移,具体值和DLL版本、DLL加载地址等相关,根据具体值在指令记录中查找。堆分配操作相关信息(如堆分配大小、地址等)通过人工逆向获得,在相应的指令处提取信息。
指针污点传播采用带符号标签的污点传播规则;数据污点传播采用带标签的污点传播规则。其区别在于,污点标签是否具有正负属性。
符号表达式采用Z3-Python的规则,把X86指令根据指令语义转化为Z3-Python的表达式。其中堆溢出条件指,是否存在堆访问的范围超过堆分配的范围的情况;存在该情况意味着有堆溢出的可能路径约束条件指,是否能够保证程序沿着脆弱路径执行经过潜在的堆溢出漏洞的分配和访问操作。是的话,即意味着符合路径约束条件
采用Z3作为符号求解器,如果有解,代表存在满足溢出条件的输入,即存在堆溢出漏洞并且输入可以根据求解结果对相应的字节进行变换;得到的结果显示溢出条件和原始种子文件中的哪些字节相关,并且给出相关字节应该取什么值才能满足溢出条件。根据这个结果,修改原始种子文件,得到能够触发堆溢出异常的PoC文件,相关字节是通过上面的外部输入污点源传播获得。如果无解,代表不存在满足溢出条件的输入,即当前分析的堆分配-访问对不存在溢出的可能。
完整的漏洞挖掘过程,在生成样本文件之后会通过再次运行、检测漏洞触发来降低误报,在构造样本之后还需要通过样本触发运行程序从而检测漏洞。
下面通过一个具体的示例进行说明:
以XnView软件在处理mbm文件时的堆溢出漏洞CVE-2010-1932为例,在动态分析环境中,利用XnView软件打开正常的mbm文件,得到程序执行记录,如图2所示。
通过对指令记录进行离线分析,得到程序执行过程中进行堆分配和堆访问操作的记录,并记录为堆分配-访问对的形式,如下图3所示。
堆分配-访问对中还记录了数据污点情况,例如第一行表示记录中id为8204的时候发生了堆分配操作,分配参数和输入文件中的12个字节相关;id为8783时发生了堆访问操作,访问的是8204时的分配的堆空间,访问操作的参数和1个字节相关。对每一个堆分配-访问对,再次扫描指令记录,得到路径约束条件,结合溢出条件,生成PythonZ3可求解的表达式形式,如图4所示。
利用Z3求解器得到一组解,意味着该堆分配-访问对确实存在溢出的可能,并且根据结果修改原始种子文件,得到可以造成XnView软件崩溃的PoC文件,如图5所示。
通过上述实施例的描述可知,对于本领域的技术人员而言,可以根据需要自己获取动态执行记录、添加更复杂的传播规则或添加更复杂的堆溢出条件,从而达到发现更多潜在的堆溢出漏洞的目的。
本申请各实施例描述方法均可通过可执行程序的形式实现,程序可以存储于计算机可读存储介质,也可以通过处理器执行。
尽管为说明目的公开了本发明的具体实施例和附图,其目的在于帮助理解本发明的内容并据以实施,但是本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。因此,本发明不应局限于最佳实施例和附图所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。

Claims (10)

1.一种基于主动构造的离线堆溢出漏洞挖掘方法,其步骤如下:
在动态分析环境中执行目标程序,获取动态执行过程的指令记录;
对指令记录进行扫描,寻找并跟踪堆分配函数,根据堆分配函数的参数,重构并维护程序运行过程时的堆状态;
在扫描过程中,进行指针污点传播;当通过堆指针进行堆访问操作时,通过堆指针的污点信息回溯到相应的堆分配操作,建立堆分配-访问操作的关联;
标记外部输入为污点源,进行数据污点传播;当发现堆分配操作或堆访问操作时,检测堆分配或堆访问操作的相关参数是否被数据污点标记,记录污点信息以及堆状态信息;
对关联的每一个堆分配-访问操作,根据其数据污点状态和堆状态以及堆溢出的类型,构造潜在溢出条件;
再次对指令记录进行扫描,提取从外部污点数据进入程序开始,到存在潜在溢出可能的堆分配-访问对的程序执行路径上的路径约束条件,结合堆溢出条件,形成该堆分配-访问对的最终溢出条件;
求解最终溢出条件,如有解,则根据求解结果生成样本文件,再次运行程序并输入样本文件,用以验证堆溢出漏洞。
2.如权利要求1所述的基于主动构造的离线堆溢出漏洞挖掘方法,其特征在于,所述堆分配函数选自malloc函数、free函数。
3.如权利要求1或2所述的基于主动构造的离线堆溢出漏洞挖掘方法,其特征在于,所述在动态分析环境中执行目标程序包括:
通过目标程序打开原始种子文件,获取动态执行过程的指令记录;
所述指令记录包括指令信息、运行时寄存器信息。
4.如权利要求3所述的基于主动构造的离线堆溢出漏洞挖掘方法,其特征在于,所述样本文件为依据最终溢出条件的求解结果修改原始的种子文件获得。
5.如权利要求1所述的基于主动构造的离线堆溢出漏洞挖掘方法,其特征在于,所述对指令记录进行扫描,寻找并跟踪堆分配函数包括:
根据堆分配函数的指令偏移地址,在指令记录中寻找堆分配操作指令;
通过分析堆分配操作指令的上下文提取堆分配操作的参数;
所述参数包括:分配大小、分配地址。
6.如权利要求5所述的基于主动构造的离线堆溢出漏洞挖掘方法,其特征在于,所述指针污点传播采用带符号标签的污点传播规则;所述数据污点传播采用带标签的污点传播规则;
所述最终溢出条件表示为可求解的符号表达式形式;
符号表达式采用Z3-Python的规则,将X86指令根据指令语义转化为Z3-Python的表达式。
7.如权利要求6所述的基于主动构造的离线堆溢出漏洞挖掘方法,其特征在于,所述堆溢出条件用以表示是否存在堆访问的范围超过堆分配的范围的情况,存在则表示有堆溢出的可能;
路径约束条件用以表示目标程序是否沿着脆弱路径执行经过潜在的堆溢出漏洞的分配和访问操作。如是,则表示符合路径约束条件。
8.如权利要求7所述的基于主动构造的离线堆溢出漏洞挖掘方法,其特征在于,所述求解最终溢出条件包括:采用Z3作为符号求解器;如有解,则得到的求解结果用以显示原始种子文件中与堆溢出条件相关的字节,并给字节满足堆溢出条件的取值。
9.一种服务器,其包括存储器和处理器,所述存储器存储计算机程序,所述程序被配置为由所述处理器执行,所述程序包括用于执行权利要求1至8任一项所述方法中各步骤的指令。
10.一种存储计算机程序的计算机可读存储介质,所述计算机程序包括指令,所述指令当由服务器的处理器执行时使得所述服务器执行权利要求1至8任一项所述方法中的各个步骤。
CN201711266952.8A 2017-12-05 2017-12-05 一种基于主动构造的离线堆溢出漏洞挖掘方法 Pending CN108073817A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711266952.8A CN108073817A (zh) 2017-12-05 2017-12-05 一种基于主动构造的离线堆溢出漏洞挖掘方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711266952.8A CN108073817A (zh) 2017-12-05 2017-12-05 一种基于主动构造的离线堆溢出漏洞挖掘方法

Publications (1)

Publication Number Publication Date
CN108073817A true CN108073817A (zh) 2018-05-25

Family

ID=62157818

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711266952.8A Pending CN108073817A (zh) 2017-12-05 2017-12-05 一种基于主动构造的离线堆溢出漏洞挖掘方法

Country Status (1)

Country Link
CN (1) CN108073817A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109948346A (zh) * 2019-04-09 2019-06-28 苏州浪潮智能科技有限公司 一种漏洞PoC实现方法和装置
CN111625833A (zh) * 2020-04-13 2020-09-04 中国科学院软件研究所 一种高效的软件程序释放后重用漏洞判定方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080016314A1 (en) * 2006-07-12 2008-01-17 Lixin Li Diversity-based security system and method
US20090319256A1 (en) * 2008-06-20 2009-12-24 Vmware, Inc. Decoupling dynamic program analysis from execution across heterogeneous systems
CN103198260A (zh) * 2013-03-28 2013-07-10 中国科学院信息工程研究所 一种二进制程序漏洞自动化定位方法
CN104008053A (zh) * 2014-05-28 2014-08-27 电子科技大学 一种用于漏洞发掘的动态符号执行路径搜索方法
CN106850582A (zh) * 2017-01-05 2017-06-13 中国电子科技网络信息安全有限公司 一种基于指令监控的apt高级威胁检测方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080016314A1 (en) * 2006-07-12 2008-01-17 Lixin Li Diversity-based security system and method
US20090319256A1 (en) * 2008-06-20 2009-12-24 Vmware, Inc. Decoupling dynamic program analysis from execution across heterogeneous systems
CN103198260A (zh) * 2013-03-28 2013-07-10 中国科学院信息工程研究所 一种二进制程序漏洞自动化定位方法
CN104008053A (zh) * 2014-05-28 2014-08-27 电子科技大学 一种用于漏洞发掘的动态符号执行路径搜索方法
CN106850582A (zh) * 2017-01-05 2017-06-13 中国电子科技网络信息安全有限公司 一种基于指令监控的apt高级威胁检测方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
XIANGKUN JIA ET AL.: "Towards efficient heap overflow discovery", 《HTTPS://DL.ACM.ORG/DOI/ABS/10.5555/3241189.3241267》 *
刘洋: "基于动态污点分析的二进制程序缓冲区溢出的研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
赵晶玲等: "基于离线汇编指令流分析的恶意程序算法识别技术", 《清华大学学报(自然科学版)》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109948346A (zh) * 2019-04-09 2019-06-28 苏州浪潮智能科技有限公司 一种漏洞PoC实现方法和装置
CN111625833A (zh) * 2020-04-13 2020-09-04 中国科学院软件研究所 一种高效的软件程序释放后重用漏洞判定方法和装置
CN111625833B (zh) * 2020-04-13 2023-06-13 中国科学院软件研究所 一种高效的软件程序释放后重用漏洞判定方法和装置

Similar Documents

Publication Publication Date Title
JP5430570B2 (ja) システムコールカバレッジ基準による試験スイート削減のための方法
US10380349B2 (en) Security analysis using relational abstraction of data structures
US8060869B1 (en) Method and system for detecting memory problems in user programs
Huang et al. Software crash analysis for automatic exploit generation on binary programs
US10599558B1 (en) System and method for identifying inputs to trigger software bugs
CN109583200A (zh) 一种基于动态污点传播的程序异常分析方法
Kirbas et al. The relationship between evolutionary coupling and defects in large industrial software
Saltaformaggio et al. {DSCRETE}: Automatic rendering of forensic information from memory images via application logic reuse
CN110941552A (zh) 一种基于动态污点分析的内存分析方法及装置
CN111832026B (zh) 一种漏洞利用定位方法、系统、装置及介质
KR101979329B1 (ko) 바이너리의 취약점을 유발하는 입력데이터 위치 추적 방법 및 그 장치
Wei et al. State-sensitive points-to analysis for the dynamic behavior of JavaScript objects
Kratkiewicz et al. Using a diagnostic corpus of C programs to evaluate buffer overflow detection by static analysis tools
Park et al. unicorn: a unified approach for localizing non‐deadlock concurrency bugs
Cloosters et al. {SGXFuzz}: Efficiently synthesizing nested structures for {SGX} enclave fuzzing
Pagani et al. Back to the whiteboard: A principled approach for the assessment and design of memory forensic techniques
CN108073817A (zh) 一种基于主动构造的离线堆溢出漏洞挖掘方法
Marjanov et al. Machine learning for source code vulnerability detection: What works and what isn’t there yet
Suneja et al. Towards reliable AI for source code understanding
Jianming et al. PVDF: An automatic patch-based vulnerability description and fuzzing method
CN114741700B (zh) 基于符号化污点分析的公共组件库漏洞可利用性分析方法及装置
Mercier et al. dynStruct: An automatic reverse engineering tool for structure recovery and memory use analysis
CN102708054A (zh) 二进制程序循环写内存安全漏洞的检测方法
Bai et al. Mining and checking paired functions in device drivers using characteristic fault injection
CN111858307B (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
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20180525