APP下载

拟态通用运行环境的框架设计

2020-03-19邵培南

计算机工程 2020年3期
关键词:拟态调用异构

付 琳,邵培南,应 飞,解 维

(中国电子科技集团公司第三十二研究所,上海 201808)

0 概述

信息系统运行环境由网络通信层、基础层、应用支撑层和应用层组成,系统的运行可能受到来自软硬件病毒、后门和漏洞的安全威胁攻击[1]。例如对应用层HTTP协议的网页篡改和SQL注入、对应用支撑层Web容器和分布式文件系统的后门和漏洞攻击、对基础层云容器、操作系统的后门和漏洞攻击等[2]。以上攻击行为可能会导致信息系统运行的功能异常或终止,核心数据受到篡改、窃取或破坏[3]。

信息系统的安全防御技术分为被动安全防御和主动安全防御[4]。被动安全防御基于已知安全威胁特征规则的病毒、后门、漏洞等进行威胁诊断和清洗,如防火墙、病毒检测、后门检测等[5]。拟态防御理论由邬江兴院士提出,是一种以动态异构冗余(Dynamic Heterogeneous Redundancy,DHR)原理[6]为基础的主动安全防御技术。

本文将DHR架构与拟态信息系统相结合,设计一种拟态通用运行环境(Mimic Common Operating Environment,MCOE)框架。MCOE以运行拟态信息系统的异构执行体池为对象,提供N个异构执行体部署、服务请求的分发、执行、表决[7]、管理和安全威胁诊断[8]等运行支撑功能,用以保障安全威胁攻击情景下服务请求的正确、可靠运行[9]。

1 信息系统拟态防御

信息系统的网络通信层拟态防御主要基于拟态网络通信产品来实施[10]。本文提及的信息系统的拟态防御,主要是针对基础层、应用支撑层和应用层的拟态防御。通常,拟态信息系统的必要组成要素如下:

1)拟态化改造中功能等价的K(K≥1)个冗余异构应用程序源代码。对系统应用程序源代码的拟态化改造主要是增加标签化的表决调用和表决前后的上下文处理。标签化的表决调用指第三方API(如Oracle)参数、关键安全数据文件、库表数据结构操作、指定程序点的内在程序片段功能或内存关键数据的一致性表决调用。对此部分数据的一致性表决主要通过防止关键文件、数据库受到篡改确保关键功能正确执行,实现细粒度的安全防御。对源代码的拟态化改造具体分为如下3个部分:

(1)标签化表决调用(包括标签化API标识、表决主键、表决参数JSON字符串)和表决调用前后上下文程序段处理。

(2)标签化第三方API的协同执行调用,防止因服务请求并发执行引起的N个异构执行体API不一致。

(3)添加API钩子函数和统一处理组件,用于识别利用后门和漏洞访问的第三方API,如识别数据窃取的通信API或SQL语句。

2)异构软硬件构造化或拟态软件产品构建化的系统三层异构冗余的运行环境设施。例如:异构执行体[11]基础层操作系统、云容器、虚拟机的异构,应用支撑层Web容器的异构,应用层拟态存储[12]等拟态产品的异构。

拟态信息系统的运行支撑环境为基于系统异构应用程序源代码和运行环境设施形成的异构执行体池,由基础层A冗余异构、应用支撑层B冗余异构、应用层的K冗余异构形成具有M=A×B×K种异构执行体的异构执行体池。在受到安全威胁攻击的情况下,系统运行支撑环境的异构性可确保系统正确可靠运行。

2 MCOE框架体系设计

MCOE实现面向服务请求的N个异构执行体执行过程的自动化,对服务请求进行入口、过程、结果三级安全防护,并且提供了集成化的分发和表决的接口规范[13]。

2.1 MCOE总体框架

MCOE是实现面向C/C++、Java语言开发的 C/S或B/S信息系统的拟态防御架构[14],为拟态信息系统提供了自动化的通用运行环境和拟态防御手段,其防御方法和目标如下:

1)通过N个异构执行体运行节点软硬件资源异构最大化的资源调度,主动防御特定软硬件后门漏洞引起的安全威胁。

2)通过异构执行体运行节点软硬件资源和资源对象(如云容器、虚拟机)调度的随机性和动态性最大化,及时阻断由系统四层软硬件发起的安全威胁攻击。

3)通过服务请求执行过程中N个异构执行体内部和服务请求响应结果的两级表决,防止关键的文件、数据库、内存数据结构映像受到篡改,确保在受到安全威胁的情况下系统能够正确运行。

MCOE总体框架如图1所示,其中包括分发、内部表决、外部表决、管理和协同5个服务器,以及部署在各个服务器上的节点代理服务进程。

服务请求主键为分发服务器接收到客户端服务请求时创建的唯一标识,MOCE体系架构中的各个服务器通过服务请求主键进行关联。客户端服务请求驱动的MCOE,其中各服务器间协同工作的运行场景如下:

1)分发服务器接收客户端服务请求,按需进行已知特征安全威胁[15]识别和清洗,调用管理服务器的资源调度服务接口获取相应服务请求,执行所需的N个异构执行体、内部表决服务器和协同运行服务器的运行节点资源。

2)分发服务器发送包含服务请求主键和各个服务器运行节点资源(服务器、云容器或虚拟机对象资源)的文件给相应服务器的运行节点代理服务。

3)N个异构执行体、内部表决服务器和协同运行服务器的运行节点代理接收文件后,在相应系统配置文件中创建基于服务请求主键的待处理配置记录,并向分发服务器返回应答。

4)分发服务器转发服务请求到相应的N个异构执行体服务器。

5)N个异构执行体服务器执行服务请求,当执行到关键数据操作、重要功能模块和标签化的第三方API时,读取待处理配置记录中的内部表决服务器地址,调用内部表决服务器对表决内容进行一致性表决,同时对未标签化的API进行安全威胁诊断和处理。

6)内部表决服务器对于表决异常的结果进行表决,对结果做鲁棒性处理,上报异常到管理服务器,同时反馈内部表决结果(一致Y/异常E)给相应异构执行体。

7)内部表决结果为Y的异构执行体继续执行程序,对标签化的第三方API调用协同执行服务器进行后续处理。协同执行服务器具体驱动第三方API的执行,返回包含执行结果参数的标签化API给调用方的相应执行体。

8)分发服务器接收和预处理N个异构执行体服务请求的响应结果,调用管理服务器的资源调度服务接口获取外部表决服务器地址,同时驱动该外部表决服务器执行相应的表决。

9)外部表决服务器对于表决,对异常的结果进行表决,对结果做鲁棒性处理,上报异常到管理服务器,同时反馈外部表决结果(一致Y/异常E) 给分发服务器。

10)分发服务器收到外部表决结果,若表决结果为一致,则返回正常的服务请求响应结果给客户端;否则返回异常,由客户端重新发起该请求。

在内部表决和外部表决执行过程中,表决结果为异常的异构执行体节点资源和运行上下文均发给管理服务器。对于经表决鲁棒性处理后确定的异常,由表决服务器实时向管理服务器发出告警,管理服务器交互式地进行安全威胁诊断、清洗和恢复。

图1 MCOE体系架构

2.2 MCOE各服务器程序处理框架设计

MCOE各个服务器及部署在服务器上的运行节点代理服务对服务请求的处理,遵循如图2所示的主程序统一处理框架。

图2 各服务器主程序处理框架

Fig.2Processing framework of main programs in eachserver

主程序统一处理框架分为初始化、主程序任务循环处理、服务请求通信和预处理线程、任务处理子线程4个部分。

1)初始化。进行服务请求处理任务队列初始化,创建服务请求任务消息包的接收和预处理线程。

2)主程序任务循环处理。任务循环处理伪代码如下:

Read队列元素;

While(true){//循环处理

//P为预处理状态,在表决时队列元素包括2N/3个表决//参数为满足执行条件

If(任务队列元素状态标志==“P” and 满足执行条件){

设置:任务队列元素执行标志=“E”;//E为执行状态

创建相应任务队列元素的任务处理子线程;

Read Next任务队列元素;

}ElseIf(任务队列元素状态标志==“C”){

//C为任务完成状态

删除该队列元素;

Read 当前队列元素;

}Else{//任务队列元素状态为未完成状态

Read Next任务队列元素;}}

3)服务请求通信和预处理线程。服务请求通信和预处理线程部分伪代码如下:

该线程基于HTTP协议通信并发接收服务请求任务消息包;

解析服务请求任务消息包;

If 依赖于N(N≥3)个消息包处理的任务{

遍历该任务队列;

If(队列元素的任务主键相同){

//构建N个任务参数JSON字符串数组

6)6—9月份,田间卵果率达到1%时,及时喷25%灭幼脲1 000倍液或2.5%溴氰菊酯乳油3 000倍液。

在该元素中添加该参数字符串JSON;

}Else{

创建新元素;}

}Else{//消息包独立处理的任务

在任务队列尾插入该任务元素;}

If(消息包为独立处理的任务){

Read 队列元素和预处理;

动态安装和执行相应的任务组件;

任务队列元素执行标志=“C”;

发送执行结果到相应节点代理;

Break;

}ElseIf(消息包属于统一处理的N个任务){

//N个消息包统一进行处理

Read 未处理的数据元素集;

If(未处理的数据元素集==Null){

//消息包未到达,等待时间阈值T

Sleep(XX us);

}Else{//读到数据集

If(同步执行 and 第1次执行){

发送任务处理结果到消息源服务器;

保存任务处理结果;//例如协同执行

}ElseIf(同步执行 and 第2次~第N次执行){

返回第1次保存的任务处理结果给源服务器;}

If(处理结果满足任务节点提交条件 and 异步执行){

发送处理结果到相应的消息源节点;}}}

//例如表决服务器,基于源节点运行代理服务实现交互

If(处理任务消息数==N){

//已完成本次任务处理

队列任务处理状态=“C”;

Break;

}ElseIf(处理任务消息数≠N and处理时间>阈值T){

调用管理服务进行异常处理;

Break;}

2.3 MCOE框架内外部接口设计

MCOE框架内外部接口设计基于以下3个方面:由分发服务器和管理服务器协同完成的服务请求预处理、资源调度和请求转发过程;N异构执行体驱动的表决和第三方API协同执行过程;由分发器和外部表决器协同完成的响应结果表决过程和客户端转发过程。

MCOE服务器间接口遵循HTTP通信协议,接口定义为json格式文件,各服务器依据json库函数进行解析预处理,如图3所示。

图3 MCOE服务器接口定义

分发服务相关的接口描述见表1,其中接口主要提供服务请求转发、服务请求响应结果接收和外部表决所需参数。其中,通过管理服务提供的拟态资源调度接口调度出随机性、动态性和异构性三性最大化的N异构执行体服务器,为拟态防御提供异构化的基础环境。异构执行体相关的接口描述见表2,其中接口主要提供N异构执行体运行过程中内部表决和第三方API协同运行所需的参数。管理服务器相关接口描述见表3,其中接口基于“管理者+代理”方式实现。部署在各个服务器上的运行节点代理服务采集各个服务器的节点运行资源状态和日志数据,并将采集数据上报给运行管理服务,接收、处理运行管理服务下发的资源状态监管命令和节点清洗命令。

表1 分发服务相关接口描述Table 1 Description of interfaces related to MCOE distribution services

表2 N异构执行体相关接口描述Table 2 Description of interfaces related to N heterogeneous executor

表3 管理服务器相关接口描述Table 3 Description of interfaces related to the management server

3 MCOE各模块概要设计

MCOE各个功能模块间的交互遵循HTTP通信协议,各模块的功能实现均遵循2.2节中的程序统一处理框架。

3.1 分发服务概要设计

分发服务结合传统安全防御对已知安全威胁的清洗提供了Web信息系统的入口级安全防御。分发服务提供客户端服务请求的接收、对已知威胁的清洗[16]、N个冗余异构执行体服务请求分发、请求响应结果的处理以及将请求响应结果转发给客户端等功能。如图4所示,分发服务主要包括3个功能模块:

1)请求预处理引擎。接收服务请求,定义服务请求主键服务请求安全威胁清洗;构建N个异构执行体服务请求。

2)分发处理模块。通过“拟态资源调度接口”获取相应节点执行资源;构建包含服务请求主键、内部表决、协同执行和N个异构执行体服务器执行资源的服务器地址文件,通过“服务请求主键和处理过程所需的服务器地址接口”下发到相应的服务器;通过“服务请求转发接口”转发服务请求到相应的N个构执行体。

3)请求响应处理模块。接收请求响应执行结果;通过“拟态资源调度接口”获取外部表决器执行资源;构建包含服务请求主键、外部表决服务器执行资源的服务器地址文件;基于此文件驱动外部表决的执行;接收表决服务器的反馈结果,表决一致时将服务请求最终响应结果返回给客户端,表决不一致时返回异常信息给管理服务。

图4 分发服务功能组成示意图

Fig.4Schematic diagram of function composition ofdistribution service

3.2 表决服务概要设计

表决服务包括内部表决服务和外部表决服务,是MCOE最为关键的组成部分[17]。内部表决服务提供了异构执行体执行过程中的安全防御,外部表决服务提供了异构执行体执行结果的安全防御。

如图5所示,内部表决服务主要包括4个功能模块:

1)表决信息接收处理。通过“内部表决调用接口”接收来自N个异构执行体的内部表决内容,确定相应的表决组件。

2)表决执行。对N个异构执行体关键数据操作、重要功能模块和第三方API参数进行一致性表决。

3)鲁棒性处理。表决异常时,根据表决对象的鲁棒性策略按需执行鲁棒性处理过程。

4)表决结果反馈。表决大多数一致时,将表决结果返回给正常的N个异构执行体,若存在不一致的异构执行体调用管理服务进行异常处理。表决不一致调用管理服务进行异常处理。

图5 内部表决服务功能组成示意图

Fig.5Schematic diagram of function composition ofinternal voting service

外部表决服务中大部分功能模块与内部表决服务相同,不同之处在于外部表决是对N个服务请求响应的一致性表决,通过分发服务和外部表决服务之间的交互完成。

3.3 协同执行服务概要设计

协同执行服务具体驱动第三方API的执行,确保N个异构执行体API执行结果的一致性,并提供执行协同统一框架以支持协同执行种类的扩展和配置。当对N个异构执行体内的第三方API内部表决结果为一致时,N个异构执行体通过异步方式调用协同执行服务器进行第三方API的统一执行。当接收到第1个协同执行调用时,完成对第三方API的协同执行、将执行结果返回给相应的执行体,并保存执行结果;当收到第2个~第N个执行体的协同执行调用时,将保存的协同执行结果返回给相应的执行体。

3.4 管理服务概要设计

管理服务包括管理服务器和运行节点服务管理者和管理者服务代理,其中主要的功能模块如图6所示。

图6 管理服务功能组成示意图

Fig.6Schematic diagram of function composition ofmanagement service

管理服务器主要包括3个功能模块:

1)拟态应用管理模块。创建和部署拟态应用、汇总和处理节点上报应用资源状态日志信息、监管拟态应用执行过程。

2)拟态资源管理模块。包括拟态资源监控、异构执行体调度和表决服务器资源调度。

3)拟态安全威胁诊断模块。包括拟态运行过程管理、告警和环境日志信息处理、安全威胁的清洗策略执行。

运行节点代理服务完成服务器节点资源状态信息的采集,并将其上报给管理服务器,并且执行管理服务器下发的管理命令。

4 模型实现

基于对示例应用程序ybsapp.war的MCOE模型实现包括3个部分:1)异构执行体管理和资源调度;2)分发服务对各个异构执行体进行服务请求分发;3)对各个异构体上的请求响应结果进行外部表决并将结果反馈管理服务。

4.1 管理过程

首先在异构执行体的基础层(CPU类型和操作系统类型)和应用支撑层(Web容器)上实现异构。管理服务使用MySQL实现对异构执行体节点和资源的管理。异构执行体节点状态示例如图7所示,模型实现阶段实际部署4个异构执行体应用服务器,本文实验中执行体1~执行体4所用Web容器分别为Jboss、Tomcat8.0、Tomcat8.5、Tomcat9.0。

图7 异构执行体节点状态示例

异构执行体上的运行节点代理服务将异构执行体状态信息实时上报到管理服务器,管理服务器实时判定执行体运行状态是否正常。

4.2 分发过程

分发服务通过改造Nginx反向代理服务[18],以及对Nginx主请求-子请求机制与Proxy反向代理机制的改进,实现服务请求的异构化、服务请求的转发、外部表决服务的调用,并将外部表决结果返回给客户端。

客户端(192.168.2.7:8080)发起示例应用ybsapp服务请求,分发服务向管理服务发出资源调度请求,管理服务通过异构最大化调度[19]和负载均衡算法[20]调度出此次执行服务请求的3个异构执行体和外部表决地址,分发服务通过“拟态资源调度接口”获取相应节点执行资源,再由分发服务构建包含服务请求主键、异构执行体和表决服务器节点资源的地址文件,如图8所示。

图8 服务请求执行资源分配profile示例

Fig.8 Example profile of a service request for resourceallocation

各个服务器间通过服务请求主键进行关联,分发服务通过Nginx转发地址文件到相应的N个异构执行体和外部表决服务器,同时转发服务请求到相应的异构执行体上的服务请求转发接口,如图9所示。

图9 分发服务Nginx转发过程示例

Fig.9Example of forwarding process of distribution serviceNginx

图9所示分发的是一个示例Web应用ybs,经过分发服务Nginx将异构化的服务请求分发到3个异构执行体(执行体1:192.168.2.28、执行体2:192.168.2.75、执行体3:192.168.2.32)上,同时调用外部表决服务器:192.168.2.36进行服务请求响应表决。

4.3 表决过程

外部表决服务基于拟态表决策略,采用一致性校验算法对服务请求响应进行一致性表决[21]。本文实验的拟态表决策略采用三取二表决,即2/3表决对象一致时表决结果为正常,其他情况表决结果为异常。

外部表决成功后的反馈结果如图10所示,异构执行体1~执行体4初始的表决成功次数均为0,对异构执行体1~执行体3执行服务请求表决,表决结果为成功(执行体1~执行体3表决对象一致),执行体1~执行体3的表决成功加1,而执行体4作为备用执行体不参与表决,其表决成功次数仍为0。表决成功后将返回表决结果给分发服务,再由分发服务将服务请求响应返回给客户端。

图10 表决成功后部署情况示例

外部表决成功后将最终的服务请求响应结果返回给客户端,客户端得到的响应页面如图11所示。

图11 客户端响应页面1

对异构执行体进行网页篡改攻击后,同样进行服务请求分发,表决结果如图12所示,执行体2被表决为异常,但由于异构执行体互相之间的异构性,使得网页篡改对执行体1和执行体3并未生效,此次表决结果仍为成功。

图12 篡改攻击、表决后部署情况示例

Fig.12 Example of deployment results after voting for tamper attacks

外部表决服务返回表决结果和异常执行体地址信息给分发服务,分发服务将服务请求响应返回给客户端,客户端得到的响应页面如图13所示,仍为正常的服务请求响应页面。分发服务将异常执行体地址信息上报至管理服务,由管理服务调用管理者服务代理进行异常异构执行体替换和清洗恢复。

图13 客户端响应页面2

经过实验验证,由于异构执行体本身的异构性,当出现系统安全攻击时至多导致一个异构执行体出现异常,而基于3取2表决并不会影响最终返回给客户端的服务请求响应结果。MCOE对于异构执行体的部署和服务请求的分发、表决、管理可以达到防止网页篡改的目的,保证返回给客户端正确的服务请求响应。

5 结束语

本文结合拟态防御理论,为拟态信息系统的N异构执行体设计系统化的运行环境框架MCOE。通过改进Nginx反向代理服务实现对服务请求分发和响应结果的处理,同时使用一致性校验算法进行服务请求响应结果表决,有效防御应用程序后门和漏洞引发的网页篡改行为。下一步将对分发服务和表决服务进行改进,提升MCOE框架使用场景的普适性。

猜你喜欢

拟态调用异构
试论同课异构之“同”与“异”
章鱼大师的拟态课堂
核电项目物项调用管理的应用研究
吴健:多元异构的数字敦煌
模仿大师——拟态章鱼
关于拟声拟态词的考察
异构醇醚在超浓缩洗衣液中的应用探索
基于系统调用的恶意软件检测技术研究
LTE异构网技术与组网研究
过于理想化的拟态呈现:《非你莫属》节目塑造的求职环境