吳鋌,胡程楠,陳慶南,陳安邦,鄭秋華
(1.杭州電子科技大學網絡空間安全學院,浙江 杭州 310018;2.北京航空航天大學杭州創新研究院,浙江 杭州 310051)
隨著信息技術的飛速發展,網絡空間安全問題日益突出。一方面,現有大多數網絡信息系統基本采用靜態體系結構,這使其很容易受到諸如0day攻擊等新型網絡攻擊的威脅。另一方面,由于軟硬件的供應鏈組成復雜,且其與軟件開發過程中的人員、工具、環境等因素密切相關,系統中存在安全漏洞和后門幾乎是不可避免的,并且維護者很難識別和修復所存在的安全漏洞和后門[1]。在面臨以上問題時,傳統的被動式靜態防御系統(如防火墻、入侵檢測技術等)無法確保系統的安全性[2]。因此,當今網絡空間安全的一個根本挑戰是如何設計新的系統防御機制,使其在系統存在安全漏洞的情況下,仍然可以保障系統的安全性和可靠性。
針對此問題,美國國家科學與技術委員會(NSTC,National Science and Technology Council)提出了一種典型的動態主動防御技術——移動目標防御(MTD,moving target defense)技術[3]。MTD的基本思想是通過動態的、多樣化的系統構建與部署策略,增大攻擊者對系統架構分析探測的成本,實現提高系統安全性的目的。近幾年來,MTD 系統在網絡安全領域中各個研究場景發展迅速,其安全性相較于被動式靜態防御系統有顯著提升[4-5]。然而,MTD 系統在本質上可看作單模動態異構冗余系統,其有限的動態變化路徑容易被攻擊者窮舉,進而使系統被攻破。針對以上問題,2014 年鄔江興[6-7]提出了“擬態防御”思想,即在功能等價條件下,通過網絡、平臺、環境、軟件等多模主動跳變或快速遷移來實現擬態環境,使攻擊者難以觀察和預測目標的變化,從而大幅增加其攻擊難度和成本。擬態防御的典型架構是動態異構冗余(DHR,dynamic heterogeneous redundancy)架構[8]。DHR 架構的安全性依賴于系統的動態性、隨機性和異構性,其中異構性是決定DHR 架構安全性的關鍵,其很大程度上決定了DHR 系統的安全上限[9]。理論上,當一個DHR 系統中各執行體不存在共同漏洞時,該系統是足夠安全的[10-11]。然而在實踐中,DHR 系統中各執行體通常會存在一些相同漏洞。當服務體中包含同一漏洞的執行體數大于系統表決模時,攻擊者就可利用該共同漏洞對系統進行攻擊,并成功繞過表決器,從而達到攻擊成功的目的[9]。雖然當服務體共同漏洞已知時,可通過修補機制解決服務體漏洞所導致的安全性下降問題,但是當共同漏洞未知時,DHR 系統脆弱性問題依然存在。
為此,本文提出了一種改進的DHR 架構——IDHR(improved dynamic heterogeneous redundancy)架構。該架構在DHR 架構基礎上,引入了一個執行體劃分模塊,同時對調度模塊中的動態選擇算法進行了改進,即在IDHR 架構中,執行體劃分模塊根據執行體間的異構性,將執行體劃分到多個彼此異構性較大的執行體子池。當IDHR 系統運行時,調度模塊隨機選擇若干個執行體子池,然后從子池中隨機選擇執行體。上述2 個改進可有效降低所選擇服務體包含共同漏洞的可能性,進而提高系統的安全性。
本文的主要貢獻如下。
1) 通過引入執行體劃分模塊和改進調度模塊中的動態選擇算法,對DHR 架構進行改進,達到了在服務體構建過程中盡量減少存在共同漏洞的服務體的目的,緩解因共同漏洞導致的DHR 系統脆弱性問題。
2) 基于聚類思想提出了一種執行體集劃分算法,解決了如何將DHR 架構中的執行體劃分到多個彼此異構性較大的執行體子池的問題。
3) 利用基于概率的DHR 安全性分析方法對IDHR 模型進行了安全性分析,給出了在合謀盲攻擊策略下IDHR 系統攻擊成功率和被控制率計算方法,解決了IDHR 系統的安全性量化評估問題。
4) 通過隨機模擬執行體和仿真Web 服務器2 種實驗方案對IDHR 架構安全性進行評估。驗證了IDHR 架構相較于DHR 架構具有明顯的安全性優勢,尤其是在共同漏洞未知的情況下。
學術界對DHR 架構的研究大致分為以下3 個方面:DHR 架構的應用研究、DHR 架構的安全性分析和DHR 架構的優化與完善。
在DHR 架構的應用研究中,仝青等[12]和張錚等[13]基于DHR 架構構建了擬態防御Web 服務器,并完成安全性和性能測試,驗證了擬態防御技術在Web 服務器上的有效性和可行性。宋克等[14]和馬海龍等[15]針對以太網交換機和路由器面臨未知漏洞和未知后門時的安全威脅,提出了相應基于DHR的交換機與路由器內生安全架構,實現了交換機及路由器系統的主動防御。丁紹虎等[16]給出了基于DHR 架構的軟件定義網絡(SDN,software defined network)控制層安全機制,解決了SDN 控制層的單點脆弱性問題。周清雷等[17]基于DHR 架構,提出了以移動端二維碼為接口、以動態口令為內核的物理訪問控制擬態防御認證方法,解決了傳統物理訪問控制系統的認證方法易受攻擊的安全問題。
在DHR 架構的安全性分析中,任權等[18]利用離散時間馬爾可夫鏈模型對DHR 系統進行建模,并對DHR 抗干擾性能進行分析,得到目標系統在攻擊擾動條件下的穩態可用性和感知安全性。朱維軍等[19]基于并行自動機與交替自動機,提出擬態防御自動機,把DHR 安全性自動分析問題規約為交替自動機模型檢測問題,完成系統的安全性強弱分析。
在DHR 架構的優化與完善領域,Zhang 等[20]基于DHR 架構提出安全本體的概念,給出適用于擬態防御的系統建模方法,解決了擬態防御系統中無法使用傳統安全建模方法的問題。李衛超等[21]提出基于防御能力、運行效率和系統恢復3 個方面的多模表決建模分析方法,得到模型變化趨勢,給出系統實際部署建議,克服了DHR 架構中因使用多模表決方法不當而導致的系統安全性下降問題。
由上可見,目前針對DHR 架構的優化均沒有考慮到當系統存在共同漏洞時的系統脆弱性問題。
DHR 系統架構[8]如圖1 所示,其主要由5 個部分組成,具體介紹如下。
1) 輸入模塊
此模塊包括用戶輸入和輸入代理。輸入代理將用戶輸入復制n份,形成n個子輸入后,分發給處理模塊中的服務體S。
2) 處理模塊
此模塊由服務體S組成,S中的各個執行體{A1,A2,…,An}對輸入模塊形成的n個子輸入進行處理,并形成n個子輸出發送至表決器,其中參數n為選擇模。
3) 輸出模塊
此模塊由k模表決器組成,若在n個子輸出中,存在k個或k個以上結果一致,則輸出該結果,否則阻斷輸出,其中參數k為表決模。
4) 構建模塊
構建模塊包括由若干個構件組所構成的構件集合C和執行體集E。根據系統構建規則,從每個構件組中選擇某一構件FC,得到系統執行體Ei,進而得到系統執行體集E={E1,…,Ei,…,Em},其中m(m>n)為執行體總數。
5) 調度模塊
該模塊中運行動態選擇算法RS,即根據隨機參數,從執行體集E中隨機選擇n個執行體,作為處理模塊中的服務體S。在調度周期ts后,調度模塊將服務體S下線,通過清洗還原到初始狀態,并根據隨機參數重新生成下一個調度周期對應的服務體。
以下通過一個案例,對DHR 系統安全性進行簡要分析。
例 1設某個 DHR 系統的執行體集E={E1,E2,E3,E4,E5,E6},系 統 漏 洞 集 合V={v1,v2,v3,v4,v5},系統選擇模n=3,表決模k=2。其中E1,…,E6所包含的漏洞分別為{v1,v4,v5}、{v1,v2}、{v3,v4}、{v2,v5}、{v1,v3,v5}和{v2,v4}。
由于DHR 從執行體集中任選n=3個執行體作為一個服務體,因此系統共包含=20個服務體,分別為


圖1 DHR 系統架構
記S={S1,S2,…,S20}。設不同執行體在遭到針對同一漏洞的攻擊時,其輸出保持一致[8],則當調度模塊所選擇的服務體為S3時,由于S3中各個執行體所包含的漏洞分別為{v1,v4,v5}、{v1,v2}、{v1,v3,v5},若攻擊者利用漏洞v3發起攻擊,則DHR 處理模塊中只有執行體E5會產生異常輸出,但因其數量小于系統表決模2,系統將阻斷該異常輸出,攻擊失敗。當攻擊者利用漏洞v1進行攻擊時,由于所有3 個執行體(E1、E2、E5)都包含該漏洞,則這3 個執行體受到攻擊后會產生3 個一致的異常輸出。由于其數量大于系統表決模2,因而攻擊者可以成功繞過表決器,完成攻擊。
從以上案例中可看出,若服務體S中有Nv個執行體存在共同漏洞v,則當攻擊者針對漏洞v發起攻擊時,存在以下2 種情形。
1) 當Nv<k時,表決器有效阻斷該Nv個一致的異常輸出,從而成功抵御了針對該共同漏洞v的攻擊。
2) 當Nv≥k時,表決器將Nv個一致的異常輸出判定為正常輸出,攻擊能有效繞過表決器,從而攻擊成功。
產生以上問題的原因[9]在于DHR 中動態選擇算法對執行體的選擇是隨機的,并不考慮執行體之間的具體漏洞分布,從而無法得到包含較少共同漏洞的服務體。
對于以上由已知共同漏洞所導致的DHR 系統脆弱性問題,雖然可以通過漏洞修補得到解決,但是對于一個信息系統來說,存在未知漏洞是一個必然現象。由于目前仍然無法通過測試發現系統中存在的所有漏洞[22-23],因此由共同漏洞引起的系統脆弱性問題必然存在。
為了應對因共同漏洞導致的DHR 系統脆弱性問題,本文在現有架構基礎上,提出一種改進的DHR 架構——IDHR,如圖2 所示。具體改進如下。
1) 在DHR 架構的調度模塊和構建模塊之間引入執行體劃分模塊。該模塊根據執行體的異構性,將執行體集E中的執行體劃分為多個執行體子池,使同一子池內的執行體間的共同漏洞盡量多,且不同子池中的執行體之間共同漏洞盡量少。
2) 改進了調度模塊中的動態選擇算法。系統運行時,調度模塊先從多個異構執行體子池中隨機選擇n個執行體子池,然后分別從被選定的n個執行體子池中隨機選擇一個執行體,以此構成IDHR 處理模塊中的服務體。
上述改進的核心是找到執行體所包含漏洞的表示模型以及執行體之間異構性的度量指標。對此,本節參考了軟硬件聚類領域中常用的二進制序列表示方法[24-27],給出執行體所包含漏洞的表示模型——執行體-漏洞向量。
定義1執行體-漏洞向量。記DHR 系統包含的所有漏洞為V={v1,v2,…,vω},定義執行體Ei的漏洞向量為


圖2 IDHR 架構
其中,Ei存在漏洞vj時,qvij=1;否則qvij=0。
基于執行體-漏洞向量距離的執行體異構性度量指標,其本質上是一種二進制向量的相似度量。目前主要的二進制向量相似度量指標有歐幾里得距離、漢明距離、余弦相似度和Jaccard 距離[28-29]。其中,最常用的Jaccard 距離定義為

距離計算方法影響執行體異構性度量的準確性。當2 個執行體Ei和Ej對應的漏洞向量αi和αj在某一分量上的值相同,即兩者都存在或都不存在某個共同漏洞時,執行體異構性度量有以下2 種情況。
1)αi和αj在該分量上的值均為1,即Ei和Ej均存在漏洞v,顯然此時兩者異構性較弱。
2)αi和αj在該分量上的值均為0,即當兩者負匹配時[30],Ei和Ej均不存在漏洞v,顯然此時難以判斷Ei和Ej的異構性。
要使劃分后同一子池內存在的共同漏洞盡量多,不同子池間存在的共同漏洞盡量少,應著重考慮漏洞向量非負匹配情況。Sneath 等[30]指出,由于不考慮負匹配情況,Jaccard 距離與其他距離相比能更準確地度量軟件二進制向量的差異。為此,本文基于Jaccard 距離給出執行體-漏洞向量間的漏洞距離定義。
定義2執行體-漏洞向量間的距離。設執行體Ei和Ej的漏洞向量分別為αi=[qvi1,qvi2,…,qviω]T和αj=[qvj1,qvj2,.…,qvjω]T,定義αi和αj的距離為

根據執行體間漏洞向量的距離,將執行體集劃分為多個執行體子池。算法采用Ferdous 等[31]提出的聚類初始化方法,選擇與其余執行體-漏洞向量距離最大的執行體作為子池的初始中心;利用k-medoids 算法[32]的聚類中心更新方法,以與子池內其余執行體-漏洞向量距離最小的執行體作為新的子池中心,解決傳統k-means 算法無法在Jaccard距離度量下得到聚類中心的問題。
算法1執行體子池劃分(ESP,executor subpool partition)算法
輸入執行體集E={E1,E2,…,Em},最大執行體子池數pthresh(pthresh需根據要構建的擬態系統實際情況進行選取,如擬態Web 系統一般建議設置為10)
輸出執行體子池個數p,執行體子池集R,子池中的執行體到對應子池中心的距離之和與各執行體池中心間的距離之和的比值I
由以上算法描述可知,ESP 算法是從已知漏洞出發來刻畫執行體的異構性,進而達到將執行體集劃分為多個具有較大異構性的執行體子池。但如前所述,信息系統存在未知漏洞是一個必然現象。接下來,通過已知漏洞和未知漏洞之間關聯性實驗驗證分析來說明ESP 算法對未知漏洞的有效性。
驗證實驗在CVE 漏洞庫中選擇2010—2018 年內與操作系統、數據庫軟件、服務器軟件和后臺腳本語言相關的漏洞作為已知漏洞,從2019 年1 月—2020 年4 月的漏洞中隨機選擇100 個漏洞作為“未知”漏洞,利用5.1.2 節中所述的方法構建執行體集E,然后用ESP 算法進行執行子池的劃分,結果如表1 所示。
當未考慮“未知”漏洞時,ESP 算法所獲得的執行體子池1 中43 個執行體;當考慮“未知”漏洞時,仍有39 個執行體在子池1 中,占比為39/43=0.91。同樣可得,其余3 個子池中,當包含“未知”漏洞時,執行體仍在對應子池中的比例分別為1、0.87 和1。由此可得,當包含已知及“未知”漏洞時,相較于僅包含已知漏洞情形,大約有94%的執行體仍在對應子池內。
由上述結果可知,未知漏洞的分布與已知漏洞分布之間存在非常大的關聯性,這也說明利用已知漏洞對執行體池進行劃分是合理的。
本節參考文獻[33]提出的概率分析方法,對IDHR 安全性進行分析。
4.2.1 相關定義和假設
本文的安全性分析基于黑盒模型[33],即攻擊者不了解系統的內在結構。該模型下,具體假設如下。
1) 一次攻擊僅利用一個漏洞。
2) 若系統存在某一漏洞,且攻擊者針對該漏洞進行攻擊,則攻擊必定成功。
3) 系統選擇所有服務體的概率相同。
4) 攻擊采用盲攻擊(即等概率選擇攻擊方式)策略。
接下來,給出系統的安全性度量指標、執行體-漏洞矩陣和服務體-漏洞矩陣等相關定義,其中,系統的安全性度量指標具體包括攻擊成功率和系統被控制率。
定義3系統攻擊成功率[10]。在系統調度周期ts內,若攻擊者至少攻擊成功一次,稱該周期內系統被成功攻擊。給定攻擊者總攻擊次數δ,其中攻擊成功的次數為λ,則稱SPr=λ/δ為系統攻擊成功率。
定義4系統被控制率[10]。在單個系統調度周期ts內,攻擊者從開始攻擊至其第一次攻擊成功所耗費的時間為Δt,稱ts-Δt為系統被控制時間。系統被控制時間與運行時間之比被稱為系統被控制率,記為θ=(ts-Δt)/ts。
定義5執行體-漏洞矩陣。對于執行體集E={E1,…,Em},稱

為對應的執行體-漏洞矩陣,其中,α1,α2,…,αm為執行體E={E1,…,Em}的漏洞向量。
定義6服務體-漏洞矩陣。對于服務體集S={S1,S2,…,Sl},稱

為對應的服務體-漏洞矩陣,其中,β1,β2,…,βl為服務體{S1,S2,…,Sl}的漏洞向量。
接下來,構建例1 所示系統的IDHR 架構中的EVm×ω和SVl×ω,如例2 所示。
例2EVm×ω和SVl×ω的構建。
由定義3 可得,執行體-漏洞矩陣為

利用ESP 算法得到的各執行體子池為

表1 2 種情形下子池劃分的混淆矩陣

按字典序從R中隨機選擇3 個子池的組合有{R1,R2,R3}、{R1,R2,R4}、{R2,R3,R4}和{R1,R3,R4}。在上述組合中,從每個池中按字典序依次選擇執行體,最終得到系統的服務體集S為

以服務體S1={E1,E2,E4}為例,其對應的執行體-漏洞矩陣為

因為表決模k=2,所以服務體S1的共同漏洞為{v1,v2,v5},即S1的漏洞向量為

最終的服務體-漏洞矩陣為

4.2.2 IDHR 系統攻擊成功率
接下來,對合謀攻擊策略下IDHR 系統攻擊成功率和被控制率的具體計算進行分析。
首先,分析單攻擊者攻擊τ次時的系統攻擊成功率。如文獻[33]中所述,雖然可以通過枚舉攻擊者的所有攻擊方式計算系統攻擊成功率和被控制率,但其計算復雜度為O(),其中P表示排列數。為降低計算復雜度,本文提出先分別計算各個服務體的τ次攻擊成功率,然后將其進行加權平均,最終得到系統攻擊成功率和被控制率。
基于各服務體系統攻擊成功率加權平均的系統攻擊成功率SPr 計算式為

其中,Pr(Si)表示每個服務體被調度的概率,SPrτ(Si)表示攻擊者對Si進行τ次攻擊至少一次成功的概率。
當單個攻擊者攻擊τ次時,因為系統總漏洞數為ω,記服務體Si中存在的漏洞數為ηi,則對Si進行τ次攻擊均失敗的情況有種(即攻擊者在服務體為Si時選擇了min(ω,τ)個漏洞進行攻擊,且攻擊失敗),則對Si進行τ次攻擊均失敗的概率FPrτ(Si)和至少成功一次的概率SPrτ(Si)分別為

當執行體子池個數為p時,IDHR 調度模塊所有子池中隨機選擇n個執行體池的方法共有種。記Ruy(1≤y≤n)為由第u(1≤u≤)種選擇方法所確定的子池,Ruy中執行體的個數記為ruy,可得該選擇方法下n個執行體子池中執行體的總數lu為

因為IDHR 調度模塊等概率地選擇各服務體,由式(5)可得

合謀盲攻擊策略下,由于多個攻擊者共享攻擊方式,不會對同一個漏洞進行多次攻擊,因此該策略下,可將多個攻擊者對系統發起τ次攻擊視為單個攻擊者對系統發起次攻擊。由于執行體最多包含ω種漏洞,則攻擊者在調度時間內的最大有效攻擊次數為

由式(2)~式(7)可得,合謀盲攻擊策略下的攻擊成功率為

4.2.3 IDHR 系統被控制率
根據定義6,可得單個攻擊者攻擊τ次時的系統被控制率為

其中,OSPRτ是指攻擊者在第1~τ-1 次攻擊均失敗且僅第τ次攻擊成功的概率。與4.2.2 節提出的攻擊成功率計算方法類似,OSPRτ也可通過式(10)計算。

其中,OSPrτ(Si)表示服務體Si在攻擊者的τ輪攻擊中僅第τ輪被攻破的概率。

由于合謀盲攻擊策略下攻擊者針對一個IDHR 服務體的最大有效攻擊次數為,因此系統被控制率計算式為

本節通過實驗對IDHR 系統安全性進行量化評估,并與DHR 系統安全性進行比較分析。實驗包括隨機模擬執行體和仿真Web 服務器2 種方案,每種方案均包含存在和不存在未知漏洞2 種情況。本節首先給出總體實驗方案設計,并根據總體方案,給出隨機模擬執行體和仿真Web 服務器2 種具體方案的設計。然后分別得到2 種方案下,DHR 和IDHR 系統存在和不存在未知漏洞時的攻擊成功率和被控制率,并進行比較。最后對實驗結果進行分析總結。
由于實際中未知漏洞無法被探知,因此本文在隨機模擬執行體和仿真Web 服務器2 種方案中,通過對應方法(具體見5.1.1 節和5.1.2 節),以模擬系統存在未知漏洞的情形。
實驗總體方案的步驟如下。
1) 生成已知漏洞的執行體-漏洞矩陣EVnω×。此時DHR 和IDHR 這2 種架構的執行體-漏洞矩陣相同。

則服務體-漏洞矩陣為


5.1.1 隨機模擬執行體方案
本文方案首先給定如下模擬系統構建參數,如表2 所示,然后通過隨機模擬的方式生成執行體-漏洞矩陣。

表2 模擬系統構建參數
構建執行體-漏洞矩陣的具體方式如下。
1) 以漏洞產生概率pvul的均勻分布生成m個ω維的行向量α1,α2,…,αm,作為m個執行體的執行體-漏洞向量。
2) 由α1,α2,…,α m組成執行體-漏洞矩陣EVn×ω。
隨機模擬執行體方案中系統“未知”漏洞的生成和執行體-漏洞矩陣的構建方式具體如下。
1) 以漏洞產生概率pvul的均勻分布構建m個μ維的執行體-漏洞向量,…,。
2) 將,…,按行合并至原執行體-漏洞矩陣,得到系統存在未知漏洞時的執行體-漏洞矩陣。
本文根據實際情況設定模擬實驗的參數,通過CVE 漏洞庫得到的相關參數具體為pvul=0.17,ω=3300,μ=100,m=117,n=3,k=2,p=4,N=20,ts=20,ta=1。由于在實際Web 構建中,會對已知漏洞進行修補,因此實際Web 系統的漏洞出現概率pvul和漏洞向量維數ω都比Web 仿真服務器方案小一些,而隨機模擬執行體方案的參數也與實際接近。實際Web 系統的相關參數具體為pvul=0.03,ω=1000,μ=100,m=30,n=3,k=2,p=4,N=20,ts=20,ta=1。
5.1.2 仿真Web 服務器方案
本文方案首先根據操作系統、服務器軟件、后臺腳本語言和數據庫軟件4 個類型,從通用平臺枚舉(CPE,common platform enumeration)數據庫中選擇對應的軟件,構建構件集。CPE 數據庫由美國國家標準與技術研究院(NIST,National Institute of Standards and Technology)托管和維護,是一個記錄信息系統中各種軟件的數據庫。然后根據Web 服務器軟件棧[12-13],從構件集中選擇相應構件組成執行體集。
截至2020 年4 月,主流Web 服務器相關軟件包發行版(不包括測試版)的版本數目為操作系統752 個、服務器軟件719 個、后臺腳本語言2 132 個和數據庫軟件1 376 個(如表3 所示)。但為了使服務更加穩定,人們并非隨機選擇Web 服務器相關軟件的版本,而是優先選擇業界認可的相關軟件版本,如Nginx1.15.8。此外,由于相近版本軟件包含的漏洞通常大致相同,同時若選取全部軟件來構建擬態Web 服務器模型會耗費大量時間。因此,本文方案按軟件的漏洞相似性(使用Jaccard 距離進行度量)對各軟件版本進行聚類,同時結合軟件使用率對軟件進行篩選。由于篇幅所限,本節僅展示部分Web服務器相關軟件的聚類結果,分別如圖3 和圖4 所示。本文得到的全部Web 服務器相關軟件發行版按漏洞相似性聚類的數據結果見GitHub 開源倉庫idhrcve-data。
在軟件版本選擇后,本文最終選擇了6 種操作系統、4 種服務器軟件、3 種后臺腳本語言和5 種數據庫軟件(如表4 所示),構建了117 個Web 服務器執行體。
仿真Web 服務器方案的執行體-漏洞矩陣生成方式如下。
1) 從CVE漏洞庫獲取2010—2018 年所有執行體中軟件對應的CVE 漏洞,構成執行體漏洞集。
2) 根據定義1 生成所有執行體-漏洞向量,將這些執行體-漏洞向量組成執行體-漏洞矩陣。
仿真Web 服務器方案的“未知”漏洞的生成和執行體-漏洞矩陣的構建方式如下。
1) 從2019 年1 月—2020 年4 月所有執行體中軟件對應的CVE 漏洞中等概率隨機選擇100 個漏洞,作為系統未知漏洞,生成所有執行體-漏洞向量,…,。

表3 常用Web 服務器相關軟件包發行版本數

圖3 CentOS 各發行版按漏洞相似性聚類結果

圖4 SQL Server 各發行版按漏洞相似性聚類結果
2) 按行合并至原執行體-漏洞矩陣EVnω×,得到系統存在未知漏洞時的執行體-漏洞矩陣。
圖5 和圖6 分別為隨機模擬執行體和仿真Web服務器2 種方案的實驗結果。

表4 IDHR 架構的Web 服務器系統軟件選擇

圖5 隨機模擬執行體方案下,IDHR 和DHR 在合謀盲攻擊下的攻擊成功率和被控制率結果對比

圖6 仿真Web 服務器方案下,IDHR 和DHR 在合謀盲攻擊下的攻擊成功率和被控制率結果對比
如圖5 所示,在存在已知漏洞情況下,DHR 架構的攻擊成功率和被控制率分別為0.66 和0.37;IDHR 架構的攻擊成功率和被控制率分別為0.19 和0.1,相較DHR 架構降低了約2/3。在存在“未知”漏洞情況下,DHR 架構的攻擊成功率和被控制率分別為0.7 和0.39;IDHR 架構的攻擊成功率和被控制率分別為0.199 和0.102,相較DHR 架構仍降低了約2/3。此時,相較于存在已知漏洞情形,IDHR的攻擊成功率和被控制率分別僅增加0.009 和0.002,而DHR 的攻擊成功率和被控制率分別增加0.04 和0.02。
由圖6 所示,在存在已知漏洞情況下,DHR架構的攻擊成功率和被控制率分別為0.8 和0.59;IDHR 架構的攻擊成功率和被控制率分別為0.452和0.326,相較DHR 架構降低了約1/2。在存在“未知”漏洞情況下,DHR 架構的攻擊成功率和被控制率分別為0.85 和0.64;IDHR 架構的攻擊成功率和被控制率分別為0.459 和0.328,相較DHR 架構仍降低了約1/2,此時,相較于存在已知漏洞情形,IDHR 的攻擊成功率和被控制率分別僅增加0.007 和0.002,而DHR 的攻擊成功率和被控制率均增加0.05。
由上述結果可知,在隨機模擬執行體和仿真Web 服務器方案下,IDHR 相較于DHR,在攻擊成功率和被控制率上具有明顯的安全優勢,且存在“未知”漏洞時,IDHR 的攻擊成功率和被控制率基本不變。接下來,對產生此結果的原因進行進一步分析。為此,本文對2 種實驗方案下DHR和IDHR 系統的服務體包含漏洞數的分布進行了統計。
如圖7 和圖8 所示,無論是否存在“未知”漏洞,在服務體包含漏洞數的各個分布區間內,IDHR架構中包含對應漏洞的服務體數均明顯低于DHR架構,說明IDHR 系統能有效減少系統中包含的共同漏洞數,因此IDHR 架構的攻擊成功率和被控制率均明顯低于DHR 架構。
此外,從圖7 和圖8 中還可以看出,存在“未知”漏洞時,IDHR 中服務體包含漏洞數的分布與存在已知漏洞時相比仍變化較小,這說明IDHR 架構的穩健性較高。
從隨機模擬執行體和仿真Web 服務器2 種方案的實驗結果可看出,IDHR 架構的安全性明顯優于DHR 架構,尤其是存在未知漏洞時。

圖7 隨機模擬執行體方案下,DHR 和IDHR 系統的服務體包含漏洞數的分布

圖8 仿真Web 服務器方案下,DHR 和IDHR 系統的服務體包含漏洞數的分布
針對DHR 系統服務體在面臨共同漏洞,特別是共同漏洞未知時的系統脆弱性問題,本文提出了IDHR 架構,引入根據執行體間的異構性對執行體集進行劃分的執行體劃分模塊,并改進調度模塊中的動態選擇算法,進一步增強系統安全性。后續將基于本文所做工作,繼續優化執行體劃分算法,進一步提高系統安全性。