面向进程控制流劫持攻击的拟态防御方法

2021-02-28 04:45潘传幸张铮马博林姚远季新生
通信学报 2021年1期
关键词:拟态调用异构

潘传幸,张铮,马博林,姚远,季新生

(1.数学工程与先进计算国家重点实验室,河南 郑州 450001;2.国家数字交换系统工程技术研究中心,河南 郑州 450002)

1 引言

进程控制流劫持是一种常见的攻击手段,其通常利用缓冲区溢出[1]等二进制漏洞篡改进程的控制流,从而进行程序正常功能之外的恶意操作[2]。控制流劫持攻击的危害非常大,控制流劫持的目的往往是获取目标机器的控制权,然后提取系统特权对目标机器实现全面控制。根据 CWE Top25[3]的排名,内存缓冲区溢出仍然是最危险的软件错误。

控制流劫持攻击可以分为代码注入和代码重用两大类[2]。代码注入类攻击利用程序本身的输入功能向进程的虚拟地址空间注入恶意代码,然后通过缓冲区溢出等方式覆盖返回地址,实现控制流劫持。代码重用类攻击不需要注入代码,而是利用程序自身的代码片段完成攻击。为了防御进程控制流劫持,研究人员和工程技术人员提出了许多防御手段。早期,控制流劫持攻击通过代码注入实现,为了防御代码注入攻击,研究人员提出了数据执行保护(DEP,data execution prevention)、栈不可执行[4]、栈监控[5]、地址空间布局随机化(ASLR,address space layout randomization)[6]等方法。然而,这些方法却无法防御面向返回编程(ROP,return oriented programming)[7]等基于代码重用的控制流劫持[8-11]。控制流完整性(CFI,control-flow integrity)[12-13]是防御代码重用较有效的方法,其通过对二进制可执行程序进行静态分析,建立可信的控制流图,在执行时限制控制流转移。但是,对于信息泄露和面向数据编程(DOP,data oriented programming)[14]攻击,即使细粒度的CFI 也难以起到防御作用。

拟态防御是我国科研团队提出的针对未知漏洞后门的主动防御思想[15-16],核心是动态异构冗余(DHR,dynamic heterogeneous redundancy)构造[17],如图1 所示。各个执行体之间功能等价,但受到攻击后的行为表现各异,表决器通过对比在线执行体集中各执行体之间的行为是否一致来判断是否遭到攻击。一旦表决器判定为遭到攻击,则调用动态选择算法从离线的异构构件集合中挑选合适的构件对在线执行体进行替换,这个过程称为拟态变换。输入代理与表决器中间的部分称为拟态界。拟态界的DHR 构造和表决机制是拟态防御系统内生地具备安全能力的根源[15,18-19]。

为了防御基于二进制漏洞的进程控制流劫持攻击,本文受拟态防御思想的启发,采用动态异构冗余的方式执行程序。在异构冗余的基础上,结合表决机制,能够有效发现攻击行为,然后阻断攻击。

本文的主要研究工作及贡献如下。

1) 梳理了进程控制流劫持攻击的过程,从漏洞利用过程的角度建立了二进制漏洞威胁模型,并依据此模型提出了针对关键利用环节的“要塞”防御。

2) 提出了进程的拟态执行模型,为防御基于二进制漏洞的进程控制流劫持攻击提供了一种主动防御式的解决方案。

图1 拟态防御系统DHR 构造

3) 实现了一个拟态执行的原型系统——Mimic-Box,并进行了有效性验证和性能测试。经测试,MimicBox 能够防御绝大多数已知的基于二进制漏洞的进程控制流劫持攻击,并且导致的额外性能开销不超过13%。

2 二进制漏洞威胁模型

常见的控制流劫持技术往往是利用堆和栈开展攻击。在利用栈的攻击技术中[20],栈缓冲区溢出攻击占了绝大部分。当栈缓冲区溢出,即程序接收的用户输入超过开发者所分配的缓冲区大小时,可能会破坏栈中所存储的关键数据,从而引发错误。由于栈中存放了函数的返回地址,因此在没有保护的情况下,一旦攻击者利用栈溢出,使用其他地址覆盖了原来的函数返回地址,那么当函数执行完成进行返回时,就会去执行攻击者所构造的地址处的代码,攻击者就可以达到控制流劫持的目的。在针对堆的攻击技术[21]中,攻击者首先利用申请和释放堆块时涉及的堆分配机制进行堆布局,然后非正常地申请和释放堆块,获得一个指向关键内存位置处的指针,最后使用程序的输入功能将其重写为其他代码段的地址,从而实现程序的控制流劫持。

本文分析了几种常见的面向Linux 平台的控制流劫持方式,并以此为基础进行了二进制漏洞威胁建模,威胁模型如图2 所示。模型遵循的前提与假设如下。

1) 目标机器装有Linux 操作系统。

2) 攻击者拥有目标程序的可执行文件,能够对目标程序进行静态分析。

图2 基于二进制漏洞的控制流劫持攻击威胁模型

3) 目标程序是个应用软件,并且包含可供控制流劫持使用的二进制漏洞。

4) 基于二进制漏洞的控制流劫持,目的在于获取目标机器控制权和shell。

5) 将可以获取 shell 的代码片段统一记为one_gadget。

在对栈溢出漏洞进行利用时,攻击者首先采取静态分析的方式获取ROP 所需的gadget 的地址信息,再以ROP 技术作为跳板,实现程序的信息泄露,获取必要的内存信息,然后以此为基础,向栈中存放返回地址的内存处写入one_gadget 地址,从而获取shell,在某些特殊情况下,攻击者也可以使用字节爆破的方式在不获得信息的情况下向栈内注入恶意的地址。

在程序本身拥有可以实现控制流劫持的代码片段(如system、execve 函数)的情况下,当目标程序被编译成地址无关可执行(PIE,position-independent executable)程序时,攻击者可以直接将这些代码片段作为one_gadget,然后将栈中的返回地址覆盖为这些代码片段的地址,路径1—2—22—29—36 表示一个完整的ret2text 利用流程;当目标程序不是PIE 程序时,攻击者将首先通过一个信息泄露漏洞,如格式化字符串漏洞,获取并计算出想要跳转到的one_gadget 的地址,然后将栈中的返回地址覆盖为one_gadget 的地址,路径4—2—22—29—36 表示针对PIE 程序的ret2text 利用流程。

当程序本身并不拥有可以实现控制流劫持的代码片段时,攻击者往往将libc 系统共享库中的system 函数作为one_gadget,使“/bin/sh”作为system函数的参数即可。攻击者首先需要获取gadget 地址信息,利用ROP 等代码重用技术实现跳转完成信息泄露,然后获取libc 库中某个函数的地址信息,通过偏移计算获得one_gadget 的地址,最后再进行多次ROP,把got 表中的某项篡改为one_gadget 的地址,或者直接跳转到libc 中的one_gadget。路径1—3—5—23—30—36 表示一个完整的ret2libc 利用流程。

路径1—2—25—32—36 表示一个完整的ret2syscall 攻击过程,攻击者使用ROP 技术并在栈内注入syscall 指令地址,然后劫持控制流获取shell。

路径6—7—12—17—26—33—36 表示一个完整的释放后使用(UAF,use—after—free)漏洞利用流程。攻击者首先进行堆布局,对堆进行多次非正常申请与释放,获得一个指向got 表中某表项的指针;然后攻击者利用程序自带的修改功能(如记事本程序中的编辑功能),把got 表某项的指针指向的内容修改为one_gadget 地址,从而完成程序的控制流劫持,获得shell。

路径6—8—13—17—27—34—36、6—9— 14—17—27—34—36、6—10—15—17—27—34—36、6—11—16—17—27—34—36 分别表示攻击者根据glibc 管理堆的特性,采取不同的攻击方式的堆利用流程。其本质都是不断地构造特殊的堆并多次非正常地申请与释放堆,获得一个可以修改内容的指针,再使用程序自带的地址写功能将关键内存位置,如将got 表中的表项或malloc_hook 中的内容覆盖为one_gadget 地址,从而达到控制流劫持获取shell 的目的。

无论哪条漏洞利用路径,攻击者都无法摆脱对虚拟内存地址的依赖。在大部分情况下,攻击者首先通过信息泄露获取one_gadget 的地址信息,然后向程序传入one_gadget 地址,在其他情况下,攻击者可以跳过信息泄露这一步骤进行漏洞利用,但是仍然需要向程序注入正确的one_gadget 地址。

3 拟态执行模型

要想实现一次完整的攻击过程,必须要知道one_gadget 的虚拟内存地址。基于这一发现,本文认为防御的关键在于两点,一是不泄露one_gadget的地址,二是使泄露的one_gadget 地址失效。因此,为了防御控制流劫持,本文提出拟态执行,将虚拟内存地址空间作为拟态界,在拟态界内部异构,当拟态界内与拟态界外产生数据交换时,则对数据进行表决。拟态执行模型如图3 所示。

拟态执行过程如下。首先对一个即将运行的程序进行无规律的内存空间布局异构,异构成n(n≥1)份,并使之冗余执行。当有数据流出进程的虚拟内存空间时对数据内容进行表决,总共进行m−1(且n、m不能同时为1)次表决。当表决一致时,记录各冗余运行程序的状态;当表决不一致时,说明遭到了攻击,则阻断攻击并随之进行拟态变换,也就是再次进行无规律的变化运行时的内存空间布局。当n=1时,每次表决都触发一次拟态变换。

因为会对程序进行异构化处理,所以通过静态分析获得的one_gadget 地址在实施攻击时是无效的。因此,针对拟态执行的攻击有2 种情况。

情况1爆破one_gadget 地址,逐一尝试暴力枚举的one_gadget 地址,直到成功。

情况2如图4 所示,通过2 次漏洞利用完成,第一次上传 payload 利用程序本身的漏洞获取one_gadget 地址,然后根据one_gadget 再次构造并上传payload 实施后面的攻击步骤,最终实现控制流劫持并获取shell,获取机器控制权。

下面,证明拟态执行具备防御控制流劫持的效果。记在拟态执行过程中触发的拟态变换次数为t(m−1≥t≥0)。

情况1 的证明如下。当n=1时,设寻址位数为k,在拟态变换的干扰作用下,一次地址爆破成功的概率始终为,无论k取32 还是64,都有p≈ 0;当n> 1时,只可能按概率p爆破成功一路冗余执行进程中的one_gadget 地址劫持控制流,然而,其他冗余进程仍按照原控制流执行,那么一定会在接下来的表决中发现不一致的拟态界内外数据交换,进而阻断攻击,然后进行拟态变换使one_gadget 地址失效。

图3 拟态执行模型

图4 针对拟态执行的抽象攻击过程

情况2 的证明如下。当n=1时,每次数据流出拟态界时需进行表决,每次表决都会触发一次拟态变换,那么攻击者通过第一次上传payload 获取的one_gadget 地址在实施接下来的攻击步骤时(第二次上传payload)无效。当n> 1时,攻击者通过第一次上传payload 来泄露one_gaaget 地址意味着one_gadget 地址将作为数据流出拟态界,会触发一次表决,不同冗余执行程序中的one_gadget 地址是不同的,那么在表决时一定会发现one_gadget 地址泄露,从而阻断信息泄露,此时攻击端将无法进行接下来的攻击步骤。

4 原型系统实现

本文在Linux 操作系统上实现了拟态执行的原型系统MimicBox。如图5 所示,MimicBox 是一个n>1、t=0的拟态执行系统。MimicBox 对经异构处理的冗余执行的等价进程进行监控,当程序执行到表决点时进行表决,当表决判定为不一致时,MimicBox将对程序进行阻断,从而保证one_gadget 地址不泄露。

1) 进程异构化处理

图5 MimixBox 原理框架

Linux 操作系统本身就提供了许多内存空间布局异构相关的技术,如Canary 栈监控、PIE、ASLR等。在编译时,Canary 技术通过在返回地址之前插入一个随机数,能够实现对程序代码本身的异构,PIE 程序在装载时可以被装载进随机的虚拟内存空间;在运行时,ASLR 会对执行进程的堆段、栈段、共享库的基地址进行随机化。ASLR 技术和PIE 技术都能实现内存空间布局的异构。MimicBox 充分利用Linux 操作系统提供的上述技术对程序进行异构化处理。

2) 表决点设置

因为拟态执行要求在拟态界内与拟态界外产生数据交换时进行表决,并且MimicBox 的拟态界就是虚拟内存空间,所以当MimicBox 发现冗余执行的进程有数据流出虚拟内存空间时,主动进行表决。因为Linux 中一个进程的虚拟内存中的数据必须通过系统调用才能流向别处,所以MimicBox 将表决点设置在所有输出类的系统调用。

3) 表决点监控

ptrace 系统调用是Linux 操作系统向用户态提供的调试接口。当ptrace 系统被调用时,会产生一个中断信号,ptrace 通过监听这个信号来判断是否产生系统调用。使用ptrace 不仅能够监听系统调用的产生,而且还能控制进程的运行状态。MimicBox使用ptrace 系统调用实现系统调用的拦截、替换、表决内容提取、返回值覆盖等功能。

4) 冗余执行体管理

MimicBox 使用编号对冗余执行体进行管理,编号从0 开始,依次递增1。

5) 冗余输出合并

拟态界内部执行进程的冗余必将导致拟态界内与拟态界外数据交换的冗余,为了不对拟态界外造成影响,除了对数据交换进行表决之外,还必须合并冗余的数据交换。Linux 中使用文件描述符或网络套接字来标识具体的数据流向的目标,比如磁盘文件、socket 套接字等。MimicBox 使用目标点描述符来管理数据交换,目标点描述符的定义如图6所示。当MimicBox 发现open 或openat 系统调用并且成功打开文件时,将创建一个目标点描述符。当MimicBox 发现等价的冗余进程进行写操作时,就要检查目标点描述符的desc 域,如果一致就进行合并。具体来说,使0 号执行体中的进程正常执行,通过getpid 系统调用替换其他等价进程中的系统调用,然后通过0 号执行体中的进程系统调用的返回值覆盖其他等价进程中系统调用的返回值。另外,对于网络通信来说,除了要合并相关的输出类系统调用之外,还要对connect、listen、accept、bind 等相关系统调用合并。合并方式与合并输出类系统调用的方式类似,不同的是,网络通信是在发现connect、accept 系统调用时创建目标点描述符。

图6 目标点描述符的定义

6) 等价线/进程匹配

为了更好地支持多线/进程,在表决时要准确定位到相互功能等价的冗余线/进程,这要求等价线/进程在MimicBox 中要有相同的标识。在MimicBox中,对线/进程按照层次进行编号,使用一系列编号组成的序列标识线/进程。图7 展示了冗余等价任务中其中一个任务的线/进程关系,进程pid=2 646 由进程pid=2 645 通过调用fork 函数得到,一个线程从0 开始给它的子线程编号,当再创建新线程时,编号依次递增1。对于一个线程,沿着父线程方向回溯,直到进程的第一个线程,由所途经线程的编号组成的序列即为这个线程的标识。以线程tid=2 660和线程tid=2 654 为例,它们在该执行体中的唯一标识序列分别为(2,0,1)和(0,1,0)。在冗余等价任务中,具有相同标识的线程视为等价线程。

5 评估

本文从防御有效性和性能2 个方面对MimicBox进行了实验评估。实验旨在回答如下2 个问题。

1) MimicBox 的防御边界在哪里?能防御哪些类型的攻击?

2) 任何安全措施必将导致效率的降低,MimicBox 是否会带来不可接受的性能损耗?

5.1 有效性验证和评估

为了验证MimicBox 防御控制流劫持攻击的有效性,设置了3 种测试环境,并在3 种不同的场景进行有效性验证实验或测试。

5.1.1 理想场景验证实验

理想环境下的验证实验使用CTF Pwn 夺旗赛中的题目作为实验样本。在CTF Pwn 夺旗赛中,通常会将编译好的带漏洞可执行程序发放给选手,选手通过对二进制程序进行逆向分析和调试来找出漏洞,并编写攻击代码,以远程代码执行的方式拿到flag。

Pwn 程序中的漏洞覆盖面广泛,几乎包含了绝大多数已知的二进制漏洞。一般来说,Pwn 程序中除了预先设置的漏洞之外不包含其他漏洞,能使实验更有针对性。因此本文采用CTF wiki 上的题目作为实验样本,进行验证实验。

使用MimicBox 将CTF wiki 中的Pwn 题目对应的带漏洞程序保护起来,然后用CTF wiki 中提供的expliot 脚本进行远程攻击。每次执行exploit 脚本记录下是否获取目标机器的shell,获取不到shell则意味着攻击失败,防御成功。攻击实验结果如表1 所示。对于栈攻击、堆攻击和I/O 文件攻击,MimicBox 均能防御相关的漏洞利用。

5.1.2 真实攻防场景测试

为了测试在真实攻防场景下MimicBox 的有效防御能力,将MimicBox 放到了第三届“强网”拟态防御国际精英挑战赛[22],接受来自世界上40 支战队的挑战。第三届“强网”拟态防御国际精英挑战赛在2020 年6 月19 日举行,为期两天。此次比赛按照“BMW”模式[23],采取线上白盒积分争夺赛、线上拟态白盒挑战赛、线上拟态黑盒挑战赛的全新赛制。其中,白盒积分争夺赛采取CTF Pwn比赛的形式与规则,MimicBox 出现在白盒积分争夺赛上。

比赛共出了四道题目,其中两道题目中的程序未被MimicBox 保护,作为基础题;另外两道题目中将同样的带漏洞程序采用MimicBox 保护,作为进阶题。经过48 h 的不间断攻击挑战,完成了对比测试。

题目easy-stack 中的目标程序包含一个格式化字符串漏洞和一个栈溢出漏洞;题目newpad 的对应程序中包含一个House of einherjar 类型的堆漏洞。经过测试,大部分战队能解出基础题目,然而却没有一支战队能解出进阶题目,这意味着没有任何战队能够突破MimicBox 的防护,具体测试结果如表2 所示。

图7 MimicBox 中的进/线程关系

表1 CTF Pwn 测试结果

5.1.3 真实漏洞利用场景验证实验

理想场景实验和真实攻防场景测试表明,MimicBox 对一些基础漏洞完全具备防御能力,为了验证MimicBox 对信息泄露的防御能力,选取了2 个真实世界中的软件漏洞(CVE-2014-0160 和CVE-2018-16890)进行漏洞防护实验。

CVE-2014-0160 是OpenSSL 中的一个高危漏洞,源于OpenSSL 中的TSL 模块和DTLS 模块在调用memcpy函数之前没有对长度参数进行边界检查,将导致过多的内存信息复制到缓冲区以每次64 KB 的速度泄露,泄露信息可能包括服务器私钥、用户cookie 和密码等。

MimicBox 能够有效防御CVE-2014-0160。当内存信息向外泄露时,将会触发表决。由于对冗余执行的等价进程做了异构处理,各冗余进程泄露的内存信息不一致,MimicBox 表决时将发现不一致,从而阻断信息泄露。

CVE-2018-16890 是7.36.0 版本到7.64.0 版本的curl 中的一个整数溢出漏洞。curl 处理NTML type-2消息的函数ntlm_decode_type2_target没有验证数据是否正确,利用整数溢出,恶意代码或者损坏的NTLM 服务器能够使curl 接收到错误的数据,将导致对一个堆缓冲区的越界读取。利用此漏洞,攻击者可以在服务器上远程获取客户端内存至多64 KB 的原始内存信息。而且因为连接可以多次进行,服务器理论上可以多次重复地获取客户端内存信息。

使用MimicBox 保护curl 客户端,能够有效防止信息泄露。防御原理与防御CVE-2018-16890 类似,MimicBox 将通过表决发现各冗余进程泄露的不一致信息从而进行阻断,具体来说,其发现了sendto 系统调用向服务端发送的内容不一致。当客户端被MimicBox 保护后,在服务端接收不到客户端泄露的内存信息。

表2 挑战赛测试结果

5.1.4 有效性评估

理想环境下的验证实验结果表明,MimicBox能够防御大部分栈漏洞、堆漏洞和I/O 文件漏洞利用。另外,如表1 所示,在有效异构的前提下,MimicBox 只需要使用双余度即可保证有效性。

真实攻防环境下的测试表明,相对于单一的基于随机的异构结构,MimicBox 的异构冗余结构赋予了程序极强的内生安全能力。

真实漏洞利用场景下的验证实验表明,对于以心脏滴血为代表的信息泄露类漏洞来说,拟态执行中蕴含的异构冗余特性使MimicBox 具备天然的防御能力。

总而言之,经过3 种不同测试场景下的充分实验,对于第一个问题,拟态执行的原型系统MimicBox 能够有效阻断绝大部分已知的基于栈利用、堆利用、I/O 文件攻击和信息泄露的进程控制流劫持。

5.2 性能评估

针对MimicBox 的性能测试,则使用SPEC CPU2006 完成。具体实验环境配置如表3 所示。首先对SPECint 2006 中的8 个样本进行基准测试,然后用MimicBox 将这8 个样本保护起来,测试多余度情况下的性能并计算额外性能开销(overhead)。测试结果如图8 所示,额外性能开销结果如表4所示。

对比基准程序和MimicBox 多余度测试结果,MimicBox 所需的时间、额外性能开销与冗余度呈正相关关系。横向观察表4,随着冗余度的增加,额外性能开销也随之增加。纵向观察表4,当n=2时,所有样本的额外性能损耗都不超过13%。对于CPU 密集型程序来说,MimicBox 导致的性能损耗是可以接受的。

表3 性能测试环境配置

5.3 对比评估

在已知的面向进程控制流劫持的防御方法中,CFI 是较有效的一种。本节将对拟态执行与CFI 进行一个简单的对比。

CFI 认为只有符合控制流图的控制流转移才是合法的[24]。根据输入程序类型的不同,控制流完整性实施方案可分为面向源代码和面向二进制2 种[25];根据控制流转移时检查的精细程度,CFI 又分为粗粒度CFI 和细粒度CFI[12]。CFI 被认为是较有效的一种防御控制流劫持的方案,然而,CFI 仍然存在一些局限性。

图8 测试结果

表4 MimicBox 多余度额外性能损耗

粗粒度的CFI 往往有效性较差,而细粒度的CFI 为了追求高有效性,往往导致不可接受的额外性能开销。文献[26]中的Picon 是一个面向源代码的CFI 框架,导致程序的平均运行时间增加了900多倍;Bincon[27]是一个面向二进制的CFI 框架,导致程序的平均运行时间增加了20 多倍。为了同时追求高有效性和低开销,一些研究者着手于硬件加速,以现有的硬件手段来降低CFI 的开销[25-30]。使用硬件虽然能带来一定的开销下降,但是却不可避免地带来了一定的成本上升。

拟态执行却是一种轻量、高有效、低开销、低成本的防御方案。拟态执行不需要在程序执行之前建立控制流图,具备内生安全能力,额外性能开销较低,成本低廉。拟态执行与面向源代码的CFI 相比,对源代码的依赖程度小;与面向二进制的CFI相比,不需要进行反编译或插桩;与粗粒度的CFI相比,能够防御的攻击类型更广泛;与细粒度的CFI相比,有效防御能力相当,但是拟态执行的额外性能开销远远小于CFI。

另外,CFI 无法抵御内存信息泄露,而拟态执行能够有效防止内存信息泄露。

总之,拟态执行是相对于CFI 更实用的一种用来防御进程控制流劫持的方法。

5.4 局限性

即使MimicBox 是退化的软件拟态执行系统原型,但是经过实验验证,其几乎可以防御绝大部分已知类型的控制流劫持攻击。然而,MimicBox 仍存在以下2 个方面的局限性。

1) 对于I/O 密集型程序,MimicBox 将可能导致较大的性能下降。性能下降的主要原因一方面是拟态系统的内在特性,另一方面是过多的无意义的系统调用处理。拟态执行强调在拟态界内向拟态界外流出数据时进行表决,而MimicBox 使用ptrace拦截所有的系统调用,对其中的部分系统调用进行表决,这大大降低了ptrace 的有效使用率。另外,使用ptrace 提取系统调用参数、控制进程状态等操作使整个系统中多出许多次额外的系统调用。

2) 存在表决假阳导致的误报问题。导致表决假阳的主要原因是MimicBox 中冗余进程之间存在内生的不一致属性,比如进程号、随机数、文件描述符等。当这些不一致属性作为数据流出拟态界时,往往导致表决误报。

6 结束语

为了防御进程控制流劫持攻击,本文提出了拟态执行方法。将拟态防御的DHR 构造引入进程执行过程中,在异构冗余的基础之上进行表决,能够有效发现攻击并采取防御措施。

拟态执行的原型系统MimicBox 验证了拟态执行的可行性和防御有效性,同时说明拟态执行具有良好的发展前景。拟态执行是一种轻量的、对用户透明的防御方式,应用领域可以涵盖云安全、系统安全、物联网设备安全等。

本文建立了进程控制流劫持攻击的威胁模型,经过对模型的分析,提出了进程的拟态执行防御模型,并基于该模型,实现了原型系统。经过对原型系统的安全性测试,验证了拟态执行的防御有效性。最后提出了拟态执行的发展前景和推广价值。

猜你喜欢
拟态调用异构
ETC拓展应用场景下的多源异构交易系统
试论同课异构之“同”与“异”
章鱼大师的拟态课堂
核电项目物项调用管理的应用研究
多源异构数据整合系统在医疗大数据中的研究
系统虚拟化环境下客户机系统调用信息捕获与分析①
吴健:多元异构的数字敦煌
模仿大师——拟态章鱼
关于拟声拟态词的考察
利用RFC技术实现SAP系统接口通信