宋子繁, 肖美華, 鐘逸洲, 羅敏
(華東交通大學(xué) 軟件學(xué)院, 江西 南昌 330013)
網(wǎng)絡(luò)設(shè)備作為信息基礎(chǔ)設(shè)施的核心部件,其脆弱性(vulnerability,也稱為漏洞)數(shù)量的不斷增長,導(dǎo)致信息安全形勢日益嚴(yán)峻。在脆弱性、脆弱性知識庫研究方面,國家互聯(lián)網(wǎng)應(yīng)急中心[1]、王輝等[2]為準(zhǔn)確評估計算機(jī)網(wǎng)絡(luò)的脆弱性,結(jié)合貝葉斯網(wǎng)絡(luò)與攻擊圖提出一種新的評估算法;代培武等[3]針對現(xiàn)有漏洞檢測平臺無法有效識別Crash類型的問題,提出一種二進(jìn)制可執(zhí)行程序漏洞檢測和Crash類型判定的方法,并基于該方法開發(fā)原型系統(tǒng);Jiang等[4]針對脆弱性評估過程中手工分析不精確的問題,提出使用交叉鏈接和相關(guān)的數(shù)據(jù)庫來收集、提取、過濾和可視化多個現(xiàn)有存儲庫的漏洞數(shù)據(jù),從而推斷出信息物理系統(tǒng)的脆弱性信息;Mishina等[5]基于脆弱性數(shù)據(jù)庫,提出一種有效的威脅分析方法,用于安全至上的信息物理系統(tǒng)設(shè)計階段并發(fā)現(xiàn)可能存在的攻擊。在基于本體的關(guān)聯(lián)規(guī)則挖掘方面,Agapito等[6]在其早期工作提出的一種基于本體的帶注釋數(shù)據(jù)集中提取加權(quán)關(guān)聯(lián)規(guī)則方法GO-WAR的基礎(chǔ)上,設(shè)計交叉本體關(guān)聯(lián)規(guī)則的方法,用于挖掘生物學(xué)領(lǐng)域的關(guān)聯(lián)規(guī)則;Kafkas等[7]為傳染病及傳染機(jī)制研究提供支持,提出一種利用來自本體的背景知識和統(tǒng)計方法來提取病原體和疾病之間的關(guān)聯(lián)的方法,并將關(guān)聯(lián)后的數(shù)據(jù)整合為一個公開數(shù)據(jù)庫,供相關(guān)學(xué)者使用;袁柳等[8]提出一種先建立關(guān)聯(lián)數(shù)據(jù)集的模式級鏈接,再進(jìn)行關(guān)聯(lián)規(guī)則挖掘的方法,同時給出了基于Hadoop的大規(guī)模關(guān)聯(lián)數(shù)據(jù)集采用資源描述框架(resource description framework,RDF)數(shù)據(jù)集上關(guān)聯(lián)規(guī)則挖掘的實現(xiàn)方案;Yang[9]提出物流金融本體,并對風(fēng)險隱患數(shù)據(jù)庫進(jìn)行關(guān)聯(lián)分析獲得物流金融風(fēng)險事件與風(fēng)險源的關(guān)聯(lián)規(guī)則,依據(jù)關(guān)聯(lián)規(guī)則對相關(guān)風(fēng)險源逐個進(jìn)行篩選和控制,有助于物流金融的健康發(fā)展。
針對網(wǎng)絡(luò)設(shè)備脆弱性分析與預(yù)測,本文提出基于本體的網(wǎng)絡(luò)設(shè)備脆弱性知識庫構(gòu)建方法。網(wǎng)絡(luò)設(shè)備脆弱性知識庫構(gòu)建包括網(wǎng)絡(luò)設(shè)備脆弱性本體的構(gòu)建、網(wǎng)絡(luò)設(shè)備脆弱性數(shù)據(jù)庫構(gòu)建及網(wǎng)絡(luò)設(shè)備和脆弱性關(guān)聯(lián)規(guī)則挖掘。
網(wǎng)絡(luò)設(shè)備脆弱性本體的構(gòu)建分為定義脆弱性類別及層次體系、定義脆弱性的屬性和設(shè)計脆弱性本體的存儲。
美國非盈利性組織MITRE創(chuàng)建并維護(hù)的通用缺陷列表(common weakness enumeration,CWE)是通用軟件和硬件缺陷類型列表,具有脆弱性詞典的性質(zhì)。美國國家脆弱性數(shù)據(jù)庫(national vulnerability database,NVD)及通用脆弱性披露(common vulnerabilities & exposures,CVE)均是采用CWE作為分類機(jī)制[10]。中國國家信息安全漏洞庫(China national vulnerability database of information security,CNNVD)分類標(biāo)準(zhǔn)也參考了CWE。
本文定義的脆弱性類別及層次體系是基于NVD和CVE所使用的CWE分類標(biāo)準(zhǔn),結(jié)合網(wǎng)絡(luò)設(shè)備脆弱性特征得到。層次更深的脆弱性類別,粒度更精細(xì)。定義的脆弱性類別及層次體系共分為3個層級。第2層級的脆弱性類別24種,第3層級42種。其中第2層級的“其他”下的第3層級脆弱性類別是未包含在原CWE分類標(biāo)準(zhǔn)中的。它們是通過分析網(wǎng)絡(luò)設(shè)備脆弱性特征,采用手動方式添加的。例如,“數(shù)據(jù)處理錯誤”不屬于其他任何脆弱性類別中;但是網(wǎng)絡(luò)設(shè)備中存在此類脆弱性,因此將它歸入“其他”類別。脆弱性類別和層次體系如圖1所示。
圖1 脆弱性類別和層次體系Fig.1 Vulnerability categories and hierarchical systems
CWE中,缺陷類型、性質(zhì)不同,屬性種類及數(shù)量也不同。本文選取具有代表性的10種屬性,作為脆弱性的屬性,見表1。
表1 脆弱性的屬性Tab.1 Properties of vulnerability
構(gòu)建的網(wǎng)絡(luò)設(shè)備脆弱性本體采用關(guān)系型數(shù)據(jù)庫SQLite存儲,將脆弱性層級關(guān)系通過Relation表中SuperCategory字段和SubCategory字段關(guān)聯(lián)在一起。SuperCategory字段存儲脆弱性父類別,SubCategory字段存儲脆弱性子類別。例如,“注入”作為子類別,則父類別為“脆弱性”;“XSS注入”作為子類別,則父類別為“注入”。父類別、子類別關(guān)系如表2所示。
表2 關(guān)系表Tab.2 Table of Relation
脆弱性數(shù)據(jù)庫構(gòu)建分為脆弱性數(shù)據(jù)獲取和數(shù)據(jù)處理2個部分。
CNNVD、NVD、CVE等權(quán)威數(shù)據(jù)庫沒有專門的網(wǎng)絡(luò)設(shè)備分類,無法從大量數(shù)據(jù)中直接獲取網(wǎng)絡(luò)設(shè)備數(shù)據(jù),網(wǎng)絡(luò)設(shè)備脆弱性數(shù)據(jù)獲取難度較大。針對上述問題,本文通過開發(fā)爬蟲工具和人工錄入2種方法來獲取脆弱性數(shù)據(jù),其中自動化的爬蟲工具為主要方式,人工錄入為輔助方式。
2.1.1 爬蟲工具設(shè)計
爬取CNNVD、NVD中網(wǎng)絡(luò)設(shè)備脆弱性數(shù)據(jù)時,每個脆弱性數(shù)據(jù)都有唯一ID與之對應(yīng),因此,可以使用ID作為脆弱性數(shù)據(jù)唯一性的判斷依據(jù)。在訪問相關(guān)脆弱性數(shù)據(jù)過程中,也只需要使用其脆弱性ID就能訪問到相關(guān)脆弱性數(shù)據(jù)。
整個爬取過程中需要維護(hù)以下2個搜索隊列:待爬隊列和已爬隊列。初始狀態(tài)下已爬隊列為空,待爬隊列中只有種子鏈接。首先取出待爬隊列中的鏈接并加入到已爬隊列,獲取鏈接指向的內(nèi)容(包含新鏈接和網(wǎng)絡(luò)設(shè)備脆弱性數(shù)據(jù))。然后對從內(nèi)容中解析出數(shù)據(jù),并進(jìn)行持久化存儲,內(nèi)容中不存在于已爬隊列的新鏈接則添加到待爬隊列。直到待爬隊列為空時,停止爬取。新鏈接進(jìn)入待爬隊列前,會先檢驗其是否存在于已爬隊列中,如果不存在,則該新鏈接進(jìn)入待爬隊列。爬取的結(jié)束條件并不是僅是待爬隊列為空時結(jié)束,當(dāng)待爬隊列中的鏈接數(shù)量達(dá)到預(yù)先設(shè)置的一個最大值的時候也會結(jié)束爬取。爬蟲算法crawler的具體步驟如下:
Step1:初始化待爬隊列和已爬隊列,添加種子鏈接到待爬隊列,設(shè)置最大鏈接數(shù)量Nmax;
Step2:若待爬隊列中鏈接數(shù)量小于Nmax,則遍歷待爬隊列中所有鏈接,獲取鏈接指向的內(nèi)容后,將鏈接添加到已爬隊列。若待爬隊列中鏈接數(shù)量大于Nmax,則算法終止;
Step3:解析鏈接指向的內(nèi)容,持久化存儲解析得到的網(wǎng)絡(luò)設(shè)備脆弱性數(shù)據(jù)。判斷解析得到的新鏈接是否存在于已爬隊列,若存在則丟棄該鏈接;若不存在則將該鏈接添加到待爬隊列。完成該步驟后,從Step 2開始繼續(xù)執(zhí)行,當(dāng)待爬隊列為空時,算法終止。
由于脆弱性數(shù)據(jù)量非常大,單進(jìn)程的爬蟲無法快速爬取大量數(shù)據(jù),因此本文設(shè)計并發(fā)爬蟲工具,實現(xiàn)并發(fā)數(shù)據(jù)爬取功能,提高數(shù)據(jù)爬取效率。并發(fā)爬蟲工具采用主從模式,即包含主節(jié)點和從節(jié)點。主節(jié)點負(fù)責(zé)維護(hù)整個爬蟲的待爬隊列以及任務(wù)分配工作,從節(jié)點負(fù)責(zé)接受主節(jié)點委派任務(wù)。每個從節(jié)點都需要維護(hù)2個隊列:一個是任務(wù)隊列,存放主節(jié)點分配的鏈接;另一個是新鏈接隊列,存放爬取獲得的鏈接。從節(jié)點的工作方式與crawler算法描述類似,但當(dāng)從節(jié)點完成了其任務(wù)隊列后會將其新鏈接隊列合并到主節(jié)點的待爬隊列。同時,主節(jié)點繼續(xù)將待爬隊列的鏈接委派到各個從節(jié)點,由從節(jié)點繼續(xù)爬取新數(shù)據(jù)。并發(fā)爬蟲算法concurrent crawler具體步驟如下。
Step1:設(shè)置單個進(jìn)程分配的鏈接數(shù)N,并發(fā)線程數(shù)M。主節(jié)點線程初始化待爬隊列和已爬隊列,添加種子鏈接到待爬隊列。每個從節(jié)點初始化各自的任務(wù)隊列和新鏈接隊列。設(shè)置最大鏈接數(shù)量Nmax;
Step2:若待爬隊列中鏈接數(shù)量大于Nmax,則算法終止;反之則主節(jié)點從待爬隊列取出M×N個鏈接,分配給M個從節(jié)點,每個從節(jié)點被分配N個鏈接。從節(jié)點接收主節(jié)點分配的鏈接,將鏈接添加到任務(wù)隊列;
Step3:從節(jié)點遍歷其任務(wù)隊列中所有鏈接,并獲取鏈接指向的內(nèi)容,然后將鏈接發(fā)送給主節(jié)點,主節(jié)點將鏈接添加到已爬隊列;
Step4:從節(jié)點解析鏈接指向的內(nèi)容,持久化存儲解析得到的網(wǎng)絡(luò)設(shè)備脆弱性數(shù)據(jù)。解析得到的新鏈接被添加到其新鏈接隊列,從節(jié)點將新鏈接隊列發(fā)送給主節(jié)點;
Step5:主節(jié)點接收從節(jié)點發(fā)送來的新鏈接隊列,然后遍歷新鏈接隊列,判斷每條新鏈接是否存在于已爬隊列,若不存在則將該鏈接添加到待爬隊列,存在則丟棄。完成該步驟后,從Step 2開始繼續(xù)執(zhí)行,當(dāng)待爬隊列為空時,算法終止。
2.1.2 人工錄入
人工錄入用于擴(kuò)充設(shè)備脆弱性數(shù)據(jù)庫。為使脆弱性數(shù)據(jù)庫中的數(shù)據(jù)盡可能完整豐富,需要從CNVD、CVE等權(quán)威數(shù)據(jù)庫以及第三方脆弱性數(shù)據(jù)庫檢索網(wǎng)絡(luò)設(shè)備脆弱性數(shù)據(jù),人工錄入脆弱性數(shù)據(jù)庫。
數(shù)據(jù)處理的方法分為以下2種:補(bǔ)全數(shù)據(jù)、刪除數(shù)據(jù)。
通過2.1節(jié)中的方法得到了脆弱性數(shù)據(jù),但部分?jǐn)?shù)據(jù)的脆弱性類別屬性采用CNNVD分類標(biāo)準(zhǔn),與本文所使用的標(biāo)準(zhǔn)不同,因此,無法直接將脆弱性數(shù)據(jù)與本文定義的脆弱性類別及層次體系關(guān)聯(lián)起來。針對該問題,需要使用補(bǔ)全數(shù)據(jù)的方法來處理數(shù)據(jù)。初步得到的脆弱性數(shù)據(jù)包含CVE編號,在NVD中檢索CVE編號可以得到脆弱性數(shù)據(jù)對應(yīng)的CWE編號,就能與具體的脆弱性類別對應(yīng)起來,從而將脆弱性數(shù)據(jù)與建立的脆弱性類別及層次體系關(guān)聯(lián)起來。
因為重復(fù)數(shù)據(jù)只需要保留一條,而缺少關(guān)鍵屬性的數(shù)據(jù)無法進(jìn)行關(guān)聯(lián)規(guī)則挖掘,所以處理重復(fù)數(shù)據(jù)和缺少CVE編號、受影響設(shè)備等關(guān)鍵屬性的數(shù)據(jù)時,采用刪除數(shù)據(jù)的方法來處理數(shù)據(jù)。數(shù)據(jù)處理完成后,共得到數(shù)據(jù)743條。網(wǎng)絡(luò)設(shè)備脆弱性數(shù)據(jù)庫如圖2所示。
Apriori算法是一種具有良好性能的經(jīng)典關(guān)聯(lián)規(guī)則挖掘算法[11],挖掘數(shù)據(jù)潛在規(guī)律對于決策制定具有重要參考價值[12]。
Apriori算法有7個主要實現(xiàn)步驟[13]:掃描、計數(shù)、比較、產(chǎn)生頻繁項集、連接、剪枝、產(chǎn)生強(qiáng)關(guān)聯(lián)規(guī)則[14]。本文構(gòu)建的脆弱性數(shù)據(jù)庫包含大量無粒度、無層級的數(shù)據(jù),但網(wǎng)絡(luò)設(shè)備脆弱性存在概念上的層級關(guān)系。Apriori算法通過迭代獲取頻繁項集,并過濾掉不滿足最小支持度的項集。上述2種原因會造成關(guān)聯(lián)分析時的信息丟失,可能會造成潛在的關(guān)聯(lián)規(guī)則無法被發(fā)掘[15]。例如,分析某一型號網(wǎng)絡(luò)設(shè)備上“注入”與“內(nèi)存范圍內(nèi)的操作不恰當(dāng)”之間的關(guān)系,而脆弱性數(shù)據(jù)庫中僅存在 “注入”“典型緩沖區(qū)溢出”“越界寫入”等脆弱性數(shù)據(jù)。參照圖1可知,“注入”屬于第2層脆弱性類別,為第2層脆弱性“內(nèi)存范圍內(nèi)的操作不恰當(dāng)”的子類別?!暗湫途彌_區(qū)溢出”和“越界寫入”屬于第3層脆弱性類別。由于脆弱性類別的支持度不夠,因此可能挖掘不到“注入”與“內(nèi)存范圍內(nèi)的操作不恰當(dāng)”之間的關(guān)聯(lián)關(guān)系。
由于關(guān)聯(lián)規(guī)則挖掘時存在Apriori算法的不足,因此本文提出基于網(wǎng)絡(luò)設(shè)備脆弱性本體的關(guān)聯(lián)規(guī)則挖掘方法。通過引入脆弱性領(lǐng)域語義知識,在數(shù)據(jù)挖掘的數(shù)據(jù)預(yù)處理階段,基于網(wǎng)絡(luò)設(shè)備脆弱性本體,在多層泛化的基礎(chǔ)上進(jìn)行挖掘,即將數(shù)據(jù)庫中低層級的脆弱性數(shù)據(jù)提升為高層級的脆弱性數(shù)據(jù),從而提高項集支持度,進(jìn)而得到更多有意義的潛在關(guān)聯(lián)規(guī)則。
具體實現(xiàn)時,需在挖掘關(guān)聯(lián)規(guī)則前,遍歷網(wǎng)絡(luò)設(shè)備脆弱性數(shù)據(jù)庫中的所有數(shù)據(jù),篩選出所有脆弱性類別是第3層的數(shù)據(jù)。通過網(wǎng)絡(luò)設(shè)備脆弱性本體,將這些位于第3層脆弱性類別的數(shù)據(jù)提升為其對應(yīng)的第2層脆弱性類別。如數(shù)據(jù)庫中存在一條CVE編號為CVE-2019-10892的數(shù)據(jù),顯示網(wǎng)絡(luò)設(shè)備d-link DIR-806存在CWE-119類別的脆弱性,通過表1可以得出CWE-119為“典型緩沖區(qū)溢出”。通過圖1可知其屬于第3層脆弱性類別,根據(jù)表2可得出其父類別為“內(nèi)存范圍內(nèi)的操作不恰當(dāng)”,因此可將“典型緩沖區(qū)溢出”更改為其第2層脆弱性類別,即“內(nèi)存范圍內(nèi)的操作不恰當(dāng)”,從而提高了“內(nèi)存范圍內(nèi)的操作不恰當(dāng)”的支持度,最后就可能出現(xiàn)與其有關(guān)的關(guān)聯(lián)規(guī)則。
實驗以網(wǎng)絡(luò)設(shè)備脆弱性數(shù)據(jù)庫為數(shù)據(jù)源,基于網(wǎng)絡(luò)設(shè)備脆弱性本體進(jìn)行網(wǎng)絡(luò)設(shè)備和脆弱性關(guān)聯(lián)規(guī)則挖掘,包含網(wǎng)絡(luò)設(shè)備關(guān)聯(lián)規(guī)則挖掘和脆弱性關(guān)聯(lián)規(guī)則挖掘2個實驗。
2個實驗的結(jié)果對比指標(biāo)均使用xsup、xsup′、yconf、yconf′、xsup_amp、yconf_amp。xsup表示未基于本體挖掘的項集支持度,xsup′表示基于本體挖掘的項集支持度;yconf表示未基于本體挖掘的規(guī)則置信度,yconf′表示基于本體挖掘的規(guī)則置信度;xsup_amp表示基于本體挖掘的項集支持度相比未基于本體挖掘的項集支持度增幅,yconf_amp表示基于本體挖掘的規(guī)則置信度相比未基于本體挖掘的規(guī)則置信度增幅。
網(wǎng)絡(luò)設(shè)備脆弱性數(shù)據(jù)庫數(shù)據(jù)來源:通過爬蟲工具爬取CNNVD、NVD中屬于網(wǎng)絡(luò)設(shè)備的脆弱性數(shù)據(jù);人工錄入其他脆弱性數(shù)據(jù)庫(CNVD等)中屬于網(wǎng)絡(luò)設(shè)備的脆弱性數(shù)據(jù)。數(shù)據(jù)的提交時間范圍為2001年9月至2020年8月,數(shù)據(jù)總量為743條。網(wǎng)絡(luò)設(shè)備數(shù)據(jù)庫中數(shù)據(jù)詳細(xì)描述如下。
根據(jù)設(shè)備廠商統(tǒng)計脆弱性數(shù)據(jù)。Huawei 57條、D-Link 440條、Tenda 79條、TP-Link 168條、ZTE 10條、Mercury 10條、Mi 12條。由于一條脆弱性數(shù)據(jù)可能涉及到多個廠商的設(shè)備,因此各廠商設(shè)備脆弱性數(shù)據(jù)的簡單相加,不等于數(shù)據(jù)庫中脆弱性數(shù)據(jù)總量。根據(jù)脆弱性類別統(tǒng)計脆弱性數(shù)據(jù)。詳細(xì)脆弱性類別統(tǒng)計如圖3所示。
圖3 脆弱性類別統(tǒng)計Fig.3 Vulnerability category statistics
注入(CWE-74)4條、命令注入(CWE-77)33條、操作系統(tǒng)命令注入(CWE-78)80條、XSS注入(CWE-79)70條、SQL注入(CWE-89) 8條、XML注入(CWE-91)2條、代碼注入(CWE-94)3條;輸入驗證不正確(CWE-20)60條;典型緩沖區(qū)溢出(CWE-119)70條、沒有檢查輸入大小的緩沖區(qū)復(fù)制(CWE-120)11條、越界寫入(CWE-787)9條;信息暴露(CWE-200)35條、在日志中包含敏感信息(CWE-532)2條;身份驗證不正確(CWE-287)57條、訪問控制不當(dāng)(CWE-284)9條、授權(quán)不當(dāng)(CWE-285)5條、通過捕獲-重放進(jìn)行身份驗證繞過(CWE-294)1條、證書驗證不當(dāng)(CWE-295)4條、缺少關(guān)鍵函數(shù)的驗證(CWE-306)6條、對過多身份驗證嘗試的限制不當(dāng)(CWE-307)2條、憑據(jù)保護(hù)不足(CWE-522)13條、忘記密碼的弱密碼恢復(fù)機(jī)制(CWE-640)1條、使用硬編碼憑證(CWE-798)24條;缺少敏感數(shù)據(jù)的加密(CWE-311)1條、敏感信息的明文存儲(CWE-312)2條、敏感信息的明文傳輸(CWE-319)1條;權(quán)限管理不當(dāng)(CWE-269)4條;使用損壞或有風(fēng)險的密碼算法(CWE-327)1條;偽隨機(jī)數(shù)生成器中種子的錯誤使用(CWE-331)1條、使用加密偽隨機(jī)數(shù)生成器(CWE-338)2條;密碼簽名的不正確驗證(CWE-347)1條、跨站請求偽造(CWE-352)41條;有效生存期后缺少資源釋放(CWE-772)2條;HTTP請求走私(CWE-444)1條;會話固定(CWE-384)2條、服務(wù)端請求偽造(CWE-918)2條、對已渲染的UI層或框架的限制不當(dāng)(CWE-1021)1條;不安全的默認(rèn)資源初始化(CWE-1188)3條;不受限制地上傳危險類型文件(CWE-434)3條;路徑遍歷(CWE-22)24條;關(guān)鍵資源的錯誤權(quán)限分配(CWE-732)2條、不正確的默認(rèn)權(quán)限(CWE-276)3條;空指針解除引用(CWE-476)1條;加密強(qiáng)度不足(CWE-326)5條;無限循環(huán)(CWE-835)1條;缺少授權(quán)(CWE-862)2條;錯誤的授權(quán)(CWE-863)錯誤的授權(quán)3條;其他(CWE-other)40條、數(shù)據(jù)處理錯誤(CWE-19)2條、憑證管理錯誤(CWE-225)13條、特權(quán)及訪問控制(CWE-264)20條、密碼問題(CWE-310)3條、密鑰管理錯誤(CWE-320)1條、資源管理錯誤(CWE-399)6條、不正確比較(CWE-697)2條;缺乏脆弱性分類信息(CWE-noinfo)38條。
本實驗創(chuàng)建網(wǎng)絡(luò)設(shè)備關(guān)聯(lián)分析工程,根據(jù)創(chuàng)建的網(wǎng)絡(luò)設(shè)備脆弱性數(shù)據(jù)庫挖掘同一脆弱性類別出現(xiàn)在不同網(wǎng)絡(luò)設(shè)備上的關(guān)系。即如果網(wǎng)絡(luò)設(shè)備X上出現(xiàn)A類脆弱性,那么網(wǎng)絡(luò)設(shè)備Y上出現(xiàn)A類脆弱性的概率?;诒倔w的關(guān)聯(lián)規(guī)則將脆弱性類別提升至第2層,然后創(chuàng)建挖掘結(jié)構(gòu),進(jìn)行關(guān)聯(lián)分析。
實驗設(shè)置最小支持度為0.11(xmin= 0.11),最小置信度為0.6(ymin=0.6)。表3、4分別列出了實驗結(jié)果。
表3 網(wǎng)絡(luò)設(shè)備項集支持度對比Tab.3 Comparison of network device itemsets support
表4 網(wǎng)絡(luò)設(shè)備關(guān)聯(lián)規(guī)則置信度對比Tab.4 Comparison of network device association rules confidence
表3、4結(jié)果表明,基于本體的挖掘?qū)W(wǎng)絡(luò)設(shè)備項集支持度、關(guān)聯(lián)規(guī)則置信度有明顯提升,同時出現(xiàn)了新增的項集,如表3中項集1。由于新的項集的出現(xiàn),挖掘出了新的關(guān)聯(lián)規(guī)則,如表4中規(guī)則1。該規(guī)則表明TP-LINK TL-WR742N和TP-LINK TL-WR842N這2個設(shè)備如果同時存在某一類別的脆弱性,那么Mercury-MAC1200R存在該類別脆弱性的概率為85.7%。針對新出現(xiàn)的規(guī)則1,對其進(jìn)行驗證。在網(wǎng)絡(luò)設(shè)備脆弱性數(shù)據(jù)庫中檢索TP-LINK TL-WR742N和TP-LINK TL-WR842N這2種網(wǎng)絡(luò)設(shè)備,發(fā)現(xiàn)它們存在“XSS注入”,根據(jù)關(guān)聯(lián)規(guī)則預(yù)測,Mercury-MAC1200R有85.7%的概率存在該脆弱性類別。經(jīng)過測試,發(fā)現(xiàn)在該設(shè)備配置網(wǎng)頁內(nèi)多個文本框存在“XSS注入”。
總體而言,使用網(wǎng)絡(luò)設(shè)備脆弱性本體后,產(chǎn)生了新項集52項、新關(guān)聯(lián)規(guī)則31條。由此可見,使用本體后,能夠挖掘出更多潛在網(wǎng)絡(luò)設(shè)備關(guān)聯(lián)規(guī)則,它們對不同網(wǎng)絡(luò)設(shè)備的同類別脆弱性分析和預(yù)測具有指導(dǎo)作用。
本實驗創(chuàng)建脆弱性關(guān)聯(lián)分析工程,同樣使用創(chuàng)建的網(wǎng)絡(luò)設(shè)備脆弱性數(shù)據(jù)庫作為關(guān)聯(lián)規(guī)則挖掘的數(shù)據(jù)集,挖掘同一網(wǎng)絡(luò)設(shè)備出現(xiàn)不同脆弱性的關(guān)系,即如果網(wǎng)絡(luò)設(shè)備X上出現(xiàn)A類脆弱性,那么出現(xiàn)B類脆弱性的概率。基于本體的關(guān)聯(lián)規(guī)則將脆弱性類別提升至第2層,然后創(chuàng)建挖掘結(jié)構(gòu),進(jìn)行關(guān)聯(lián)分析。
實驗設(shè)置的最小支持度為0.02(xmin=0.02),最小置信度為0.6(ymin=0.6)。表5、6分別列出了實驗結(jié)果。
表5 脆弱性項集支持度對比Tab.5 Comparison of vulnerability itemsets support
表6 脆弱性關(guān)聯(lián)規(guī)則置信度對比Tab.6 Comparison of vulnerability association rules confidence
表5、6結(jié)果表明,基于本體的挖掘?qū)Υ嗳跣皂椉С侄?、關(guān)聯(lián)規(guī)則置信度有明顯提升,同時也出現(xiàn)了新增的項集,如表5中項集4。觀察表6可以發(fā)現(xiàn),由于新的項集的出現(xiàn),因此挖掘出了新的關(guān)聯(lián)規(guī)則,如表6中規(guī)則4。該規(guī)則表明如果某網(wǎng)絡(luò)設(shè)備存在“內(nèi)存緩沖范圍內(nèi)操作不恰當(dāng)”和“信息暴露”,那么該網(wǎng)絡(luò)設(shè)備存在“注入”的概率為72.7%。針對置信度最高的規(guī)則3,對其進(jìn)行驗證。在設(shè)備脆弱性數(shù)據(jù)庫檢索同時存在“身份驗證不正確”和“加密強(qiáng)度不足”的網(wǎng)絡(luò)設(shè)備,找到D-Link DIR-816。根據(jù)關(guān)聯(lián)規(guī)則3,該設(shè)備存在“數(shù)據(jù)真實性驗證不足”的概率為87.5%。經(jīng)過測試,發(fā)現(xiàn)該設(shè)備存在“跨站請求偽造”,該脆弱性類別屬于“數(shù)據(jù)真實性驗證不足”的子類別。
總體而言,使用網(wǎng)絡(luò)設(shè)備脆弱性本體后,產(chǎn)生了新項集53項,新關(guān)聯(lián)規(guī)則45條。由此可見,使用本體后,能夠挖掘出更多潛在脆弱性關(guān)聯(lián)規(guī)則,它們對同種網(wǎng)絡(luò)設(shè)備的不同類別脆弱性分析和預(yù)測具有指導(dǎo)作用。
本文針對網(wǎng)絡(luò)設(shè)備脆弱性分析與預(yù)測,提出基于本體的設(shè)備脆弱性知識庫構(gòu)建方法,該方法包括建立網(wǎng)絡(luò)設(shè)備脆弱性本體、構(gòu)建網(wǎng)絡(luò)設(shè)備脆弱性數(shù)據(jù)庫及基于本體的網(wǎng)絡(luò)設(shè)備和脆弱性關(guān)聯(lián)分析。構(gòu)建網(wǎng)絡(luò)設(shè)備脆弱性時,通過設(shè)計開發(fā)并發(fā)爬蟲工具,解決數(shù)據(jù)量大時,傳統(tǒng)爬蟲工具效率低下的問題。關(guān)聯(lián)規(guī)則挖掘時,采用基于網(wǎng)絡(luò)設(shè)備脆弱性本體的關(guān)聯(lián)規(guī)則挖掘,提升項集支持度以得到更多的潛在關(guān)聯(lián)規(guī)則,提高挖掘效率。實驗證明構(gòu)建的網(wǎng)絡(luò)設(shè)備脆弱性知識庫中包含更多網(wǎng)絡(luò)設(shè)備和脆弱性之間的關(guān)聯(lián)規(guī)則,根據(jù)關(guān)聯(lián)規(guī)則可以對網(wǎng)絡(luò)設(shè)備脆弱性進(jìn)行有效分析與預(yù)測。未來的工作將致力于網(wǎng)絡(luò)設(shè)備脆弱性本體的優(yōu)化,使其更符合網(wǎng)絡(luò)設(shè)備脆弱性的特征;擴(kuò)充網(wǎng)絡(luò)設(shè)備脆弱數(shù)據(jù)庫,挖掘出更多關(guān)聯(lián)規(guī)則。