在信息技术高速发展的当下,网络空间安全问题日益凸显[1-2] 。当前,多数信息系统采用静态体系结构,且软硬件供应链构成复杂,这使得系统中不可避免地存在未知威胁与后门,传统的安全防御机制(如防火墙、入侵检测等)无法对其进行有效的防御[3] 。在此背景下,亟需设计一种新的安全防御机制,能够在系统存在未知漏洞威胁的情况下,依然确保信息系统的安全性。
针对该问题,邬江兴院士提出了网络空间拟态防御(Cyber Mimic Defense, CMD),其基本原理是动态性、异构性、冗余性和裁决机制的部署策略[4] 。在拟态系统中,通过构建异构功能等价的执行体,通过异构冗余部署为用户提供服务,动态调度策略和拟态裁决模块共同保证系统的安全性。攻击者往往通过已知或未知的漏洞威胁对系统发起攻击,由于执行体的异构性,通过裁决机制,使得多个执行体输出的响应结果不一致,裁决模块报警提醒,通过动态策略替换异常的执行体,有效提升系统的安全性。
拟态防御为抵御已知或未知漏洞的攻击提供了一种新的思路,然而,保证拟态系统安全的核心是执行体之间的异构性,异构性越大,执行体之间的差异程度越大,攻击者通过共模漏洞逃逸的可能性越低,系统越安全[5] 。因此在设计拟态系统时,如何对执行体的异构度进行有效准确度量是动态调度算法的核心问题。现阶段,针对执行体调度算法研究主要从基于历史信息、异构度和组合信息等3方面展开研究,基于历史信息的调度算法根据执行体面对攻击的表现来影响调度选择,侧重于动态性,缺乏异构度的考虑,防御较为被动。基于异构度的调度算法从软件异构度和漏洞指标两方面量化异构度,进而影响调度选择。基于组合信息的调度算法综合考虑异构度和历史信息来优化调度选择。然而,上述方案在量化异构度时存在两方面问题。1)量化时仅考虑执行体之间的二阶异构度,利用二阶异构度的加权平均值作为执行体之间的异构度,忽略了高阶共模漏洞对系统造成的危害;2)仅考虑一阶裁决信息,忽略了裁决信息对执行体调度组合r 阶异构度的影响。
针对上述问题,本文提出了一种基于高阶异构度和历史裁决信息的负反馈执行体调度算法(High-Order Heterogeneity Feedback Scheduling Algorithm, HFSAH2),本文的主要研究和贡献如下。1)针对拟态系统执行体调度算法存在异构度度量不准确的问题,根据执行体中存在的漏洞威胁,生成执行体调度组合的相似度向量,进一步得到调度组合的高阶异构度。2)提出了HFSAH2算法,在执行体调度过程中,考虑异常裁决信息对执行体调度组合r 阶异构度的影响,动态更新调度组合的高阶异构度。3)在模拟执行体和仿真Web服务器下进行实验,结果表明,与现有的调度算法相比,该算法在保证动态性和安全性的同时,具有更好的防御能力。
1 相关工作
近年来,学术界关于执行体调度算法主要分为3类。第1类是基于历史信息的调度算法,主要通过分析执行体的防御成功概率、执行体被探测概率、裁决的历史信息等,选择合适的执行体调度组合。Li等[6] 通过平均故障概率来评估系统的安全性,从最大化系统安全性的角度提出了一种多控制器的动态调度算法;吕迎迎等[7] 通过系统的被探测信息获取攻击者的攻击类型,进而针对不同攻击选取最优的调度策略;杨林等[8] 通过执行体防御原子的历史防御成功率,提出了一种FAWA的调度方法,旨在选取防御概率最高的执行体。上述这些算法在调度时主要考虑动态性,缺乏异构度的考率,防御较为被动。
第2类是基于异构度的调度算法,更侧重于执行体间的相异程度。在软件异构度量化方面,刘勤让等[9] 通过构建执行体之间的二阶相似度矩阵,提出了一种最小相似度的调度算法;李传煌等[10] 定义执行体之间的异构度比较函数,通过加权求平均值获取异构度;另外还有基于软件相似度度量来衡量系统异构程度。普黎明等[11] 通过构建时间和空间两个维度的共模漏洞来量化执行体组件的异构度,提出了基于优先级和时间片的调度算法。然而,上述方案在量化异构度时,利用二阶异构度的加权平均值作为执行体之间的异构度,忽略了高阶共模漏洞对系统造成的危害。
第3类是基于异构度和历史裁决信息的执行体调度算法,综合考虑了执行体的相异程度,同时在调度过程中根据裁决信息动态更新异常执行体。沈丛麒等[12] 定义了执行体的信誉度指标,结合异构度提出了一种自适应的动态调度算法;Wu等[13] 基于执行体的共模漏洞威胁,结合异构度、历史裁决信息和服务质量提出了一种执行体调度算法;高明等[14] 依据历史信息定义了安全防御系数和可靠度系数,结合异构度提出了一种差异反馈的调度算法。然而,上述算法仍然没有考虑高阶异构度的对系统的影响。针对当前调度算法不能有效反映执行体之间的差异,贾洪勇等[15] 依据容斥原理计算执行体调度组合高阶异构度,依据异构度和裁决信息对执行体进行动态调度。该方法在进行异构度计算时,高阶异构度的生成依赖于低阶异构度,容易造成局部最优。
基于以上研究可以得出,现有的研究虽然从异构度和裁决历史信息方面对调度算法提出了很多的解决方案,但是依然存在着执行体之间异构度度量不准确导致的安全问题,而且并未考虑异常裁决信息对调度组合r 阶异构度的影响。
2 问题分析
2.1 目前异构度度量存在的问题
目前,多数拟态防御系统的安全性利用执行体调度组合的异构度来进行度量,调度组合的异构度越大,说明执行体之间的差异越大,出现共模逃逸的概率越小,拟态系统安全性越高。因此,拟态系统中对执行体调度组合的异构度量化直接关系到系统的调度算法是否安全。下面通过一个实际的执行体调度案例,对拟态系统的安全性来进行分析。
假设拟态防御系统中等待池中有5个可用的执行体,编号为1~5,每个执行体都存在1个或者多个可被利用的漏洞威胁,具体漏洞情况如
表1 所示。
如果当前执行体运行池的容量大小为3,按照传统的异构度计算方式,可以得到执行体之间的二阶相似度矩阵S ( 2 ) 为
S ( 2 ) = 6 3 3 2 2 3 6 2 2 3 3 2 6 3 4 2 2 3 5 2 2 3 4 2 6
系统中存在的漏洞威胁集合为V = 1,2 , 3,4 , 5 ,
6,7 , 8,9 , 10,11,12 ,计算执行体调度组合之间的相似度值,通过S ( 2 ) 得到两个执行体之间的相似度,通过两两之间加权求和的方式,得到调度组合的相似度值,进而得到异构度。
此时,传统调度算法选择调度组合相似度最小的组合
1,4 , 5 ,然而通过观察
表1 中执行体漏洞分布情况,上述调度组合存在一个三阶共模漏洞威胁。攻击者利用该共模漏洞威胁对拟态系统进行攻击时, 3个执行体会产生共模扰动现象,此时拟态裁决系统不会产生异常的裁决信息,然而拟态系统此时已经被成功攻破。产生上述问题的主要原因在于拟态系统架构在动态选择执行体时以二阶异构度之和来进行度量,这种量化方法无法有效找出执行体之间的高阶共模漏洞。
为了解决二阶异构度存在的问题,文献[15]提出了一种高阶异构度的计算方式,然而,该算法在计算高阶异构度时,优先从低阶异构中选择异构度最大(相似度最小)的调度组合,高阶异构度的计算依赖于低阶异构度,迭代求解过程中存在高阶异构度较高的调度组合被筛选掉。
因此在量化执行体调度组合之间的异构度时,不仅需要考虑二阶异构度,更加需要考虑高阶异构度。量化调度组合异构度时,根据共模漏洞数量确定阶数,赋予不同的权重,综合获取执行体调度组合的异构度。考虑高阶异构度选取的调度组合能够有效降低攻击者利用高阶共模漏洞的概率,进一步提升拟态系统的安全防御能力。
2.2 未考虑裁决信息对r 阶异构度的影响
拟态系统架构内,另一个重要的是裁决模块,裁决模块输出的信息直接影响到最终的结果,目前常用的裁决算法有大数裁决算法,将多个异构执行体输出结果最多的响应作为最终的裁决结果。经过前面的案例分析,当利用执行体调度组合中高阶漏洞来进行攻击时,发生共模逃逸现象,影响拟态系统的最终裁决。这是因为对于执行体运行池大小为
N r 时,系统最多能够发现
N r / 2 阶威胁。以
表1 为例,如果
1,2 , 3,4 , 5 组成的调度组合,执行体1和2存在共同漏洞3,输出了异常裁决信息,文献[15]中的调度算法仅考虑更新执行体1和2的异构度,未考虑裁决信息对
r 阶异构度的影响。此时,执行体1和2包含二阶共模漏洞,将同时包含执行体1和2调度组合的高阶相似度进行更新,可以为下一次调度提供更优的选择。
3 HFSAH2算法设计与实现
3.1 高阶异构度量化计算方法
为了解决拟态系统执行体组合调度算法存在异构度度量不准确,需要重新设计方法对高阶异构度进行量化计算,保证选取调度组合的有效性。在进行高阶异构度计算时,首先需要给出一些定义。根据执行体中存在的漏洞威胁,定义了执行体调度组合的相似度向量,进一步计算得到调度组合的高阶异构度。为了方便问题的描述,
表2 给出用到的变量名和定义。
定义1 执行体漏洞向量。拟态系统等待池中共有N 个执行体,每个执行体都存在一个或者多个漏洞威胁,威胁个数记为w ,定义执行体E i 的漏洞向量a i 为w 维行向量,当前维度存在漏洞威胁时,记为1,否则记为0,如式(1) 所示:
a i = v i 1 , ⋯ , v i j , ⋯ , v i w , 1 ≤ j ≤ w (1)
式中,v i j 表示执行体E i 中是否存在漏洞威胁,当存在漏洞威胁时,v i j 为1,不存在时为0。
定义2 执行体调度组合集。拟态系统等待池中共有N 个执行体,运行池大小为N r ,执行体形成调度组合的数量由两者共同决定,记为N c o m = C N N r ,每次执行体调度组合根据运行池大小从等待池中调取,记为C i = E 1 , ⋯ , E m , m = N r ;执行体调度组合集记为M c o m = C 1 , C 2 , … , C N c o m 。
定义3 执行体漏洞矩阵。对于拟态系统中的任一执行体调度组合C i = E 1 , ⋯ , E m ,将包含m = N r 个执行体漏洞向量组合在一起,得到执行体漏洞矩阵,记为a 1 , a 2 , ⋯ , a m T 。
定义4 执行体调度组合相似度向量。S i = s i 1 , s i 2 , ⋯ , s i r ,其中r = 1,2 , ⋯ , N r 表示拟态系统中的任一执行体调度组合C i = E 1 , ⋯ , E m 的r 阶相似度情况。利用定义3得到C i 对应的执行体漏洞矩阵a 1 , a 2 , ⋯ , a m T ,将执行体漏洞矩阵的m 行相加,得到一个新的行向量m i = m i 1 , m i 2 , ⋯ , m i w ,利用式(2) 可以计算得出s i r :
s i r = ∑ r = 1 N r ∑ i = 1 w I m i j = r ; I m i j = r = 1 , m i j = r ; 0 , m i j ≠ r . (2)
式中:s i r 表示该调度组合C i 的第r 阶相似度;I ( · ) 表示r 阶相似度的计算函数。
通过上述定义,可以得到拟态系统中所有调度组合的1到N r 阶相似度向量,考虑到高阶共模的漏洞威胁给拟态系统造成的危害更高,因此在计算执行体调度组合的相似度时,给高阶的相似度设置为更高的权重u r ,计算如式(3) 所示,综合获取调度组合的高阶相似度:
式中:s i r 表示该调度组合C i 的第r 阶相似度;u r 表示该调度组合C i 的第r 阶相似度对应的权重,阶数越高,相似度值越大。
根据异构度和相似度之间的关系,高阶异构度I i 的计算如式(4) 所示:
式中,u N r 表示执行体调度组合中最大的相似度值。
3.2 HFSAH2算法实现
为了优化执行体调度,本文提出HFSAH2算法,该算法同时考虑高阶异构度以及裁决信息对r 阶异构度的影响。在当前调度周期T 内,基于生成的高阶异构度,拟态系统可以提前生成调度策略集合,同时在调度过程中,结合异常裁决信息实时更新高阶异构度,同时保证了系统的安全性和动态性。下面给出更新周期T 和调度策略F 的定义,基于此,描述HFSAH2算法的设计实现步骤。
定义5 更新周期T 。在拟态系统实际运行过程中,定时会对系统进行更新操作,安装漏洞补丁降低已知威胁的攻击,增加删除执行体不同层面的组件集合,这些操作都会造成执行体等待池和运行池的容量动态变化,对应的执行体调度组合集以及调度组合的高阶异构度也会随之动态变化,需要重新进行计算,记这个固定时间间隔T 为更新周期。
定义6 调度策略F 。调度策略是以执行体调度组合之间的高阶异构度按照升序进行排列,记为F = C i i = 1,2 , ⋯ , N c o m 。C i 表示执行体调度组合,i 表示排序后的序号,数值越小表明执行体调度组合之间的相似度越大,异构度越小,该序号就是执行体调度组合的调度优先级。
算法1 HFSAH2算法
输入:N ,N r ,T ,D
输出:F
1. 根据执行体数量N 和N r 生成C N N r 个执行体调度组合集M c o m ;
2. 根据式(2) 计算执行体调度组合相似度向量S i = s i 1 , s i 2 , ⋯ , s i r , r = 1,2 , ⋯ , N r ;
3. if 周期T 是否结束
4. 重新计算执行体调度组合相似度向量S i
5. end if
6. 根据式(3) 和(4)计算当前调度周期内执行体调度组合高阶相似度H 和高阶异构度I
7. for
i = 1 ; i ≤ C N N r ; i + +
8. if H i 小于相似度阈值
9. 将该调度组合加入到调度方案候选集F 中
10. end if
11. end for
12. if
D ≠ N U L L
13. r = s i z e ( D ) ;
14. for
i = 1 ; i ≤ C N N r ; i + + //根据异常裁决信息,动态更新调度组合相似度向量
15. if D in C i
16. s i r = s i r + 1
17. end if
18. end for
19. end if
20. 结合更新之后的相似度向量,重新计算调度方案F 中调度组合的高阶相似度H '
21. for
i = 1 ; i ≤ s i z e ( F ) ; i + + //根据重新生成的调度组合高阶相似度,从调度方案F 中剔除不满足相似度阈值的调度组合
22. if H i 大于相似度阈值
23. 将该调度组合C i 从调度方案候选集F 中移除
24. end if
25. end for
26. if
F = N U L L
27. N r = N r + 1
28. 转到步骤1
29. else
30. 输出高阶异构度最大的执行体调度组合C i
31. end if
4 实验评估
仿真实验包含模拟执行体和仿真Web服务器两种场景,为了验证算法的有效性,给出在不同攻击场景下系统攻击成功率定义,用来检验系统的安全性,定义如下。
定义7 系统攻击成功率。在拟态系统中,更新周期为T ,假设攻击者攻击一次所需要时间为T a ,攻击者利用漏洞威胁发起攻击的次数为T / T a 。拟态系统的运行池容量为N r ,攻击者选用共模漏洞阶数不小于N r / 2 时,说明系统被攻击成功。在此期间,假设攻击者利用共模漏洞发起攻击,并且攻击成功的次数为δ ,则定义系统攻击成功率为P s u c c = δ / T / T a 。
4.1 实验环境和参数设置
在模拟执行体和仿真Web服务器两种场景下,为了模拟真实的攻击场景,构建了包含已知漏洞和未知漏洞威胁的执行体漏洞向量,两种实验环境的对比参数如
表3 所示。
威胁装载方式分为已知装载和全装载,已知装载表示执行体中包含的都是已知的漏洞信息,全装载方式表示执行体中包含有已知和未知的漏洞信息。黑盒攻击策略表示攻击者并不知道执行体调度组合中的漏洞信息,随机选择某个漏洞信息进行攻击,在这种情况下,攻击者可能会选取到无效的漏洞威胁来发起攻击;白盒攻击策略表示攻击提前知道运行池中执行体的调度组合,选取执行体中存在的漏洞来发起攻击,攻击者选取到的都是有效的漏洞威胁。
随机模拟执行方案中,按照文献[5]的部署情况来设置具体实验参数,生成执行体数量N = 41 ,漏洞威胁个数w ,已知漏洞占比φ = 0.8 ,未知漏洞占比μ = 0.2 ,运行池容量N r = 3 ,判决模k = 2 ,更新周期T = 20 ,单次攻击时间T a = 1 。
仿真Web服务器方案中,参照文献[15]的部署情况来设置具体实验参数,系统层面选取了4种可用的操作系统、代码层面选取了3种编程语言、存储层面选取了3种数据库软件和服务器软件层面选取了2种应用,构建了41个可用的Web执行体。
4.2 对比策略
为了验证算法的有效性,将本文所提的算法分别与Random调度算法、FAWA算法[8] 和HFAWA[15] 算法进行对比。
这4种对比算法的详细信息介绍如下:1)Random调度算法中,执行体调度组合分别被随机选择调入到运行池中执行任务;2)FAWA调度算法中,将攻击威胁出现的次数转换为对应防御策略的执行体被选取概率,降低被攻击成功的概率;3)HFAWA调度算法中,执行体调度算法利用集合容斥原理计算执行体组合的高阶异构度,同时考虑历史裁决信息,优先调度选取系统被攻破概率最低的执行体调度组合;4)HFSAH2算法利用执行体调度组合的高阶相似度向量,将高阶异构度映射到u 进制数中,同时考虑r 阶的历史裁决信息对执行体调度组合的影响,动态调度从中选取最优的执行体组合。
4.3 结果分析
4.3.1 随机模拟场景下安全性评估
在随机模拟执行体场景下,生成的实验结果如
图1 所示。
从
图1 中可以看出,随着系统漏洞个数
w 的不断增加,取值范围从20增加到1 000,根据执行体漏洞生成规则,执行体包含的漏洞威胁数量变化范围为10~100,覆盖了漏洞威胁从少到多的场景。通过分析可知,当系统威胁数量在0~100变化时,系统的攻击成功率呈现下降趋势,尤其在漏洞威胁较少时,系统更容易被攻破,这是因为此时执行体的漏洞威胁较多,无论如何进行调度选择,系统输出的执行体调度组合存在共模漏洞的可能性大;当系统威胁数量在100~200变化时,系统的攻击率呈现出小幅变化;当系统威胁数量在300~400变化时,由于此时执行体漏洞威胁相对于系统漏洞数量较少,能够选择到的高阶共模漏洞概率较小,系统攻击成功率整体较低,白盒攻击整体上比黑盒攻击效果更好,因为每次选择的都是执行体中已知的漏洞威胁。
通过算法之间对比发现,系统漏洞数量在0~100时,HFSAH2算法的防御优势较为明显,当系统漏洞数量大于200时,防御效果与HFAWA算法区别不大。当威胁漏洞数量为100时,相对比FAWA和HFAWA调度算法,在已知装载白盒条件下,系统整体的攻击成功率平均下降了0.082和0.026;这是因为HFSAH2算法不仅更加精确量化了调度组合的高阶异构度,并且通过历史裁决信息动态更新r 阶异构度,动态选取最优的执行体组合。
4.3.2 仿真Web场景下安全性评估
在仿真Web服务器攻击场景下,生成的实验结果如
图2 所示。
从
图2 中可以看出,当系统漏洞数量确定时,不同调度算法在不同的攻击策略下的攻击成功率。执行体采用已知装载黑盒攻击时,HFSAH2算法的攻击成功率为0.139,相比较FAWA和HFAWA调度算法,分别下降了0.163和0.049;执行体采用全装载黑盒攻击时,FAWA和HFAWA调度算法的攻击成功率分别为0.369和0.204,对比HFSAH2算法,分别上升了0.207和0.052,而HFSAH2算法基本上没有太大变化,这是因为在进行执行体调度时,考虑了存在高阶共模漏洞威胁以及裁决信息对
r 阶异构度的影响,因此系统的攻击成功率较低,相比较HFAWA调度算法,它在调度时往往从低阶异构度求解高阶异构度,在执行体数量或漏洞威胁较少时,可能会存在局部最优,也就是低阶异构度较小而高阶异构度较大的情况;HFSAH2算法同时考虑了上述情况,因此具有更好的防御效果。
4.3.3 算法的性能评估
仿真模拟执行体场景下,对算法的性能开销进行测试。在实验测试中,服务器配备有Intel Xeon E5-2679 v4 @ 2.50 GHz的CPU、32 GB内存和1 TB硬盘,编程语言采用Python,实验结果如
图3 所示。
从
图3 中可以看出,Random调度算法和FAWA调度算法的时间消耗最低,HFAWA调度算法的时间消耗最高。这是因为在进行调度模拟时,HFSAH2算法的执行体调度组合方案已提前生成,在进行攻击模拟时,由于HFSAH2算法只需要根据裁决集合的异常信息更新执行体调度组合的高阶异构度,并重新进行排序即可;HFAWA调度算法生成调度组合时,需要从低阶异构度开始迭代循环,求解高阶异构度的值,最后选取异构度最大选择执行体调度组合。当需要更新异构度时需要从低阶到高阶的迭代循环求解,时间消耗主要花费在异构度的选择比较上,因此,HFSAH2算法的性能消耗比HFAWA调度算法更优。
5 结束语
针对高阶共模漏洞带来的安全威胁,拟态系统中执行体调度算法存在异构度度量不准确,无法求解最优调度组合的问题。根据执行体中存在的漏洞威胁集合,对问题进行形式定义,定义了执行体调度组合的相似度向量,提出了一种基于高阶异构度和历史裁决信息的负反馈执行体调度算法。在执行体调度过程中,考虑异常裁决信息对执行体调度组合r 阶异构度的影响,动态更新调度