設(shè)備系統(tǒng)漏洞是導(dǎo)致系統(tǒng)風(fēng)險(xiǎn)、網(wǎng)絡(luò)攻擊等安全事件頻繁發(fā)生的重要原因,目前企業(yè)IT系統(tǒng)主要以傳統(tǒng)的漏洞檢查工具對系統(tǒng)漏洞進(jìn)行檢查,而傳統(tǒng)的漏洞檢查工具采用遠(yuǎn)程方式發(fā)現(xiàn)漏洞,在發(fā)現(xiàn)的準(zhǔn)確性、及時(shí)性和安全性上有較大隱患,而且錯(cuò)報(bào)、誤報(bào)和影響業(yè)務(wù)正常運(yùn)行的現(xiàn)象普遍存在,本文采用智能漏洞分析算法核查設(shè)備全量漏洞,實(shí)現(xiàn)了漏洞檢測從“掃描”到“檢查”質(zhì)的飛躍,在漏洞發(fā)現(xiàn)的準(zhǔn)確性、發(fā)現(xiàn)速度的及時(shí)性上都有巨大提升。
本文研究的全量漏洞核查方法架構(gòu)流程如圖1所示,采用類搜索引擎的分布式網(wǎng)絡(luò)爬蟲技術(shù),獲取包括權(quán)威漏洞發(fā)布網(wǎng)站、原廠安全公告和專業(yè)安全公司等來源的海量漏洞信息。建立能夠?qū)β┒催M(jìn)行精準(zhǔn)智能分析的、可靈活拓展的漏洞智能分析引擎,并在每個(gè)漏洞基本信息的基礎(chǔ)上補(bǔ)充自動(dòng)化分析信息。通過大規(guī)模分布式并行采集引擎,自動(dòng)化批量采集現(xiàn)網(wǎng)資產(chǎn)信息。由系統(tǒng)漏洞智能分析引擎對采集到的各類信息進(jìn)行統(tǒng)一處理分析,綜合分析漏洞存在情況。最后,對漏洞分布情況進(jìn)行多維度、全方位的展現(xiàn)。
相比于傳統(tǒng)漏洞核查工具外圍探測方式進(jìn)行掃描的方式,本文方法具備準(zhǔn)確性高、不影響網(wǎng)絡(luò)環(huán)境、對被查設(shè)備無影響、檢查范圍廣泛、檢查效率高等諸多優(yōu)勢。
圖1 整體架構(gòu)流程圖
圖2 漏洞庫架構(gòu)
漏洞庫架構(gòu)如圖2所示。
采用類搜索引擎的分布式網(wǎng)絡(luò)爬蟲技術(shù)分布式定期并發(fā)爬取NVD、CNNVD、CNVD等權(quán)威漏洞庫和SecurityFocus等專業(yè)安全廠家發(fā)布的漏洞信息,對于NVD的漏洞信息可通過解析各漏洞文檔對應(yīng)的XML來自動(dòng)獲取,NVD漏洞庫提供XML格式的漏洞庫下載,各漏洞格式以及漏洞信息都已標(biāo)準(zhǔn)化。對于CNVD發(fā)布的漏洞信息,需要通過網(wǎng)絡(luò)爬蟲獲取漏洞網(wǎng)頁,然后對漏洞網(wǎng)頁進(jìn)行解析,生成對應(yīng)的漏洞信息。
在程序自動(dòng)獲取漏洞的過程,在下載漏洞信息之前需要判斷漏洞庫中是否已經(jīng)包含了該條漏洞,判斷的依據(jù)就是和漏洞庫中的CVE字段進(jìn)行比較。如果發(fā)現(xiàn)漏洞庫中已經(jīng)包含了該CVE名稱的漏洞信息,則認(rèn)為是重復(fù)條目而不進(jìn)行下載。采集工作業(yè)務(wù)流程如圖3所示。
漏洞信息分析處理過程將采集的各類漏洞信息進(jìn)行整理、優(yōu)化、補(bǔ)全,最終形成經(jīng)過歸納的、高質(zhì)量的、精簡的安全漏洞信息,并存入安全漏洞信息數(shù)據(jù)庫。
將爬取到的描述信息以CVE編號為唯一標(biāo)志進(jìn)行合并,形成 NVD、CNNVD、CNVD、SecurityFocus等網(wǎng)站描述漏洞信息的合集。
圖3 漏洞信息采集業(yè)務(wù)流程
對于使用非機(jī)讀方式輸出的漏洞信息,對其進(jìn)行中文自然語言處理,解析其中的關(guān)鍵因素。
刪除合并后的漏洞描述信息中相同的字段。
篩選漏洞描述信息,選擇其中重要的字段,作為漏洞描述信息。漏洞描述信息包括:漏洞名稱、ULTRA編號(新增定義的漏洞編號)、CVE編號、發(fā)布日期、更新日期、嚴(yán)重級別、漏洞類型、威脅類型、漏洞描述、解決方案、參考連接、漏洞檢查方法(新增)等。
漏洞檢查方法定義流程:
1.查閱官方網(wǎng)站安全公告;
2.定義變量;
3.定義函數(shù);
4.建立檢查公式。
新建漏洞核查任務(wù),選擇需要進(jìn)行漏洞核查的設(shè)備,并發(fā)連接登錄設(shè)備,采集設(shè)備信息。如文件內(nèi)容、進(jìn)程、服務(wù)、軟件、端口、補(bǔ)丁等信息。
建立漏洞核查任務(wù),選擇被檢查設(shè)備,確定漏洞核查任務(wù)的檢查范圍,并獲取被檢查設(shè)備登錄信息(設(shè)備類型、IP地址、帳號名、密碼)等。
使用步驟S201獲取到的設(shè)備登錄信息,多臺采集服務(wù)器采用分布式的方式并發(fā)建立到被檢查設(shè)備的網(wǎng)絡(luò)連接,登錄被檢查設(shè)備。支持多種連接協(xié)議,包括Telnet/SSH和RDP等。
登錄設(shè)備成功后需要判斷設(shè)備類型,進(jìn)而執(zhí)行信息采集腳本。
采集腳本按照設(shè)備類型分別編寫,根據(jù)核查任務(wù)中所選擇的設(shè)備的類型,自動(dòng)匹配執(zhí)行腳本。采集腳本分為七類:版本、文件、進(jìn)程、服務(wù)、軟件、端口、補(bǔ)丁等。
采集服務(wù)器將采集結(jié)果返回到漏洞解析服務(wù)器。根據(jù)采集服務(wù)器采集到的字段信息,調(diào)用RMI(遠(yuǎn)程接口調(diào)用)方法,把分析結(jié)果保存到數(shù)據(jù)庫,發(fā)送消息給采集服務(wù)器,告知采集完畢。
采集服務(wù)器完成數(shù)據(jù)采集任務(wù)后,斷開與被檢查設(shè)備的網(wǎng)絡(luò)連接。
匯總建立的漏洞庫和采集的設(shè)備信息,根據(jù)采集到的產(chǎn)品信息對漏洞逐條匹配,最終得到設(shè)備包含的漏洞列表全集。
1.解析腳本回顯,獲取關(guān)鍵字段。
2.獲取漏洞檢查方法。
3.核查漏洞。將解析結(jié)果作為函數(shù)變量,由檢查方法處理,得到漏洞核查結(jié)果。
4.返回核查結(jié)果。檢查方法執(zhí)行結(jié)果為是否存在編號漏洞的布爾值。將執(zhí)行結(jié)果返回,存入數(shù)據(jù)庫,生成結(jié)果報(bào)表,展現(xiàn)核查結(jié)果。
圖4 漏洞歸并圖解
因全量漏洞發(fā)現(xiàn)的漏洞數(shù)量很多,部分Linux和Solaris設(shè)備發(fā)現(xiàn)的漏洞數(shù)量達(dá)數(shù)百甚至上千,漏洞確認(rèn)的工作量較大。為應(yīng)對這種情況,系統(tǒng)增加了漏洞活躍性判斷和按原廠公告歸并的功能,將不活躍的漏洞歸類為潛在漏洞,如圖4所示。
根據(jù)漏洞基本信息,并從業(yè)務(wù)系統(tǒng)、設(shè)備類型、產(chǎn)品類型等多個(gè)角度,多層次的展現(xiàn)檢查結(jié)果,用戶可以了解不同業(yè)務(wù)系統(tǒng)的漏洞分布情況、不同設(shè)備類型和產(chǎn)品類型的漏洞數(shù)量。
某電信運(yùn)營商企業(yè)省公司抽取23個(gè)業(yè)務(wù)系統(tǒng)共261臺設(shè)備進(jìn)行漏洞檢查,發(fā)現(xiàn)高危漏洞1647個(gè),中危漏洞4673個(gè),低危漏洞1270個(gè),潛在漏洞18204個(gè)。與同類產(chǎn)品對比發(fā)現(xiàn)漏洞發(fā)現(xiàn)數(shù)量普遍達(dá)到7倍以上,檢查效率提高2倍以上,目前本文方案已開始在某電信運(yùn)營商集團(tuán)及各省公司推廣使用。
本文方案通過對漏洞的信息采集,建立一套完整的漏洞信息數(shù)據(jù)庫,再充分利用網(wǎng)絡(luò)通路和設(shè)備帳號信息,直接登錄設(shè)備進(jìn)行檢查,彌補(bǔ)了現(xiàn)有的漏洞核查方法檢查結(jié)果不準(zhǔn)確,誤報(bào)、漏報(bào)率高的缺點(diǎn),可以全面準(zhǔn)確的獲取所有設(shè)備類型的漏洞信息,完全不影響業(yè)務(wù)系統(tǒng)正常運(yùn)行,不會(huì)造成網(wǎng)絡(luò)阻塞,更不會(huì)占用大量硬件資源而導(dǎo)致系統(tǒng)拒絕服務(wù)。掃描效率高,經(jīng)過和其他常見漏洞工具對比,發(fā)現(xiàn)的漏洞數(shù)量提高約7倍,掃描效率提高約2倍,適合于高頻次的漏洞核查,節(jié)省大量用于檢查的人力和管理成本,避免檢查過程中人為因素造成的不準(zhǔn)確和標(biāo)準(zhǔn)不統(tǒng)一問題,保證核查結(jié)果的準(zhǔn)確性和客觀性。