CN110717181A - 基于新型程序依赖图的非控制数据攻击检测方法及装置 - Google Patents
基于新型程序依赖图的非控制数据攻击检测方法及装置 Download PDFInfo
- Publication number
- CN110717181A CN110717181A CN201910848694.7A CN201910848694A CN110717181A CN 110717181 A CN110717181 A CN 110717181A CN 201910848694 A CN201910848694 A CN 201910848694A CN 110717181 A CN110717181 A CN 110717181A
- Authority
- CN
- China
- Prior art keywords
- security
- program
- control data
- sensitive
- data
- 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
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/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
-
- 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/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
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)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明属于网络安全空间技术领域,特别涉及一种基于新型程序依赖图的非控制数据攻击检测方法及装置,通过静态分析构造程序中安全敏感的非控制数据集合和基本块粒度的新型程序依赖图,对程序LLVM中间语言表示进行插桩;在运行时对程序中安全敏感的非控制数据的访问和调用操作进行验证,从而保护安全敏感的非控制数据的数据流完整性。本发明将程序的控制流和数据流结合,在运行时根据新型程序依赖图实现对目标程序中安全敏感的非控制数据的数据流完整性保护;将保护的非控制数据缩小到安全敏感的非控制数据集合,在基本块粒度进行分析和插桩处理,保证程序的运行效率,平衡安全性和性能开销,具有较好通用性,为非控制数据攻击检测提供新的解决方案。
Description
技术领域
本发明属于网络安全空间技术领域,特别涉及一种基于新型程序依赖图的非控制数据攻击检测方法及装置,可用于检测目标程序中存在的非控制数据攻击行为。
背景技术
网络空间是连接各种信息技术基础设施的网络,包括互联网、各种计算机***及人与人之间相互影响的虚拟环境。网络不仅是一个消息的载体和媒介,它还改善着人们思维。从某种程度上讲,人们所处环境,都被赋予网络和信息的属性。因此,可以认为网络空间安全的核心是信息安全。如今,信息技术以及其工业应用迎来了前所未有的繁荣,网络空间安全问题也变得越来越突出。网络安全由于不同环境和应用,分为:***安全、网络安全、信息传播安全和信息内容安全。***安全即保证信息处理和传输***的安全,它侧重于保证***正常运行,避免因为***的崩演和损坏而对***存储、处理和传输的消息造成破坏和损失,避免由于电磁泄翻,产生信息泄露,干扰他人或受他人干扰。尽管经过几十年的安全研究,内存破坏攻击仍然对软件***构成巨大的威胁。这是因为大多数高性能应用程序都是用C和C++等内存不安全的语言编写的,软件开发人员为了性能和兼容性的提高而疏忽了软件和***安全的重要性等因素。内存破坏攻击通常利用程序中的内存破坏漏洞实现控制流攻击和非控制数据攻击。控制流攻击通过劫持程序的控制流来执行恶意的代码序列,从而实现恶意攻击行为,随着安全研究人员对防御控制流攻击的研究不断深入,成功构造一个控制流攻击的代价越来越高,因此,攻击者尝试利用程序中安全敏感的非控制数据实现恶意攻击行为,从而绕过现有的控制流攻击防御保护机制。
与控制流攻击不同,非控制数据攻击是通过操纵程序中安全敏感的非控制数据而不破坏程序的控制流完整性,从而改变程序的良性行为。攻击目标包括:1)信息泄露,如密码泄露或私钥泄露;2)权限升级,如操作用户身份数据;3)性能下降,如资源浪费攻击;4)绕过安全缓解机制。DOP(Data-Oriented Programming)是一种用于构建具有表现力的非控制数据攻击的高级技术,通过连接由load、store和一些算术微操作组成的短指令序列(data-oriented gadget),并执行这些精心设计的序列,攻击者在程序内存中可以实现图灵完备性的计算。由于非控制数据不会违背控制流完整性,而现有的控制流攻击检测方法又无法有效地检测该种类型的攻击,而DFI(Date Flow Integrity)虽然能防御非控制数据攻击,但引入了高达103%的性能开销,使得该方法难以在实际环境中部署应用。
发明内容
为此,本发明提供一种基于新型程序依赖图的非控制数据攻击检测方法及装置,将程序的控制流和数据流结合,在运行时根据新型程序依赖图实现对目标程序中安全敏感的非控制数据的数据流完整性保护,保证非恶意程序的正常执行,检测和终止恶意攻击的运行,性能开销小,更易于部署。
按照本发明所提供的设计方案,一种基于新型程序依赖图的非控制数据攻击检测方法,包含:
通过静态分析,识别和定位目标程序中安全敏感非控制数据,获取安全敏感非控制数据表,并生成目标程序基本块粒度的传统程序依赖图;
结合传统程序依赖图,在有向边上添加包含目标程序中识别和定位的安全敏感非控制数据的注释,构造目标程序的新型程序依赖图;
根据新型程序依赖图,在涉及访问调用安全敏感非控制数据的基本块中进行代码插桩;
执行目标程序时,结合新型程序依赖图和安全敏感非控制数据表进行进程的攻击检测,以保证目标程序中安全敏感非控制数据的数据流完整性。
作为本发明非控制数据攻击检测方法,进一步地,安全敏感非控制数据包含目标程序中自定义函数的函数参数,***调用参数,及与函数参数和***调用参数存在依赖关系的变量。
作为本发明非控制数据攻击检测方法,进一步地,识别和定位安全敏感非控制数据,包含如下内容:
利用编译器生成目标程序对应的中间语言表示,并生成对应的基本块粒度的程序依赖图;
分析目标程序对应的中间语言表示,识别并定位安全敏感非控制数据,并构建目标程序中安全敏感非控制数据表。
作为本发明非控制数据攻击检测方法,进一步地,识别并定位的安全敏感非控制数据,包含:通过敏感函数分析,识别并定位的自定义函数和***调用函数;通过数据依赖分析,识别并定位的与自定义函数参数和***调用参数存在依赖关系的变量。
作为本发明非控制数据攻击检测方法,进一步地,在传统的程序依赖图的有向边添加注释,对应于基本块执行时访问和调用的安全敏感非控制数据情形,该情形包含将安全敏感非控制数据作为算术逻辑运算对象操作使用时的访问行为和将安全敏感非控制数据作为函数参数操作使用时的调用行为。
作为本发明非控制数据攻击检测方法,进一步地,进行代码插桩,包含如下内容:
从目标程序的中间代码取一个基本块i;
根据新型程序依赖图,判断该基本块中是否存在访问且调用同一个安全敏感非控制数据,若存在,则在对应的访问操作之后和调用操作之前分别***插桩代码,并判断目标程序的所有基本块是否已进行插桩处理完毕,若未处理完毕,则进入代码插桩下个步骤;
判断基本块i中是否存在访问安全敏感的非控制数据的情况,若存在,则在基本块i的出口处***插桩代码,若不存在,则进入代码插桩下个步骤;
判断基本块i中是否存在调用安全敏感的非控制数据的情况,若存在,则在基本块i的入口处***插桩代码;否则,判断目标程序的所有基本块是否已经进行插桩处理完毕;
若目标程序中还有基本块等待进行插桩处理,i=i+1,并回到代码插桩中的第一个步骤;否则,目标程序代码插桩完成。
作为本发明非控制数据攻击检测方法,进一步地,目标程序运行进行进程攻击检测,包含如下内容:
当目标程序执行到插桩代码时,触发异常;
根据新型程序依赖图,定位触发异常的基本块号;
判断该基本块中是否存在访问且调用同一个安全敏感的非控制数据的情况,若存在,则定位在该基本块中触发异常的位置,当触发异常的位置为访问安全敏感非控制数据之后,则获取当前目标进程内存中被访问操作的安全敏感非控制数据的值,并在安全敏感非控制数据表中更新对应值;当触发异常的位置为调用安全敏感非控制数据之前,则对即将调用的安全敏感非控制数据的数据流完整性进行验证,并执行进程攻击检测下个步骤;
判断该基本块中是否存在访问安全敏感的非控制数据的情况,若存在,则获取目标进程内存中被访问操作的安全敏感非控制数据的值,并在安全敏感非控制数据表中将对应的值进行更新;然后,结束该异常的处理,通知目标进程继续运行;若该基本块中不存在访问安全敏感非控制数据的情况,则执行进程攻击检测下个步骤;
判断该基本块中是否存在调用安全敏感非控制数据的情况,若存在,则对即将调用的安全敏感非控制数据的数据流完整性进行检测验证,若不存在,则判定当前目标进程触发的异常为意料之外的异常情况,终止目标进程运行。
作为本发明非控制数据攻击检测方法,进一步地,安全敏感非控制数据的数据流完整性的验证,包含如下内容:获取目标进程内存中即将被调用的安全敏感非控制数据的值,并查询安全敏感非控制数据表中对应的值,验证其一致性,若验证通过,则该异常处理结束,通知目标进程继续运行;否则,则判定该非控制数据在调用前被恶意篡改,认为存在非控制数据攻击行为,立即终止目标进程的运行。
作为本发明非控制数据攻击检测方法,进一步地,目标程序运行时,自动处理目标程序由于执行插桩代码触发的异常情形,并对存储在内核空间的安全敏感非控制数据表进行更新记录,以完成对非控制数据的攻击检测。
更进一步地,本发明还提供一种基于新型程序依赖图的非控制数据攻击检测装置,包含:静态分析模块、新型依赖图构建模块、插桩模块和处理模块,其中,
静态分析模块,用于通过静态分析,识别和定位目标程序中安全敏感非控制数据,生成安全敏感非控制数据表和目标程序基本块粒度的传统程序依赖图;
新型依赖图构建模块,用于结合传统程序依赖图,在传统程序依赖图的有向边上添加包含目标程序中识别和定位的安全敏感非控制数据的注释,构造目标程序的新型程序依赖图;
插桩模块,用于根据新型程序依赖图,在涉及访问调用安全敏感非控制数据的基本块中进行代码插桩;
处理模块,用于执行目标程序时,结合新型程序依赖图和安全敏感非控制数据表进行进程的攻击检测,以保证目标程序中安全敏感非控制数据的数据流完整性。
本发明的有益效果:
本发明根据工作流程可分为两个阶段:静态分析阶段和动态保护阶段,通过目标程序的静态分析,构造新型程序依赖图,生成受保护的可执行程序;通过在动态保护阶段运行时更新安全敏感非控制数据表,并验证目标进程中安全敏感的非控制数据的一致性,保证目标程序中安全敏感的非控制数据的数据流完整性,以确保非恶意程序的正常执行,检测和终止恶意攻击的运行;与已有的非控制数据攻击检测或防护方法相比,优势主要体现如下两方面:a)方法的通用性,已有方法局限于某种特定的架构和平台,而本发明技术方案并不局限于特定的硬件环境,是一种能够检测现有的非控制数据攻击的通用方法;b)运行的高效性,本发明技术方案将需要保护的非控制数据集合缩小到了安全敏感非控制数据,且以基本块粒度为单位进行插桩,实现在运行时对安全敏感的非控制数据的数据流完整性保护,弥补在指令粒度进行监控会引入较大开销的缺陷,保证程序的运行效率,性能开销小,易于部署,具有较好的应用前景。
附图说明:
图1为本发明实施例中攻击检测方法流程图;
图2为本发明实施例中攻击检测流程原理图;
图3为本发明实施例中新型程序依赖图样例;
图4为本发明实施例中攻击检测装置示意图;
图5为本发明实施例中静态分析模块的工作流程示意图;
图6为本发明中插桩模块的工作流程图;
图7为本发明中处理模块的工作流程图。
具体实施方式:
为使本发明的目的、技术方案和优点更加清楚、明白,下面结合附图和技术方案对本发明作进一步详细的说明。
现有的非控制数据攻击检测技术(DFI)通过验证对变量的操作是否符合数据流图(Data Flow Graph,DFG)实现防御非控制数据攻击。然而,DFI需要对变量的每个操作进行可达性分析,由于可达性分析对于某些读操作可能是冗余的,复杂,会导致DFI误报,对所有变量的数据流完整性实施保护也会引入很大的开销,使得该方法难以在实际环境中部署应用。本发明实施例,参见图1所示,提供一种基于新型程序依赖图的非控制数据攻击检测方法,包含如下内容:
S101)通过静态分析,识别和定位目标程序中安全敏感非控制数据,获取安全敏感非控制数据表,并生成目标程序基本块粒度的传统程序依赖图;
S102)结合传统程序依赖图,在传统程序依赖图的有向边上添加包含目标程序中识别和定位的安全敏感非控制数据的注释,构造目标程序的新型程序依赖图;
S103)根据新型程序依赖图,在涉及访问调用安全敏感非控制数据的基本块中进行代码插桩;
S104)执行目标程序时,结合新型程序依赖图和安全敏感非控制数据表进行进程的攻击检测,以保证目标程序中安全敏感非控制数据的数据流完整性。
通过定义一种新型的程序依赖图,在程序依赖图的某些有向边上添加相应的注释,注释信息主要为执行基本块时会访问或调用的安全敏感的非控制数据,从而将程序的控制流和数据流结合,在运行时根据新型程序依赖图实现对目标程序中安全敏感的非控制数据的数据流完整性保护,能够成功检测非控制数据攻击,较DFI方法性能开销小,更易于部署。
本发明实施例中,参见图2所示,根据工作流程可分为两个阶段:静态分析阶段和动态保护阶段。静态分析阶段主要负责对目标程序进行静态分析,并构造相应的新型程序依赖图,最后根据新型程序依赖图对源程序进行插桩处理,生成受保护的可执行程序;动态保护阶段主要负责在运行时更新安全敏感的非控制数据表,并验证目标进程中安全敏感的非控制数据的一致性,从而保证目标程序中安全敏感的非控制数据的数据流完整性。其中,静态分析模块负责对源程序的静态分析工作。静态分析以基本块为粒度,生成源程序的程序依赖图,负责识别和定位程序中安全敏感的非控制数据,并将程序中对非控制数据的操作行为分为访问和调用两种行为,访问行为是指将非控制数据作为算术逻辑运算对象操作使用的行为,而调用行为则是指将非控制数据作为函数参数操作使用的行为。静态分析完成后,构造出目标程序对应的新型程序依赖图。然后,根据新型程序依赖图对目标源程序进行插桩处理,具体地,在涉及访问和调用安全敏感的非控制数据的基本块中***插桩代码。具体方法是,当某个基本块存在访问和调用同一个安全敏感的非控制数据时,则在该基本块中访问该非控制数据之后***插桩代码,并在该基本块中调用该非控制数据之前***插桩代码,从而使得在动态保护阶段,能够在运行时对该基本块访问操作该非控制数据的合法性进行验证;当某个基本块存在访问安全敏感的非控制数据时,则在该基本块出口处***插桩代码,从而使得在动态保护阶段,当基本块执行结束时能够获取程序内存中被访问的安全敏感的非控制数据的值,并在安全敏感的非控制数据表中更新相应安全敏感的非控制数据的值。当某个基本块存在调用安全敏感的非控制数据,则在该基本块入口处***插桩代码,从而使得在动态保护阶段,当基本块开始执行前能够获取到程序内存中即将被调用的安全敏感的非控制数据的值,并与安全敏感的非控制数据表中相应的值进行一致性验证。编译器负责将插桩后的源程序编译成二进制可执行文件;安全敏感的非控制数据表负责存储目标程序中安全敏感的非控制数据集合及其对应的值,该表存储在***的内核空间以防止其中的值被恶意篡改。
新型程序依赖图是在传统的程序依赖图上的改进,传统的程序依赖图反映了程序在基本块粒度的控制流信息,本发明在传统的程序依赖图的有向边上添加了注释信息,基于静态分析得到的安全敏感的非控制数据集合,通过在对应的有向边上注释基本块执行时需要访问和调用的安全敏感的非控制数据,实现了将程序的控制流和数据流相结合,从而能够在运行时指导验证程序中安全敏感的非控制数据的数据流完整性。如图3所示,上方为一个程序样例,下方为对应的新型程序依赖图,图中新型程序依赖图样例是利用LLVM编译器对源程序的LLVM中间语言表示文件分析所构造出来的,其中部分变量即为静态分析中识别和定位的安全敏感的非控制数据,有向边上注释的变量即为基本块在执行时需要访问和调用的安全关键非控制数据。作为本发明实施例中的非控制数据攻击检测方法,进一步地,安全敏感非控制数据包含目标程序中自定义函数的函数参数,***调用参数,及与函数参数和***调用参数存在依赖关系的变量。进一步地,识别并定位的安全敏感非控制数据,包含:通过敏感函数分析,识别并定位的自定义函数和***调用函数;通过数据依赖分析,识别并定位的与自定义函数参数和***调用参数存在依赖关系的变量。
作为本发明非控制数据攻击检测方法,进一步地,如图5所示,构造与源程序对应的新型程序依赖图。首先,利用Clang编译器生成目标程序的LLVM中间语言表示,并在基本块级别生成目标程序的传统程序依赖图。通过分析程序依赖图,得到目标程序中的数据依赖关系和控制依赖关系。本发明实施例中将函数参数、***调用参数、以及与上述两种非控制数据存在依赖关系的变量作为安全敏感的非控制数据。静态分析模块通过敏感函数分析方法在目标程序的LLVM中间语言表示中搜索自定义函数和***调用函数,并识别和定位函数参数和***调用参数,然后,利用数据依赖分析,识别和定位与函数参数和***调用参数存在依赖关系的变量。最后,静态分析模块构造一个目标程序中安全敏感的非控制数据集合,并识别和定位出集合中的全部元素。在此基础上,结合生成的传统程序依赖图,在相应的有向边上添加注释,构造目标程序的新型程序依赖图。
作为本发明非控制数据攻击检测方法,进一步地,参见图6所示,根据静态分析生成的新型程序依赖图,在目标程序的LLVM中间语言表示通过编写LLVM中的pass进行插桩。首先,从目标程序的中间代码取一个基本块i,根据新型程序依赖图,判断该基本块中是否存在访问且调用同一个安全敏感的非控制数据的情况。若基本块i中存在访问且调用了同一个安全敏感的非控制数据的情况,则在对应的访问操作之后和调用操作之前分别***插桩代码,并判断目标程序的所有基本块是否已进行插桩处理完毕;若基本块i中不存在访问且调用同一个安全敏感的非控制数据,则判断基本块i中是否存在访问安全敏感的非控制数据的情况。若基本块i中存在访问安全敏感的非控制数据的情况,则在基本块i的出口处***插桩代码;否则,判断基本块i中是否存在调用安全敏感的非控制数据的情况。若存在,则在基本块i的入口处***插桩代码;否则,判断该基本块i是否是最后一个待插桩处理的基本块。上述过程是对一个基本块进行插桩的完整流程,若确定该基本块i并不是最后一个待插桩处理的基本块,则从中间代码中取下一个待插桩处理的基本块;否则,插桩模块完成了对目标程序的插桩处理。
作为本发明非控制数据攻击检测方法,进一步地,参见图7所示,当用户空间的目标进程执行到插桩代码时,会触发异常,陷入到内核空间,此时处理模块会根据目标进程对应的新型程序依赖图对异常进行处理。首先,处理模块定位触发异常的基本块号。然后,判断该基本块中是否存在访问且调用同一个安全敏感的非控制数据的情况。若该基本块中存在访问且调用同一个安全敏感的非控制数据的情况,则在该基本块中进一步定位触发异常的位置,如果触发异常的位置为访问安全敏感的非控制数据之后,则获取此时目标进程内存中被访问操作的安全敏感的非控制数据的值,并在安全敏感的非控制数据表中更新对应的值;如果触发异常的位置为调用安全敏感的非控制数据之前,则获取此时目标进程内存中安全敏感的非控制数据的值,并查询安全敏感的非控制数据表中对应的值,验证其一致性。若验证通过,则该异常处理结束,通知目标进程继续运行;否则,该非控制数据在调用前被恶意篡改,认为存在非控制数据攻击行为,并立即终止目标进程的运行。
若该基本块不存在访问且调用同一个安全敏感的非控制数据的情况,则进一步判断该基本块中是否存在访问安全敏感的非控制数据的情况。若该基本块中存在访问安全敏感的非控制数据的情况,则获取目标进程内存中被访问操作的安全敏感的非控制数据的值,并在安全敏感的非控制数据表中将对应的值进行更新。然后,结束该异常的处理,通知目标进程继续运行。若该基本块中不存在访问安全敏感的非控制数据的情况,则进一步判断该基本块中是否存在调用安全敏感的非控制数据的情况。若该基本块中存在调用安全敏感的非控制数据的情况,则获取目标进程内存中即将被调用的安全敏感的非控制数据的值,并查询安全敏感的非控制数据表中对应的值,验证其一致性。若验证通过,则该异常处理结束,通知目标进程继续运行;否则,该非控制数据在调用前被恶意篡改,认为存在非控制数据攻击行为,并立即终止目标进程的运行。若该基本块中不存在调用安全敏感的非控制数据的情况,则认为本次目标进程触发的异常为意料之外的异常情况。出于安全考虑,认为此时仍可能存在可疑的恶意行为导致了该意料之外的异常情况,因此,处理模块依然认为存在非控制数据攻击,并立即终止目标进程的运行。
基于上述的方法,本发明实施例还提供一种基于新型程序依赖图的非控制数据攻击检测装置,参见图4所示,包含:静态分析模块101、新型依赖图构建模块102、插桩模块103和处理模块104,其中,
静态分析模块101,用于通过静态分析,识别和定位目标程序中安全敏感非控制数据,生成安全敏感非控制数据表和目标程序基本块粒度的传统程序依赖图;
新型依赖图构建模块102,用于结合传统程序依赖图,在传统程序依赖图的有向边上添加包含目标程序中识别和定位的安全敏感非控制数据的注释,构造目标程序的新型程序依赖图;
插桩模块103,用于根据新型程序依赖图,在涉及访问调用安全敏感非控制数据的基本块中进行代码插桩;
处理模块104,用于执行目标程序时,结合新型程序依赖图和安全敏感非控制数据表进行进程的攻击检测,以保证目标程序中安全敏感非控制数据的数据流完整性。
结合图2,在装置的架构中,静态分析模块负责对源程序的静态分析工作,插桩模块负责***插桩代码,***代码主要根据源程序对应的新型程序依赖图,在涉及访问和调用安全敏感的非控制数据的基本块中***插桩代码,编译器负责将插桩后的源程序编译成二进制可执行文件,安全敏感的非控制数据表负责存储目标程序中安全敏感的非控制数据集合及其对应的值,该表存储在***的内核空间以防止其中的值被恶意篡改;处理模块负责在内核空间处理目标进程运行时由于执行插桩代码触发的异常。根据目标进程的新型程序依赖图,处理模块能够确定触发该异常的某个基本块,以及该基本块执行时会涉及的访问和调用的安全敏感的非控制数据对象。然后,对异常进行处理,从而保证目标进程中安全敏感的非控制数据的数据流完整性。将保护的非控制数据缩小到安全敏感的非控制数据集合,在基本块粒度进行分析和插桩处理,保证程序的运行效率,平衡安全性和性能开销,具有较好通用性,为非控制数据攻击检测提供新的解决方案。
如上所述,本发明实施例中通过构造目标程序的新型程序依赖图,并基于新型程序依赖图实现了在运行时对非控制数据攻击检测,其优点在于:1、通用性更好,实施不受限于特定的硬件环境,能够针对各种硬件平台环境下的应用程序实施保护,检测目标程序中存在的非控制数据攻击行为;2、性能开销小,提取目标程序中安全敏感的非控制数据,并对安全敏感的非控制数据实施数据流完整性保护,解决传统DFI方法对所有非控制数据实施数据流保护的开销大的问题;3、方案轻便灵活,能方便地部署到实际应用环境中,通过扩展LLVM编译器实现了静态分析阶段的静态分析与源程序编译功能,且通过扩展在内核空间***处理模块与安全敏感的非控制数据表实现动态保护阶段的非控制数据攻击检测功能。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本发明的范围。
基于上述的方法,本发明实施例还提供一种服务器,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述的方法。
基于上述的方法,本发明实施例还提供一种计算机可读介质,其上存储有计算机程序,其中,该程序被处理器执行时实现上述的方法。
本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在这里示出和描述的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制,因此,示例性实施例的其他示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
附图中的流程图和框图显示了根据本发明的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种基于新型程序依赖图的非控制数据攻击检测方法,其特征在于,包含:
A)通过静态分析,识别和定位目标程序中安全敏感非控制数据,获取安全敏感非控制数据表,并生成目标程序基本块粒度的传统程序依赖图;
B)结合传统程序依赖图,在有向边上添加包含目标程序中识别和定位的安全敏感非控制数据的注释,构造目标程序的新型程序依赖图;
C)根据新型程序依赖图,在涉及访问调用安全敏感非控制数据的基本块中进行代码插桩;
D)执行目标程序时,结合新型程序依赖图和安全敏感非控制数据表进行进程的攻击检测,以保证目标程序中安全敏感非控制数据的数据流完整性。
2.根据权利要求1所述的基于新型程序依赖图的非控制数据攻击检测方法,其特征在于,A)中安全敏感非控制数据包含目标程序中自定义函数的函数参数,***调用参数,及与函数参数和***调用参数存在依赖关系的变量。
3.根据权利要求1所述的基于新型程序依赖图的非控制数据攻击检测方法,其特征在于,A)中识别和定位安全敏感非控制数据,包含如下内容:
A1)利用编译器生成目标程序对应的中间语言表示,并生成对应的基本块粒度的程序依赖图;
A2)分析目标程序对应的中间语言表示,识别并定位安全敏感非控制数据,并构建目标程序中安全敏感非控制数据表。
4.根据权利要求3所述的基于新型程序依赖图的非控制数据攻击检测方法,其特征在于,A2)中识别并定位的安全敏感非控制数据,包含:通过敏感函数分析,识别的自定义函数和***调用函数,并提取和定位对应自定义函数和***调用函数的参数;通过数据依赖分析,识别并定位与自定义函数参数和***调用参数存在依赖关系的变量。
5.根据权利要求1所述的基于新型程序依赖图的非控制数据攻击检测方法,其特征在于,B)中在有向边添加注释,对应于基本块执行时访问和调用的安全敏感非控制数据情形,该情形包含将安全敏感非控制数据作为算术逻辑运算对象操作使用时的访问行为和将安全敏感非控制数据作为函数参数操作使用时的调用行为。
6.根据权利要求1所述的基于新型程序依赖图的非控制数据攻击检测方法,其特征在于,C)中进行代码插桩,包含如下内容:
C1)从目标程序的中间代码取一个基本块i;
C2)根据新型程序依赖图,判断该基本块中是否存在访问且调用同一个安全敏感非控制数据,若存在,则在对应的访问操作之后和调用操作之前分别***插桩代码,并判断目标程序的所有基本块是否已进行插桩处理完毕,若未处理完毕,则进入步骤C3);
C3)判断基本块i中是否存在访问安全敏感的非控制数据的情况,若存在,则在基本块i的出口处***插桩代码,若不存在,则进入步骤C4);
C4)判断基本块i中是否存在调用安全敏感的非控制数据的情况,若存在,则在基本块i的入口处***插桩代码;否则,判断目标程序的所有基本块是否已经进行插桩处理完毕;
C5)若目标程序中还有基本块等待进行插桩处理,i=i+1,并回到步骤C1);否则,目标程序代码插桩完成。
7.根据权利要求1或6所述的基于新型程序依赖图的非控制数据攻击检测方法,其特征在于,D)目标程序运行进行进程攻击检测,包含如下内容:
D1)当目标程序执行到插桩代码时,触发异常;
D2)根据新型程序依赖图,定位触发异常的基本块号;
D3)判断该基本块中是否存在访问且调用同一个安全敏感的非控制数据的情况,若存在,则定位在该基本块中触发异常的位置,当触发异常的位置为访问安全敏感非控制数据之后,则获取当前目标进程内存中被访问操作的安全敏感非控制数据的值,并在安全敏感非控制数据表中更新对应值;当触发异常的位置为调用安全敏感非控制数据之前,则对即将调用的安全敏感非控制数据的数据流完整性进行验证,并执行步骤D4);
D4)判断该基本块中是否存在访问安全敏感的非控制数据的情况,若存在,则获取目标进程内存中被访问操作的安全敏感非控制数据的值,并在安全敏感非控制数据表中将对应的值进行更新;然后,结束该异常的处理,通知目标进程继续运行;若该基本块中不存在访问安全敏感非控制数据的情况,则执行步骤D5);
D5)判断该基本块中是否存在调用安全敏感非控制数据的情况,若存在,则对即将调用的安全敏感非控制数据的数据流完整性进行检测验证,若不存在,则判定当前目标进程触发的异常为意料之外的异常情况,终止目标进程运行。
8.根据权利要求7所述的基于新型程序依赖图的非控制数据攻击检测方法,其特征在于,D)中,安全敏感非控制数据的数据流完整性的验证,包含如下内容:获取目标进程内存中即将被调用的安全敏感非控制数据的值,并查询安全敏感非控制数据表中对应的值,验证其一致性,若验证通过,则该异常处理结束,通知目标进程继续运行;否则,则判定该非控制数据在调用前被恶意篡改,认为存在非控制数据攻击行为,立即终止目标进程的运行。
9.根据权利要求1所述的基于新型程序依赖图的非控制数据攻击检测方法,其特征在于,D)中,目标程序运行时,自动处理目标程序由于执行插桩代码触发的异常情形,并对存储在内核空间的安全敏感非控制数据表进行更新记录,以完成对非控制数据的攻击检测。
10.一种基于新型程序依赖图的非控制数据攻击检测装置,其特征在于,包含:静态分析模块、新型依赖图构建模块、插桩模块和处理模块,其中,
静态分析模块,用于通过静态分析,识别和定位目标程序中安全敏感非控制数据,生成安全敏感非控制数据表和目标程序基本块粒度的传统程序依赖图;
新型依赖图构建模块,用于结合传统程序依赖图,在有向边上添加包含目标程序中识别和定位的安全敏感非控制数据的注释,构造目标程序的新型程序依赖图;
插桩模块,用于根据新型程序依赖图,在涉及访问调用安全敏感非控制数据的基本块中进行代码插桩;
处理模块,用于执行目标程序时,结合新型程序依赖图和安全敏感非控制数据表进行进程的攻击检测,以保证目标程序中安全敏感非控制数据的数据流完整性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910848694.7A CN110717181B (zh) | 2019-09-09 | 2019-09-09 | 基于新型程序依赖图的非控制数据攻击检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910848694.7A CN110717181B (zh) | 2019-09-09 | 2019-09-09 | 基于新型程序依赖图的非控制数据攻击检测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110717181A true CN110717181A (zh) | 2020-01-21 |
CN110717181B CN110717181B (zh) | 2021-07-02 |
Family
ID=69209830
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910848694.7A Active CN110717181B (zh) | 2019-09-09 | 2019-09-09 | 基于新型程序依赖图的非控制数据攻击检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110717181B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022011818A1 (zh) * | 2020-07-14 | 2022-01-20 | 浙江大学 | 一种基于arm指针验证的内核敏感数据完整性保护方法 |
CN115051810A (zh) * | 2022-06-20 | 2022-09-13 | 北京大学 | 基于远程证明的接口型数字对象真实性验证方法及装置 |
CN115150152A (zh) * | 2022-06-30 | 2022-10-04 | 中国人民解放军陆军工程大学 | 基于权限依赖图缩减的网络用户实际权限快速推理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101473300A (zh) * | 2006-06-23 | 2009-07-01 | 微软公司 | 通过实施数据流完整性来保护软件 |
US20170293477A1 (en) * | 2014-10-14 | 2017-10-12 | Nippon Telegraph And Telephone Corporation | Analysis device, analysis method, and analysis program |
CN108090346A (zh) * | 2017-12-04 | 2018-05-29 | 华中科技大学 | 一种基于数据流监控的代码复用攻击防御方法及*** |
CN109918903A (zh) * | 2019-03-06 | 2019-06-21 | 西安电子科技大学 | 一种基于llvm编译器的程序非控制数据攻击防护方法 |
-
2019
- 2019-09-09 CN CN201910848694.7A patent/CN110717181B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101473300A (zh) * | 2006-06-23 | 2009-07-01 | 微软公司 | 通过实施数据流完整性来保护软件 |
US20170293477A1 (en) * | 2014-10-14 | 2017-10-12 | Nippon Telegraph And Telephone Corporation | Analysis device, analysis method, and analysis program |
CN108090346A (zh) * | 2017-12-04 | 2018-05-29 | 华中科技大学 | 一种基于数据流监控的代码复用攻击防御方法及*** |
CN109918903A (zh) * | 2019-03-06 | 2019-06-21 | 西安电子科技大学 | 一种基于llvm编译器的程序非控制数据攻击防护方法 |
Non-Patent Citations (2)
Title |
---|
赵磊: "执行上下文感知的半自动化软件调试方法研究", 《中国博士学位论文全文数据库》 * |
鲁婷婷: "Windows内存防护机制研究", 《网络与信息安全学报》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022011818A1 (zh) * | 2020-07-14 | 2022-01-20 | 浙江大学 | 一种基于arm指针验证的内核敏感数据完整性保护方法 |
CN115051810A (zh) * | 2022-06-20 | 2022-09-13 | 北京大学 | 基于远程证明的接口型数字对象真实性验证方法及装置 |
CN115051810B (zh) * | 2022-06-20 | 2023-07-25 | 北京大学 | 基于远程证明的接口型数字对象真实性验证方法及装置 |
CN115150152A (zh) * | 2022-06-30 | 2022-10-04 | 中国人民解放军陆军工程大学 | 基于权限依赖图缩减的网络用户实际权限快速推理方法 |
CN115150152B (zh) * | 2022-06-30 | 2024-04-26 | 中国人民解放军陆军工程大学 | 基于权限依赖图缩减的网络用户实际权限快速推理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110717181B (zh) | 2021-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2531861C1 (ru) | Система и способ оценки вредоносности кода, исполняемого в адресном пространстве доверенного процесса | |
JP6829718B2 (ja) | 複数のソフトウェアエンティティにわたって悪意あるビヘイビアを追跡するためのシステムおよび方法 | |
JP5908132B2 (ja) | プログラムの脆弱点を用いた攻撃の探知装置および方法 | |
EP3039608B1 (en) | Hardware and software execution profiling | |
JP6706273B2 (ja) | インタープリタ仮想マシンを用いた挙動マルウェア検出 | |
EP2946330B1 (en) | Method and system for protecting computerized systems from malicious code | |
GB2499932B (en) | Detecting a return-oriented programming exploit | |
EP3462358B1 (en) | System and method for detection of malicious code in the address space of processes | |
EP2515250A1 (en) | System and method for detection of complex malware | |
CN110717181B (zh) | 基于新型程序依赖图的非控制数据攻击检测方法及装置 | |
JP2019502197A (ja) | ランタイム生成コードにおける悪意のあるコードの検出のためのシステムおよび方法 | |
JP2013239149A (ja) | 悪意のあるファイル検査装置及び方法 | |
Balachandran et al. | Potent and stealthy control flow obfuscation by stack based self-modifying code | |
CN109271789B (zh) | 恶意进程检测方法、装置、电子设备及存储介质 | |
JP2016525760A (ja) | 無関係なコードの特定 | |
Chen et al. | Efficient detection of the return-oriented programming malicious code | |
CN113779578A (zh) | 移动端应用的智能混淆方法和*** | |
Shila et al. | I can detect you: Using intrusion checkers to resist malicious firmware attacks | |
CN108319850B (zh) | 沙箱检测的方法、沙箱***和沙箱设备 | |
Coudray et al. | PICON: control flow integrity on LLVM IR | |
KR100985071B1 (ko) | 스크립트 언어를 사용한 취약점 공격 코드의 실시간 탐지및 차단 방법, 및 그 장치 | |
Zhao et al. | Automatic extraction of secrets from malware | |
Qin et al. | Defending against ROP attacks with nearly zero overhead | |
Ling et al. | Prison break of android reflection restriction and defense | |
US12001545B2 (en) | Detecting stack pivots using stack artifact verification |
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 |