魏 帥,張輝華,蘇 野,薛鵬飛,聞 亮
(1.戰(zhàn)略支援部隊(duì)信息工程大學(xué)信息技術(shù)研究所,鄭州 450003;2.無(wú)錫市新吳區(qū)保密技術(shù)服務(wù)中心,江蘇無(wú)錫 214000;3.天津市濱海新區(qū)信息技術(shù)創(chuàng)新中心,天津 300450)
2010 年“震網(wǎng)”病毒的攻擊對(duì)伊朗核電站造成重大破壞,導(dǎo)致放射性物質(zhì)泄漏,嚴(yán)重威脅了社會(huì)公共安全。這一事件標(biāo)志著網(wǎng)絡(luò)攻擊對(duì)象已從傳統(tǒng)的計(jì)算機(jī)網(wǎng)絡(luò)拓展到工業(yè)控制系統(tǒng)。2013 年斯諾登披露的“棱鏡門”等項(xiàng)目,也證實(shí)了利用信息系統(tǒng)的漏洞后門能夠進(jìn)行相應(yīng)的竊聽(tīng)和監(jiān)控,觸動(dòng)國(guó)家安全和個(gè)人隱私的紅線。
針對(duì)網(wǎng)絡(luò)空間安全易守難攻的局面,有學(xué)者提出移動(dòng)目標(biāo)防御[1]的方法,其采用主機(jī)突變[2]、有效地址突變[3]、IP 地址隨機(jī)化[4]、端口隨機(jī)化[5]和加密隨機(jī)化[6]等技術(shù),并且成功應(yīng)用于軟件定義網(wǎng)絡(luò)[7-9]中。借鑒移動(dòng)目標(biāo)防御思路,鄔江興等人進(jìn)一步提出了擬態(tài)防御的思想[10-12],并將其應(yīng)用于網(wǎng)絡(luò)操作系統(tǒng)[13]、路由器[14]和工業(yè)控制設(shè)備[15]等。攻擊者利用漏洞通常依賴相似、確定和靜態(tài)的執(zhí)行環(huán)境,而擬態(tài)技術(shù)采用動(dòng)態(tài)異構(gòu)冗余的思路打破系統(tǒng)的相似性、確定性和靜態(tài)性,使得后門和漏洞難以被利用[16]。擬態(tài)技術(shù)通過(guò)異構(gòu)冗余執(zhí)行體執(zhí)行相同任務(wù),并對(duì)執(zhí)行結(jié)果進(jìn)行比較,以此來(lái)確保結(jié)果的正確性,其依據(jù)的原理就是異構(gòu)執(zhí)行體不會(huì)或者較少產(chǎn)生共模錯(cuò)誤。事實(shí)上,隨著開(kāi)源和敏捷開(kāi)發(fā)等技術(shù)的發(fā)展,不同的異構(gòu)執(zhí)行體難免存在相似性。以應(yīng)用軟件為例,開(kāi)源社區(qū)如github 上有許多優(yōu)質(zhì)的軟件,經(jīng)過(guò)許多用戶的實(shí)用和測(cè)試,代碼比較穩(wěn)定可靠。為節(jié)省時(shí)間和降低成本,越來(lái)越多的開(kāi)發(fā)者傾向于采用開(kāi)源代碼進(jìn)行系統(tǒng)開(kāi)發(fā),這就造成了不同系統(tǒng)應(yīng)用之間存在相似性。硬件也是如此,如在設(shè)計(jì)CPU 的過(guò)程中也采用了大量的公用IP,使得不同的硬件之間可能存在相似性。
現(xiàn)有對(duì)異構(gòu)性和擬態(tài)調(diào)度之間關(guān)系的研究,基本都是采用二階相似性進(jìn)行評(píng)估。文獻(xiàn)[17]采用二階相似度累加即(i、j為異構(gòu)冗余系統(tǒng)中的執(zhí)行體且i≠j,difij代表執(zhí)行體i和j之間的異構(gòu)度)的方法評(píng)判系統(tǒng)的異構(gòu)性。文獻(xiàn)[18]提出了2 種相異性組件選擇算法,分別是最長(zhǎng)相異性(Maximum Dissimilarity,MD)距離算法和最佳平均相異性(Optimal Mean Dissimilarity,OMD)距離算法。文獻(xiàn)[19]提出了基于隨機(jī)種子的調(diào)度方法,利用木桶原理確保被調(diào)度執(zhí)行體的異構(gòu)度不超過(guò)某一個(gè)值。文獻(xiàn)[20]參考多樣性指標(biāo),結(jié)合物種之間的差異二次熵給出一種新的異構(gòu)性評(píng)價(jià)標(biāo)準(zhǔn),并得出異構(gòu)性不隨執(zhí)行體數(shù)目增加而減小的結(jié)論。
現(xiàn)有擬態(tài)防御系統(tǒng)的判決策略大多只引入異構(gòu)性指標(biāo)并以此建立調(diào)度模型[21],在調(diào)度策略中僅能保證執(zhí)行體的異構(gòu)性而缺乏對(duì)異構(gòu)性和安全性之間的量化分析,并且沒(méi)有考慮高階共生漏洞給安全性帶來(lái)的影響。本文分析影響系統(tǒng)異構(gòu)性的關(guān)鍵因素,定義高階異構(gòu)度的概念,指出高階異構(gòu)性在多執(zhí)行體中起到重要作用,并通過(guò)對(duì)攻擊模型的分析,依據(jù)容斥原理給出系統(tǒng)失效率計(jì)算方法,從而實(shí)現(xiàn)對(duì)擬態(tài)系統(tǒng)防御能力的準(zhǔn)確分析。
典型的擬態(tài)防御架構(gòu)如圖1 所示,其中,外界輸入通過(guò)輸入代理分發(fā)給異構(gòu)執(zhí)行體,異構(gòu)執(zhí)行體執(zhí)行相同的任務(wù)并將結(jié)果發(fā)送給調(diào)度器,調(diào)度器采用大數(shù)判決策略對(duì)執(zhí)行結(jié)果進(jìn)行判決,最終產(chǎn)生一個(gè)認(rèn)為是正確的輸出結(jié)果,調(diào)度器可以根據(jù)各執(zhí)行體的表現(xiàn)進(jìn)行相應(yīng)的反饋控制,如某個(gè)執(zhí)行體產(chǎn)生錯(cuò)誤則對(duì)其進(jìn)行清洗,待清洗完成后再將其加入工作隊(duì)列。在此過(guò)程中,判決相關(guān)參數(shù)和系統(tǒng)運(yùn)行狀態(tài)信息可通過(guò)反饋控制器進(jìn)行控制和查看。
圖1 擬態(tài)防御典型架構(gòu)Fig.1 Typical mimic defense architecture
雖然構(gòu)建擬態(tài)系統(tǒng)的最佳方法是采用完全異構(gòu)的異構(gòu)執(zhí)行體,但是隨著開(kāi)源技術(shù)的發(fā)展,越來(lái)越多的軟硬件采用敏捷開(kāi)發(fā)技術(shù)進(jìn)行系統(tǒng)集成,通過(guò)復(fù)用成熟的構(gòu)件,可以有效地降低開(kāi)發(fā)成本,提升系統(tǒng)的可靠性。然而,代碼復(fù)用技術(shù)的發(fā)展也對(duì)異構(gòu)執(zhí)行體的選擇造成了困擾。對(duì)擬態(tài)防御系統(tǒng)而言,不同的執(zhí)行體使用同樣的構(gòu)件,有可能帶來(lái)同源漏洞。通過(guò)源碼分析、溯源(即軟件基因解析)等技術(shù)可以分析不同執(zhí)行體組件之間的相關(guān)性,并以此預(yù)估相同漏洞出現(xiàn)的概率。一般而言,復(fù)用的共同代碼越多,相似性越大,出現(xiàn)的共同漏洞就越多。
假定執(zhí)行體由一系列組件構(gòu)成,如CPU、操作系統(tǒng)、中間件、應(yīng)用程序等,每個(gè)組件又由若干個(gè)構(gòu)件組成,如應(yīng)用程序可分為多個(gè)模塊,構(gòu)件是執(zhí)行體組成的最小單元,具有原子性(不可分割性),并且實(shí)現(xiàn)方式各不相同。而在實(shí)現(xiàn)過(guò)程中,不可避免地會(huì)出現(xiàn)不同執(zhí)行體中的組件采用相同構(gòu)件的情況,這種情況下執(zhí)行體之間就存在相似性。由于現(xiàn)實(shí)情況中各個(gè)組件之間需要整合,因此在執(zhí)行體組成時(shí)需要考慮組件的成熟度、整體運(yùn)行效率等因素。此外,組件之間的組合是受限的,如某種應(yīng)用程序只適配特定類型的中間件,此時(shí)執(zhí)行體的組合受限,難免存在相似性。文獻(xiàn)[17-19]以矩陣來(lái)表示構(gòu)件之間的相似性。在高階相似度中采用矩陣進(jìn)行存儲(chǔ)雖然容易查找,但存儲(chǔ)密度太小,如有N個(gè)構(gòu)件的系統(tǒng),其N階相似性指標(biāo)只有1 個(gè),但是按照矩陣方式存儲(chǔ),則其矩陣大小為N×N。本文以向量的方式進(jìn)行相似性表示,n階相似向量所對(duì)應(yīng)的組合為:
不同階的相似性不存在必然的聯(lián)系,可以根據(jù)基因分析和代碼統(tǒng)計(jì)等技術(shù)進(jìn)行代碼復(fù)用率估計(jì),進(jìn)而計(jì)算相似性,但其中存在著嚴(yán)格的不等式關(guān)系,即高階相似性小于其低階子集的相似性,如組件集合{A,B,C}的三階相似性必然小于{A,B}、{A,C}或者{B,C}的相似性,因此,可以得到高階相似性的以下性質(zhì)及推論:
性質(zhì)1高階相似性小于其低階子集的相似性,如。
推論1如果高階相似性不為0,則低階相似性必不為0;如果低階相似性為0,則高階相似性必為0。
本文提出基于高階異構(gòu)度的大數(shù)判決算法(MVAHH),其判決策略如下:
1)將輸出結(jié)果一致的執(zhí)行體劃分為一個(gè)組Gk,所有的k組成集合K。
2)如果存在Gi,對(duì)于所有j∈K,j≠i,都有|Gi|>|Gj|,則選擇Gi的結(jié)果作為最終結(jié)果。
3)選取集合中元素?cái)?shù)目最多的集合組Gmp,評(píng)估|Gmp|相似性,選取集合組中相似性最低的作為最終輸出結(jié)果。
4)對(duì)產(chǎn)生錯(cuò)誤的執(zhí)行體進(jìn)行清洗恢復(fù)。
如果采用大數(shù)判決,使得系統(tǒng)中大多數(shù)執(zhí)行體相似性為0,沒(méi)有共同漏洞/后門,則系統(tǒng)被攻破的概率為0。假定采用大數(shù)判決的擬態(tài)系統(tǒng)中有N個(gè)執(zhí)行體,其階相似性均為0,則系統(tǒng)安全性為1。如三模冗余系統(tǒng)二階相似性為0,如果五模冗余系統(tǒng)三階相似性為0,則系統(tǒng)安全性為1。
據(jù)統(tǒng)計(jì),平均1 000 行~1 500 行代碼程序員就會(huì)留下一個(gè)漏洞,可見(jiàn)信息系統(tǒng)有巨大的安全隱患。假設(shè)網(wǎng)絡(luò)攻擊針對(duì)不同漏洞/后門的攻擊會(huì)產(chǎn)生不同的輸出表現(xiàn),只有針對(duì)高階漏洞/后門的攻擊才會(huì)產(chǎn)生共用的輸出表現(xiàn),則當(dāng)N模執(zhí)行體階相似性為0 時(shí),就不會(huì)有個(gè)以上執(zhí)行體產(chǎn)生同樣的錯(cuò)誤結(jié)果,根據(jù)大數(shù)判決策略,一定會(huì)判決出正確的結(jié)果,所以,系統(tǒng)的安全性為1。
在選取執(zhí)行體數(shù)目時(shí),N通常取單數(shù),如果N為偶數(shù),則其要求和(N-1)模執(zhí)行體相同,但是多了一個(gè)執(zhí)行體。假如擬態(tài)系統(tǒng)中存在4 個(gè)冗余執(zhí)行體,不存在三階相似性,但存在二階相似性,當(dāng)發(fā)生針對(duì)二階漏洞的攻擊時(shí),如針對(duì)執(zhí)行體1 和執(zhí)行體2的共同漏洞,執(zhí)行體1 和執(zhí)行體2 的輸出結(jié)果一致,執(zhí)行體3 和執(zhí)行體4 的輸出結(jié)果一致,投票比例2∶2,則無(wú)法通過(guò)大數(shù)判決判斷出哪個(gè)才是可信結(jié)果。
本文以5 個(gè)執(zhí)行體的擬態(tài)架構(gòu)為例,采用上文提出的MVAHH 算法。輸入代理將輸入分為5份發(fā)給5個(gè)執(zhí)行體,5 個(gè)執(zhí)行體同時(shí)進(jìn)行數(shù)據(jù)處理,并將處理結(jié)果輸出到仲裁器進(jìn)行結(jié)果表決,當(dāng)系統(tǒng)中所有執(zhí)行體結(jié)果均不相同時(shí),按照平均1 000行~1 500行代碼程序員就會(huì)留下一個(gè)漏洞的規(guī)律,優(yōu)先信任代碼量較小的執(zhí)行體,系統(tǒng)整體執(zhí)行流程如下所示:
以S1~S4 表示五執(zhí)行體擬態(tài)系統(tǒng)分別在5 個(gè)、4 個(gè)、3 個(gè)、2 個(gè)執(zhí)行體有效情況下的仲裁算法,以及根據(jù)仲裁結(jié)果的跳轉(zhuǎn)情況。
1)初始時(shí)默認(rèn)3 個(gè)執(zhí)行體工作,N=5,清洗集合C為空。若存在5 個(gè)執(zhí)行體輸出結(jié)果一致,跳轉(zhuǎn)至S1;若存在4 個(gè)執(zhí)行體輸出結(jié)果一致,將1 個(gè)結(jié)果不同的執(zhí)行體加入到清洗集合C,跳轉(zhuǎn)至S2;若存在3 個(gè)執(zhí)行體輸出結(jié)果一致,將2 個(gè)結(jié)果不同的執(zhí)行體加入到清洗集合C,跳轉(zhuǎn)至S3;若存在2 個(gè)執(zhí)行體輸出結(jié)果一致,且存在2 個(gè)以上的二元素集合Gi、Gj比較,則選取異構(gòu)度小的作為最終結(jié)果進(jìn)行輸出,將3 個(gè)結(jié)果不同的執(zhí)行體K加入到清洗集合C,跳轉(zhuǎn)至S2;若所有執(zhí)行體輸出結(jié)果一致,選取代碼量較小的執(zhí)行體作為最終結(jié)果進(jìn)行輸出,將4個(gè)結(jié)果不同的執(zhí)行體K加入到清洗集合C,跳轉(zhuǎn)至S5。
2)配置執(zhí)行體集合C中的執(zhí)行體進(jìn)行清洗,若某個(gè)執(zhí)行體清洗完成,跳轉(zhuǎn)至S1;若存在4 個(gè)執(zhí)行體輸出結(jié)果一致,跳轉(zhuǎn)至S2;若存在3 個(gè)執(zhí)行體輸出結(jié)果一致,將1 個(gè)結(jié)果不同的執(zhí)行體加入到清洗集合C,跳轉(zhuǎn)至S3;若存在2 個(gè)執(zhí)行體輸出結(jié)果一致,且存在2 個(gè)以上的二元素集合Gi、Gj比較,則選取異構(gòu)度小的作為最終結(jié)果進(jìn)行輸出,將2 個(gè)結(jié)果不同的執(zhí)行體加入到清洗集合C,跳轉(zhuǎn)至S4;若所有執(zhí)行體輸出結(jié)果一致,選取代碼量較小的執(zhí)行體作為最終結(jié)果進(jìn)行輸出,將3 個(gè)結(jié)果不同的執(zhí)行體加入到清洗集合C,跳轉(zhuǎn)至S5。
3)配置執(zhí)行體集合C中的執(zhí)行體進(jìn)行清洗,若某個(gè)執(zhí)行體清洗完成,跳轉(zhuǎn)至S2;若存在3 個(gè)執(zhí)行體輸出結(jié)果一致,跳轉(zhuǎn)至S3;若存在2個(gè)執(zhí)行體輸出結(jié)果一致,將1個(gè)結(jié)果不同的執(zhí)行體加入到清洗集合C,跳轉(zhuǎn)至S4;若所有執(zhí)行體輸出結(jié)果一致,選取代碼量較小的執(zhí)行體作為最終結(jié)果進(jìn)行輸出,將2 個(gè)結(jié)果不同的執(zhí)行體加入到清洗集合C,跳轉(zhuǎn)至S5。
4)配置執(zhí)行體集合C中的執(zhí)行體進(jìn)行清洗,若某個(gè)執(zhí)行體清洗完成,跳轉(zhuǎn)至S3;若存在2 個(gè)執(zhí)行體輸出結(jié)果一致,跳轉(zhuǎn)至S4;若所有執(zhí)行體輸出結(jié)果一致,選取代碼量較小的執(zhí)行體作為最終結(jié)果進(jìn)行輸出,將1 個(gè)結(jié)果不同的執(zhí)行體加入到清洗集合C,跳轉(zhuǎn)至S5。
5)配置執(zhí)行體M進(jìn)行清洗,若某個(gè)執(zhí)行體清洗完成,則跳轉(zhuǎn)至S4。輸出執(zhí)行體輸出結(jié)果。
采用大數(shù)判決算法的擬態(tài)系統(tǒng)被攻破的概率等于雖然產(chǎn)生錯(cuò)誤但是未被判決出來(lái)的錯(cuò)誤概率之和,也等于高階相似構(gòu)件所產(chǎn)生的概率之和。為簡(jiǎn)要說(shuō)明問(wèn)題而不失一般性,假定所有執(zhí)行體實(shí)現(xiàn)的代碼量和產(chǎn)生漏洞的概率基本相同,均為1。根據(jù)執(zhí)行體的n階相似性,結(jié)合容斥原理公式,可以計(jì)算得到采用大數(shù)判決策略時(shí)擬態(tài)系統(tǒng)被攻破的概率。
一般情況下的容斥原理公式如下所示:
以五模執(zhí)行體為例,根據(jù)高階相似性矩陣推出系統(tǒng)失效概率。其中,一階以上錯(cuò)誤概率可以參照式(1)求出,二階漏洞后門可以根據(jù)遞歸原理看作C25個(gè)元素A1∩A2、A1∩A3、A1∩A4、A1∩A5、A2∩A3、A2∩A4、A2∩A5、A3∩A4、A3∩A5、A4∩A5,并利用式(1)求解,得到漏洞后門數(shù)。同理可以得到五模執(zhí)行體各階漏洞數(shù)和判決結(jié)果,如表1 所示。其中,3個(gè)以上結(jié)果錯(cuò)誤會(huì)導(dǎo)致系統(tǒng)產(chǎn)生錯(cuò)誤結(jié)果,按照大數(shù)判決算法,會(huì)對(duì)系統(tǒng)整體產(chǎn)生影響,則判決出現(xiàn)錯(cuò)誤的總概率為:
表1 五模執(zhí)行體各階漏洞數(shù)和判決結(jié)果Table 1 Number of vulnerabilities and voting result for each level of 5-executors
實(shí)驗(yàn)對(duì)MVAHH 判決算法和基于二階異構(gòu)度的最大異構(gòu)度算法進(jìn)行比較,實(shí)驗(yàn)程序通過(guò)MATLAB編寫(xiě),執(zhí)行體之間的相似度隨機(jī)生成。利用蒙特卡洛方法進(jìn)行模擬測(cè)試,觀察擬態(tài)系統(tǒng)的失效概率。為簡(jiǎn)化結(jié)果并不失一般性,本文采用相對(duì)錯(cuò)誤率來(lái)衡量系統(tǒng)的失效概率,即系統(tǒng)多階漏洞占執(zhí)行體內(nèi)總漏洞的比重,這個(gè)比重可能偏高,因?yàn)橥ǔ0l(fā)現(xiàn)漏洞都較為困難,真實(shí)的攻擊成功概率需要再乘以一定的系數(shù)(漏洞發(fā)現(xiàn)率),但不影響分析高階漏洞在整體系統(tǒng)中的作用。
假定執(zhí)行體數(shù)目為3,二階相似度為50%、25%、10%、5%情況下的系統(tǒng)失效率如圖2~圖5 所示(彩色效果見(jiàn)《計(jì)算機(jī)工程》官網(wǎng)HTML 版),其中,MVAHH 判決算法結(jié)果用藍(lán)色表示,基于二階異構(gòu)性的最大異構(gòu)度算法用紅色表示。可以看出,隨著相似性的增大,最大差異度算法和本文算法的差距逐漸增大,這是因?yàn)楫?dāng)相似性較大時(shí),更容易出現(xiàn)三階相似性不為0 的情況,此時(shí)采用基于二階異構(gòu)度的最大異構(gòu)度算法,就會(huì)造成三階異構(gòu)度的重復(fù)計(jì)算,造成結(jié)果產(chǎn)生較大的失真。由此可知,當(dāng)相似性增加時(shí),需要更多地考慮高階相似性,否則會(huì)造成較大失真。
假定執(zhí)行體數(shù)目為5,二階相似度為50%、25%、10%、5%情況下的系統(tǒng)失效率如圖6~圖9 所示(彩色效果見(jiàn)《計(jì)算機(jī)工程》官網(wǎng)HTML 版),其中,MVAHH 判決算法結(jié)果用藍(lán)色表示,基于二階異構(gòu)性的最大異構(gòu)度算法用紅色表示。可以看出,與三階情況類似,隨著相似性的增大,最大差異度算法和本文算法的差距逐漸增大,這是因?yàn)楫?dāng)相似性較大時(shí),更容易出現(xiàn)三階以上相似性不為0 的情況,此時(shí)采用基于2 階異構(gòu)度的最大異構(gòu)度算法會(huì)造成結(jié)果產(chǎn)生較大的失真。比起相同相似性的三執(zhí)行體系統(tǒng),可以看出其系統(tǒng)被攻破的概率明顯減小,當(dāng)二階相似度為5%時(shí),有多種選擇可以使系統(tǒng)被攻破概率為0。
圖2 二階相似度為50%的三執(zhí)行體系統(tǒng)失效率Fig.2 System failure probability of 3-executor system whose 2-level similarity is 50%
圖3 二階相似度為25%的三執(zhí)行體系統(tǒng)失效率Fig.3 System failure probability of 3-executor system whose 2-level similarity is 25%
圖4 二階相似度為10%的三執(zhí)行體系統(tǒng)失效率Fig.4 System failure probability of 3-executor system whose 2-level similarity is 10%
圖5 二階相似度為5%的三執(zhí)行體系統(tǒng)失效率Fig.5 System failure probability of 3-executor system whose 2-level similarity is 5%
圖6 二階相似度為50%的五執(zhí)行體系統(tǒng)失效率Fig.6 System failure probability of 5-executor system whose 2-level similarity is 50%
圖7 二階相似度為25%的五執(zhí)行體系統(tǒng)失效率Fig.7 System failure probability of 5-executor system whose 2-level similarity is 25%
圖8 二階相似度為10%的五執(zhí)行體系統(tǒng)失效率Fig.8 System failure probability of 5-executor system whose 2-level similarity is 10%
圖9 二階相似度為5%的五執(zhí)行體系統(tǒng)失效率Fig.9 System failure probability of 5-executor system whose 2-level similarity is 5%
本文基于擬態(tài)防御架構(gòu),結(jié)合執(zhí)行體的異構(gòu)特點(diǎn)分析擬態(tài)防御系統(tǒng)中裁決器的判決算法,總結(jié)現(xiàn)有基于二階異構(gòu)度的調(diào)度算法存在的不足,提出一種基于高階異構(gòu)度的大數(shù)判決算法用于評(píng)估擬態(tài)系統(tǒng)性能。實(shí)驗(yàn)結(jié)果表明,該算法能夠準(zhǔn)確分析系統(tǒng)的安全性和可靠性。本文對(duì)于攻擊模型的分析和假設(shè)還不夠完善,后續(xù)將進(jìn)一步分析網(wǎng)絡(luò)攻擊模型及其對(duì)判決結(jié)果的影響,提出更具通用性的判決調(diào)度算法。