魏 帥,張輝華,蘇 野,薛鵬飛,聞 亮
(1.戰略支援部隊信息工程大學信息技術研究所,鄭州 450003;2.無錫市新吳區保密技術服務中心,江蘇無錫 214000;3.天津市濱海新區信息技術創新中心,天津 300450)
2010 年“震網”病毒的攻擊對伊朗核電站造成重大破壞,導致放射性物質泄漏,嚴重威脅了社會公共安全。這一事件標志著網絡攻擊對象已從傳統的計算機網絡拓展到工業控制系統。2013 年斯諾登披露的“棱鏡門”等項目,也證實了利用信息系統的漏洞后門能夠進行相應的竊聽和監控,觸動國家安全和個人隱私的紅線。
針對網絡空間安全易守難攻的局面,有學者提出移動目標防御[1]的方法,其采用主機突變[2]、有效地址突變[3]、IP 地址隨機化[4]、端口隨機化[5]和加密隨機化[6]等技術,并且成功應用于軟件定義網絡[7-9]中。借鑒移動目標防御思路,鄔江興等人進一步提出了擬態防御的思想[10-12],并將其應用于網絡操作系統[13]、路由器[14]和工業控制設備[15]等。攻擊者利用漏洞通常依賴相似、確定和靜態的執行環境,而擬態技術采用動態異構冗余的思路打破系統的相似性、確定性和靜態性,使得后門和漏洞難以被利用[16]。擬態技術通過異構冗余執行體執行相同任務,并對執行結果進行比較,以此來確保結果的正確性,其依據的原理就是異構執行體不會或者較少產生共模錯誤。事實上,隨著開源和敏捷開發等技術的發展,不同的異構執行體難免存在相似性。以應用軟件為例,開源社區如github 上有許多優質的軟件,經過許多用戶的實用和測試,代碼比較穩定可靠。為節省時間和降低成本,越來越多的開發者傾向于采用開源代碼進行系統開發,這就造成了不同系統應用之間存在相似性。硬件也是如此,如在設計CPU 的過程中也采用了大量的公用IP,使得不同的硬件之間可能存在相似性。
現有對異構性和擬態調度之間關系的研究,基本都是采用二階相似性進行評估。文獻[17]采用二階相似度累加即(i、j為異構冗余系統中的執行體且i≠j,difij代表執行體i和j之間的異構度)的方法評判系統的異構性。文獻[18]提出了2 種相異性組件選擇算法,分別是最長相異性(Maximum Dissimilarity,MD)距離算法和最佳平均相異性(Optimal Mean Dissimilarity,OMD)距離算法。文獻[19]提出了基于隨機種子的調度方法,利用木桶原理確保被調度執行體的異構度不超過某一個值。文獻[20]參考多樣性指標,結合物種之間的差異二次熵給出一種新的異構性評價標準,并得出異構性不隨執行體數目增加而減小的結論。
現有擬態防御系統的判決策略大多只引入異構性指標并以此建立調度模型[21],在調度策略中僅能保證執行體的異構性而缺乏對異構性和安全性之間的量化分析,并且沒有考慮高階共生漏洞給安全性帶來的影響。本文分析影響系統異構性的關鍵因素,定義高階異構度的概念,指出高階異構性在多執行體中起到重要作用,并通過對攻擊模型的分析,依據容斥原理給出系統失效率計算方法,從而實現對擬態系統防御能力的準確分析。
典型的擬態防御架構如圖1 所示,其中,外界輸入通過輸入代理分發給異構執行體,異構執行體執行相同的任務并將結果發送給調度器,調度器采用大數判決策略對執行結果進行判決,最終產生一個認為是正確的輸出結果,調度器可以根據各執行體的表現進行相應的反饋控制,如某個執行體產生錯誤則對其進行清洗,待清洗完成后再將其加入工作隊列。在此過程中,判決相關參數和系統運行狀態信息可通過反饋控制器進行控制和查看。

圖1 擬態防御典型架構Fig.1 Typical mimic defense architecture
雖然構建擬態系統的最佳方法是采用完全異構的異構執行體,但是隨著開源技術的發展,越來越多的軟硬件采用敏捷開發技術進行系統集成,通過復用成熟的構件,可以有效地降低開發成本,提升系統的可靠性。然而,代碼復用技術的發展也對異構執行體的選擇造成了困擾。對擬態防御系統而言,不同的執行體使用同樣的構件,有可能帶來同源漏洞。通過源碼分析、溯源(即軟件基因解析)等技術可以分析不同執行體組件之間的相關性,并以此預估相同漏洞出現的概率。一般而言,復用的共同代碼越多,相似性越大,出現的共同漏洞就越多。
假定執行體由一系列組件構成,如CPU、操作系統、中間件、應用程序等,每個組件又由若干個構件組成,如應用程序可分為多個模塊,構件是執行體組成的最小單元,具有原子性(不可分割性),并且實現方式各不相同。而在實現過程中,不可避免地會出現不同執行體中的組件采用相同構件的情況,這種情況下執行體之間就存在相似性。由于現實情況中各個組件之間需要整合,因此在執行體組成時需要考慮組件的成熟度、整體運行效率等因素。此外,組件之間的組合是受限的,如某種應用程序只適配特定類型的中間件,此時執行體的組合受限,難免存在相似性。文獻[17-19]以矩陣來表示構件之間的相似性。在高階相似度中采用矩陣進行存儲雖然容易查找,但存儲密度太小,如有N個構件的系統,其N階相似性指標只有1 個,但是按照矩陣方式存儲,則其矩陣大小為N×N。本文以向量的方式進行相似性表示,n階相似向量所對應的組合為:

不同階的相似性不存在必然的聯系,可以根據基因分析和代碼統計等技術進行代碼復用率估計,進而計算相似性,但其中存在著嚴格的不等式關系,即高階相似性小于其低階子集的相似性,如組件集合{A,B,C}的三階相似性必然小于{A,B}、{A,C}或者{B,C}的相似性,因此,可以得到高階相似性的以下性質及推論:
性質1高階相似性小于其低階子集的相似性,如。
推論1如果高階相似性不為0,則低階相似性必不為0;如果低階相似性為0,則高階相似性必為0。
本文提出基于高階異構度的大數判決算法(MVAHH),其判決策略如下:
1)將輸出結果一致的執行體劃分為一個組Gk,所有的k組成集合K。
2)如果存在Gi,對于所有j∈K,j≠i,都有|Gi|>|Gj|,則選擇Gi的結果作為最終結果。
3)選取集合中元素數目最多的集合組Gmp,評估|Gmp|相似性,選取集合組中相似性最低的作為最終輸出結果。
4)對產生錯誤的執行體進行清洗恢復。
如果采用大數判決,使得系統中大多數執行體相似性為0,沒有共同漏洞/后門,則系統被攻破的概率為0。假定采用大數判決的擬態系統中有N個執行體,其階相似性均為0,則系統安全性為1。如三模冗余系統二階相似性為0,如果五模冗余系統三階相似性為0,則系統安全性為1。
據統計,平均1 000 行~1 500 行代碼程序員就會留下一個漏洞,可見信息系統有巨大的安全隱患。假設網絡攻擊針對不同漏洞/后門的攻擊會產生不同的輸出表現,只有針對高階漏洞/后門的攻擊才會產生共用的輸出表現,則當N模執行體階相似性為0 時,就不會有個以上執行體產生同樣的錯誤結果,根據大數判決策略,一定會判決出正確的結果,所以,系統的安全性為1。
在選取執行體數目時,N通常取單數,如果N為偶數,則其要求和(N-1)模執行體相同,但是多了一個執行體。假如擬態系統中存在4 個冗余執行體,不存在三階相似性,但存在二階相似性,當發生針對二階漏洞的攻擊時,如針對執行體1 和執行體2的共同漏洞,執行體1 和執行體2 的輸出結果一致,執行體3 和執行體4 的輸出結果一致,投票比例2∶2,則無法通過大數判決判斷出哪個才是可信結果。
本文以5 個執行體的擬態架構為例,采用上文提出的MVAHH 算法。輸入代理將輸入分為5份發給5個執行體,5 個執行體同時進行數據處理,并將處理結果輸出到仲裁器進行結果表決,當系統中所有執行體結果均不相同時,按照平均1 000行~1 500行代碼程序員就會留下一個漏洞的規律,優先信任代碼量較小的執行體,系統整體執行流程如下所示:
以S1~S4 表示五執行體擬態系統分別在5 個、4 個、3 個、2 個執行體有效情況下的仲裁算法,以及根據仲裁結果的跳轉情況。
1)初始時默認3 個執行體工作,N=5,清洗集合C為空。若存在5 個執行體輸出結果一致,跳轉至S1;若存在4 個執行體輸出結果一致,將1 個結果不同的執行體加入到清洗集合C,跳轉至S2;若存在3 個執行體輸出結果一致,將2 個結果不同的執行體加入到清洗集合C,跳轉至S3;若存在2 個執行體輸出結果一致,且存在2 個以上的二元素集合Gi、Gj比較,則選取異構度小的作為最終結果進行輸出,將3 個結果不同的執行體K加入到清洗集合C,跳轉至S2;若所有執行體輸出結果一致,選取代碼量較小的執行體作為最終結果進行輸出,將4個結果不同的執行體K加入到清洗集合C,跳轉至S5。
2)配置執行體集合C中的執行體進行清洗,若某個執行體清洗完成,跳轉至S1;若存在4 個執行體輸出結果一致,跳轉至S2;若存在3 個執行體輸出結果一致,將1 個結果不同的執行體加入到清洗集合C,跳轉至S3;若存在2 個執行體輸出結果一致,且存在2 個以上的二元素集合Gi、Gj比較,則選取異構度小的作為最終結果進行輸出,將2 個結果不同的執行體加入到清洗集合C,跳轉至S4;若所有執行體輸出結果一致,選取代碼量較小的執行體作為最終結果進行輸出,將3 個結果不同的執行體加入到清洗集合C,跳轉至S5。
3)配置執行體集合C中的執行體進行清洗,若某個執行體清洗完成,跳轉至S2;若存在3 個執行體輸出結果一致,跳轉至S3;若存在2個執行體輸出結果一致,將1個結果不同的執行體加入到清洗集合C,跳轉至S4;若所有執行體輸出結果一致,選取代碼量較小的執行體作為最終結果進行輸出,將2 個結果不同的執行體加入到清洗集合C,跳轉至S5。
4)配置執行體集合C中的執行體進行清洗,若某個執行體清洗完成,跳轉至S3;若存在2 個執行體輸出結果一致,跳轉至S4;若所有執行體輸出結果一致,選取代碼量較小的執行體作為最終結果進行輸出,將1 個結果不同的執行體加入到清洗集合C,跳轉至S5。
5)配置執行體M進行清洗,若某個執行體清洗完成,則跳轉至S4。輸出執行體輸出結果。
采用大數判決算法的擬態系統被攻破的概率等于雖然產生錯誤但是未被判決出來的錯誤概率之和,也等于高階相似構件所產生的概率之和。為簡要說明問題而不失一般性,假定所有執行體實現的代碼量和產生漏洞的概率基本相同,均為1。根據執行體的n階相似性,結合容斥原理公式,可以計算得到采用大數判決策略時擬態系統被攻破的概率。
一般情況下的容斥原理公式如下所示:

以五模執行體為例,根據高階相似性矩陣推出系統失效概率。其中,一階以上錯誤概率可以參照式(1)求出,二階漏洞后門可以根據遞歸原理看作C25個元素A1∩A2、A1∩A3、A1∩A4、A1∩A5、A2∩A3、A2∩A4、A2∩A5、A3∩A4、A3∩A5、A4∩A5,并利用式(1)求解,得到漏洞后門數。同理可以得到五模執行體各階漏洞數和判決結果,如表1 所示。其中,3個以上結果錯誤會導致系統產生錯誤結果,按照大數判決算法,會對系統整體產生影響,則判決出現錯誤的總概率為:


表1 五模執行體各階漏洞數和判決結果Table 1 Number of vulnerabilities and voting result for each level of 5-executors
實驗對MVAHH 判決算法和基于二階異構度的最大異構度算法進行比較,實驗程序通過MATLAB編寫,執行體之間的相似度隨機生成。利用蒙特卡洛方法進行模擬測試,觀察擬態系統的失效概率。為簡化結果并不失一般性,本文采用相對錯誤率來衡量系統的失效概率,即系統多階漏洞占執行體內總漏洞的比重,這個比重可能偏高,因為通常發現漏洞都較為困難,真實的攻擊成功概率需要再乘以一定的系數(漏洞發現率),但不影響分析高階漏洞在整體系統中的作用。
假定執行體數目為3,二階相似度為50%、25%、10%、5%情況下的系統失效率如圖2~圖5 所示(彩色效果見《計算機工程》官網HTML 版),其中,MVAHH 判決算法結果用藍色表示,基于二階異構性的最大異構度算法用紅色表示。可以看出,隨著相似性的增大,最大差異度算法和本文算法的差距逐漸增大,這是因為當相似性較大時,更容易出現三階相似性不為0 的情況,此時采用基于二階異構度的最大異構度算法,就會造成三階異構度的重復計算,造成結果產生較大的失真。由此可知,當相似性增加時,需要更多地考慮高階相似性,否則會造成較大失真。
假定執行體數目為5,二階相似度為50%、25%、10%、5%情況下的系統失效率如圖6~圖9 所示(彩色效果見《計算機工程》官網HTML 版),其中,MVAHH 判決算法結果用藍色表示,基于二階異構性的最大異構度算法用紅色表示。可以看出,與三階情況類似,隨著相似性的增大,最大差異度算法和本文算法的差距逐漸增大,這是因為當相似性較大時,更容易出現三階以上相似性不為0 的情況,此時采用基于2 階異構度的最大異構度算法會造成結果產生較大的失真。比起相同相似性的三執行體系統,可以看出其系統被攻破的概率明顯減小,當二階相似度為5%時,有多種選擇可以使系統被攻破概率為0。

圖2 二階相似度為50%的三執行體系統失效率Fig.2 System failure probability of 3-executor system whose 2-level similarity is 50%

圖3 二階相似度為25%的三執行體系統失效率Fig.3 System failure probability of 3-executor system whose 2-level similarity is 25%

圖4 二階相似度為10%的三執行體系統失效率Fig.4 System failure probability of 3-executor system whose 2-level similarity is 10%

圖5 二階相似度為5%的三執行體系統失效率Fig.5 System failure probability of 3-executor system whose 2-level similarity is 5%

圖6 二階相似度為50%的五執行體系統失效率Fig.6 System failure probability of 5-executor system whose 2-level similarity is 50%

圖7 二階相似度為25%的五執行體系統失效率Fig.7 System failure probability of 5-executor system whose 2-level similarity is 25%

圖8 二階相似度為10%的五執行體系統失效率Fig.8 System failure probability of 5-executor system whose 2-level similarity is 10%

圖9 二階相似度為5%的五執行體系統失效率Fig.9 System failure probability of 5-executor system whose 2-level similarity is 5%
本文基于擬態防御架構,結合執行體的異構特點分析擬態防御系統中裁決器的判決算法,總結現有基于二階異構度的調度算法存在的不足,提出一種基于高階異構度的大數判決算法用于評估擬態系統性能。實驗結果表明,該算法能夠準確分析系統的安全性和可靠性。本文對于攻擊模型的分析和假設還不夠完善,后續將進一步分析網絡攻擊模型及其對判決結果的影響,提出更具通用性的判決調度算法。