CN117556420A - 一种基于堆内存建模的堆漏洞自动化利用方法 - Google Patents

一种基于堆内存建模的堆漏洞自动化利用方法 Download PDF

Info

Publication number
CN117556420A
CN117556420A CN202311511568.5A CN202311511568A CN117556420A CN 117556420 A CN117556420 A CN 117556420A CN 202311511568 A CN202311511568 A CN 202311511568A CN 117556420 A CN117556420 A CN 117556420A
Authority
CN
China
Prior art keywords
heap
vulnerability
heap memory
constraint
binary program
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
CN202311511568.5A
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.)
Chengdu Xidian Network Security Research Institute
Xidian University
Original Assignee
Chengdu Xidian Network Security Research Institute
Xidian University
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 Chengdu Xidian Network Security Research Institute, Xidian University filed Critical Chengdu Xidian Network Security Research Institute
Priority to CN202311511568.5A priority Critical patent/CN117556420A/zh
Publication of CN117556420A publication Critical patent/CN117556420A/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
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • 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)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及漏洞自动化利用技术领域,具体而言,涉及一种基于堆内存建模的堆漏洞自动化利用方法,该方法的步骤包括:基于符号执行引擎模拟运行目标二进制程序,提取目标二进制程序的相关函数,并通过漏洞检测算法确定目标二进制程序是否存在堆漏洞,并记录堆漏洞类型;基于堆漏洞类型,构建并选取相关模板输入至符号执行引擎,通过符号执行引擎运行相关模板中的攻击序列,并通过堆内存期望约束对攻击序列的堆内存布局进行约束验证,得到约束验证结果;基于约束验证结果,获取堆内存布局的可利用状态及其路径约束条件,通过约束求解器对堆内存布局的可利用状态路径约束条件进行求解,输出堆漏洞的所处位置区域及处理结果。

Description

一种基于堆内存建模的堆漏洞自动化利用方法
技术领域
本发明涉及漏洞自动化利用技术领域,具体而言,涉及一种基于堆内存建模的堆漏洞自动化利用方法。
背景技术
就目前而言,现有技术对于堆内存漏洞自动化利用的研究主要为手工分析,其主要依靠枚举随机堆交互动作作为初始攻击序列的输入,由于堆交互动作可选择排列组合空间较大,依靠手工分析的方法容易产生大量的初始攻击序列,之后需要通过系统对所有列表进行符号执行,获取安全违规行为,不仅容易影响整体的速度,耗时耗力;而且需要安全人员对堆管理器的内部结构非常熟悉,且具有丰富的经验。随着模糊测试在漏洞挖掘领域取得较好效果,人工利用漏洞来评估修复优先级已经跟不上漏洞发现的速度,基于此,我们设计了一种基于堆内存建模的堆漏洞自动化利用方法。
发明内容
本发明的目的在于提供一种基于堆内存建模的堆漏洞自动化利用方法,其通过设计基于符号执行引擎及相关模板的构建,对堆漏洞自动化分析并辅助安全分析人员快速的判断堆漏洞是否能被利用、有多大可能性被利用以及漏洞危害大小,从而制定合理的修复优先级,保护软件不受攻击者的攻击。
本发明的实施例通过以下技术方案实现:
一种基于堆内存建模的堆漏洞自动化利用方法,该方法的步骤包括:
基于符号执行引擎模拟运行目标二进制程序,提取目标二进制程序的相关函数,并通过漏洞检测算法确定目标二进制程序是否存在堆漏洞,若是,则记录堆漏洞类型;
在目标二进制程序的模拟运行过程中,基于堆漏洞类型,构建并选取相关模板输入至符号执行引擎,通过符号执行引擎运行相关模板中的攻击序列,并通过相关模板中的堆内存期望约束对攻击序列的堆内存布局进行约束验证,得到约束验证结果;
基于约束验证结果,获取堆内存布局的可利用状态及其路径约束条件,将攻击序列的操作参数进行符号化,并通过约束求解器对堆内存布局的可利用状态路径约束条件进行求解,输出堆漏洞的所处位置区域及处理结果。
可选的,所述提取目标二进制程序的相关函数,所述提取目标二进制程序具体采用Hook关键函数。
可选的,所述基于符号执行引擎模拟运行目标二进制程序,其具体为:将符号值作为输入模拟执行目标二进制程序,并在模拟执行目标二进制程序的过程中,迭代更新符号值的状态及路径约束条件,直至到达堆内存布局的可利用状态,获取堆内存布局的可利用状态路径约束条件,并通过约束求解器求解堆漏洞的所处位置区域及处理结果。
可选的,所述构建并选取相关模板输入至符号执行引擎,所述相关模板具体根据how2heap进行构建,相关模板包括:攻击序列、堆布局期望约束、可利用状态判断逻辑。
可选的,通过相关模板中的堆内存期望约束对攻击序列的堆内存布局进行约束验证,其具体为:在执行攻击序列的过程中,通过Hook关键函数及堆内存期望约束验证堆内存布局的满足性,若满足性达到预期值,则执行可利用状态判断逻辑,直至获取堆内存布局的可利用状态;若否,则结束并发出提示。
可选的,所述可利用状态判断逻辑具体为:基于可利用状态的类型,对目标二进制程序进行攻击,并在对目标二进制程序进行攻击的过程中,自动判断堆布局是否达到可利用状态,其中,可利用状态包括堆块重叠类型、非堆分配类型和任意地址写类型。
可选的,所述符号执行引擎采用angr符号执行引擎。
本发明实施例的技术方案至少具有如下优点和有益效果:
本发明实施例通过设计基于符号执行引擎及相关模板的构建,对堆漏洞自动化分析并辅助安全分析人员快速的判断堆漏洞是否能被利用、有多大可能性被利用以及漏洞危害大小,从而制定合理的修复优先级,保护软件不受攻击者的攻击。
附图说明
图1为本发明实施例提供的一种基于堆内存建模的堆漏洞自动化利用方法的逻辑示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
如图1所示,本发明提供了其中一种实施例:一种基于堆内存建模的堆漏洞自动化利用方法,该方法的步骤包括:
基于符号执行引擎模拟运行目标二进制程序,提取目标二进制程序的相关函数,并通过漏洞检测算法确定目标二进制程序是否存在堆漏洞,若是,则记录堆漏洞类型;
在目标二进制程序的模拟运行过程中,基于堆漏洞类型,构建并选取相关模板输入至符号执行引擎,通过符号执行引擎运行相关模板中的攻击序列,并通过相关模板中的堆内存期望约束对攻击序列的堆内存布局进行约束验证,得到约束验证结果;
基于约束验证结果,获取堆内存布局的可利用状态及其路径约束条件,将攻击序列的操作参数进行符号化,并通过约束求解器对堆内存布局的可利用状态路径约束条件进行求解,输出堆漏洞的所处位置区域及处理结果。
在本实施例中,系统使用符号执行引擎angr模拟运行目标二进制程序,在运行过程中Hook关键函数,并根据漏洞检测算法来确定目标二进制程序中是否存在堆漏洞。系统在检测到目标二进制程序存在堆漏洞时,记录产生的堆交互基本操作及其相关信息,这些信息也将作为最后的系统输出供安全人员参考和复现验证漏洞可利用性。其中包括以下操作:
系统基于符号执行引擎angr,将符号值作为输入(所述符号值并非具体数值)并模拟执行目标二进制程序,在执行过程中不断更新符号状态和路径约束条件,当到达目标代码时,符号执行引擎得到相应的路径约束条件,最后通过约束求解器来得到可以触发目标代码的具体值。其中符号状态组成符号表达式,路径约束条件表达到达某处代码的路径条件。
所述Hook关键函数具体为Hook目标二进制程序中与堆交互操作相关的关键函数,依靠Hook技术使得符号执行引擎在模拟执行目标二进制程序时,若遇到目标二进制程序调用这些被Hook的函数,则先跳转去执行用户自定义代码,然后再跳回原程序继续执行函数。
本实施例所提供的漏洞检测算法由自定义代码实现,即在程序调用被Hook的关键函数时,执行漏洞检测代码,判断漏洞是否存在。
在本实施例中,Hook代码在检测到堆漏洞的同时,会识别并记录与漏洞相关的堆交互基本操作(即所述的关键函数)。这里堆交互基本操作分为堆内存交互和堆分配器交互。当运行时遇到与堆分配器交互的指令时,记录到达此指令的执行路径和函数调用产生的堆块信息(包含堆块地址、大小);当遇到与堆内存交互(即写入或读取)指令时,记录指令对某块内存所做操作的数据大小和数据内容。这些堆块信息为堆内存布局约束判断和可利用状态判断提供数据。可以理解的,本实施例以本方法汇总形成系统,以描述上述及下述的功能性执行逻辑。
在本实施例中,本实施例具体基于已有利用技术(how2heap)建立相关模板,模板提供初始攻击序列、攻击者期望的堆布局约束和可利用状态判断点,模板具体内容和功能如下:
上述攻击序列具体为由若干个与堆分配器交互的基本函数和对堆内存进行读写操作的语句组成的操作列表。堆漏洞的利用实现需要通过这些操作排列组合进行堆内存的布局,初始攻击序列作为能触发可利用状态的数量最小化序列,将被放入符号执行引擎中模拟执行。本系统提供的初始攻击序列根据how2heap制作,包含how2heap中的部分技术,how2heap为堆利用技术存储库。
本实施例所述的堆内存布局具体为在漏洞利用过程中对堆块位置和大小的约束,只有满足此约束,才有可能实现漏洞的利用,比如堆块相邻或存在于某条bi n链中。在执行指定攻击序列过程中,Hook代码会对堆内存布局进行约束检查,若满足约束,系统继续执行接下来的操作序列,直到发现可利用状态;若未满足约束,系统将会产生提示并退出。
本实施例所述的可利用状态具体为经过某种攻击序列的执行后,堆内存布局满足约束条件,产生可以利用漏洞实现攻击者目标(程序控制流劫持、信息泄露等)的一种内存状态。在执行攻击序列操作的同时,系统将自动判断堆布局是否达到可利用状态。
在本实施例中,本实施例根据系统检测到的漏洞类型,选择相应模板送入符号执行引擎。符号执行模板文件中的攻击序列,将攻击序列中操作的参数符号化,当到达可利用状态时,求解路径约束来完成最终输出。
根据现有研究,因不同的漏洞类型可利用的方式不同,所以可利用状态与漏洞类型之间存在一定的对应关系。本系统根据检测的漏洞类型,选择相应的模板,缩小需要检查的攻击序列的范围,这种方法大大减少了因枚举堆交互操作产生攻击序列的数量,缓解了现有技术的缺陷。
本实施例的系统使用符号执行引擎模拟执行模板文件中的攻击序列,通过Hook关键函数实现可利用状态检测算法,当符号执行引擎检测到可利用状态时,会使用约束求解器求解到达此状态过程中经过的路径约束表达式。
本实施例的系统最终输出包含三部分内容:检测到漏洞时经过的堆交互操作序列、可利用状态的类型和PoC(Proof of Concept,概念验证,安全领域中的漏洞验证程序)代码,如上内容即为本实施例所述的堆漏洞的所处位置区域及处理结果。
在本实施例的具体应用中,本实施例分为堆漏洞检测、可利用状态检测及模板引导的利用生成,其中,堆漏洞检测:本实施例将堆漏洞分为堆溢出、伪块释放、释放后使用和双重释放四种类型,分别给出检测算法,并通过自定义函数实现算法。本实施例利用符号执行技术检测堆漏洞,首先Hook关键函数,然后在符号执行过程中调用这些函数时进入自定义函数,即可实现判断漏洞存在与否。
可利用状态检测:本实施例将漏洞的可利用状态分为堆块重叠、非堆分配和任意地址写三种类型,通过这三种可利用状态,攻击者可对目标程序进行攻击,达到信息泄露、覆盖敏感数据和劫持控制流等恶意行为。本实施例利用符号执行技术检测可利用状态,同漏洞检测技术相同,可利用状态的检测也是在自定义函数中实现。
模板引导的利用生成:模板和构造攻击序列的方法提供了灵活性和可扩展性。基于how2heap设计的模板文件为攻击者提供初始攻击序列和攻击者期望的堆布局约束。符号执行目标程序和模板文件,将攻击序列中操作的参数符号化,当到达第一阶段搜索到的漏洞点和可利用点指令,通过求解可利用状态约束和有效载荷约束来完成PoC。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (7)

1.一种基于堆内存建模的堆漏洞自动化利用方法,其特征在于,该方法的步骤包括:
基于符号执行引擎模拟运行目标二进制程序,提取目标二进制程序的相关函数,并通过漏洞检测算法确定目标二进制程序是否存在堆漏洞,若是,则记录堆漏洞类型;
在目标二进制程序的模拟运行过程中,基于堆漏洞类型,构建并选取相关模板输入至符号执行引擎,通过符号执行引擎运行相关模板中的攻击序列,并通过相关模板中的堆内存期望约束对攻击序列的堆内存布局进行约束验证,得到约束验证结果;
基于约束验证结果,获取堆内存布局的可利用状态及其路径约束条件,将攻击序列的操作参数进行符号化,并通过约束求解器对堆内存布局的可利用状态路径约束条件进行求解,输出堆漏洞的所处位置区域及处理结果。
2.根据权利要求1所述的基于堆内存建模的堆漏洞自动化利用方法,其特征在于,所述提取目标二进制程序的相关函数,所述提取目标二进制程序具体采用Hook关键函数。
3.根据权利要求2所述的基于堆内存建模的堆漏洞自动化利用方法,其特征在于,所述基于符号执行引擎模拟运行目标二进制程序,其具体为:将符号值作为输入模拟执行目标二进制程序,并在模拟执行目标二进制程序的过程中,迭代更新符号值的状态及路径约束条件,直至到达堆内存布局的可利用状态,获取堆内存布局的可利用状态路径约束条件,并通过约束求解器求解堆漏洞的所处位置区域及处理结果。
4.根据权利要求3所述的基于堆内存建模的堆漏洞自动化利用方法,其特征在于,所述构建并选取相关模板输入至符号执行引擎,所述相关模板具体根据how2heap进行构建,相关模板包括:攻击序列、堆布局期望约束、可利用状态判断逻辑。
5.根据权利要求4所述的基于堆内存建模的堆漏洞自动化利用方法,其特征在于,通过相关模板中的堆内存期望约束对攻击序列的堆内存布局进行约束验证,其具体为:在执行攻击序列的过程中,通过Hook关键函数及堆内存期望约束验证堆内存布局的满足性,若满足性达到预期值,则执行可利用状态判断逻辑,直至获取堆内存布局的可利用状态;若否,则结束并发出提示。
6.根据权利要求5所述的基于堆内存建模的堆漏洞自动化利用方法,其特征在于,所述可利用状态判断逻辑具体为:基于可利用状态的类型,对目标二进制程序进行攻击,并在对目标二进制程序进行攻击的过程中,自动判断堆布局是否达到可利用状态,其中,可利用状态包括堆块重叠类型、非堆分配类型和任意地址写类型。
7.根据权利要求1-6任一项所述的基于堆内存建模的堆漏洞自动化利用方法,其特征在于,所述符号执行引擎采用angr符号执行引擎。
CN202311511568.5A 2023-11-13 2023-11-13 一种基于堆内存建模的堆漏洞自动化利用方法 Pending CN117556420A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311511568.5A CN117556420A (zh) 2023-11-13 2023-11-13 一种基于堆内存建模的堆漏洞自动化利用方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311511568.5A CN117556420A (zh) 2023-11-13 2023-11-13 一种基于堆内存建模的堆漏洞自动化利用方法

Publications (1)

Publication Number Publication Date
CN117556420A true CN117556420A (zh) 2024-02-13

Family

ID=89815973

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311511568.5A Pending CN117556420A (zh) 2023-11-13 2023-11-13 一种基于堆内存建模的堆漏洞自动化利用方法

Country Status (1)

Country Link
CN (1) CN117556420A (zh)

Similar Documents

Publication Publication Date Title
CN108647145B (zh) 软件内存安全检测方法及系统
CN108268371B (zh) 面向Android应用的智能模糊测试方法
CN112800423B (zh) 一种二进制代码授权漏洞检测方法
CN110046089B (zh) 一种基于路径覆盖充分性准则的智能合约测试方法
KR101640479B1 (ko) 소스코드기반 소프트웨어 취약점 공격행위 분석시스템
CN110287693B (zh) 基于符号执行路径剪枝的缓冲区溢出漏洞自动检测方法
CN111832026B (zh) 一种漏洞利用定位方法、系统、装置及介质
CN106055479B (zh) 一种基于强制执行的Android应用软件测试方法
CN104732152A (zh) 基于符号执行路径剪枝的缓冲区溢出漏洞自动检测方法
CN106778247B (zh) 应用程序动态分析的方法及装置
CN114996126B (zh) 一种针对eosio智能合约的漏洞检测方法及系统
US20210342249A1 (en) Method for detecting safety-relevant data streams
Wang et al. A combinatorial approach to detecting buffer overflow vulnerabilities
CN111783094A (zh) 一种数据分析方法、装置、服务器及可读存储介质
CN117556420A (zh) 一种基于堆内存建模的堆漏洞自动化利用方法
Jurn et al. A survey of automated root cause analysis of software vulnerability
CN111796911B (zh) 一种面向云平台虚拟设备的攻击检测方法及电子装置
Jiang et al. An exploitability analysis technique for binary vulnerability based on automatic exception suppression
Kang et al. Safety & security analysis of a manufacturing system using formal verification and attack-simulation
CN111428238A (zh) 一种基于安卓组件拒绝服务测试方法、检测终端及介质
CN111190813A (zh) 基于自动化测试的安卓应用网络行为信息提取系统及方法
JP2004171064A (ja) バッファオーバーフロー静的解析方法およびプログラム
Agrawal et al. Preventing insider malware threats using program analysis techniques
CN115695039B (zh) 网络安全漏洞检测系统及方法
CN118524003B (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