曲瀧玉, 賈依真, 郝永樂
(中國信息安全測評中心,北京 100085)
隨著互聯(lián)網的飛速發(fā)展,人工智能、云計算、大數(shù)據等技術層出不窮,個人乃至社會對于信息化技術的依賴程度日趨加深,進而導致大量數(shù)據泄露、網絡攻擊、木馬傳播等信息安全事件頻頻爆發(fā),給經濟、政治、文化等諸多領域帶來了嚴重威脅,網絡空間安全形勢的嚴峻性不容忽視. 然而,導致網絡安全問題產生的主要根源在于網絡信息系統(tǒng)存在的安全漏洞. 安全漏洞是計算機信息系統(tǒng)在需求、設計、實現(xiàn)、配置、運行等過程中,有意或無意產生的缺陷[1]. 網絡攻擊者可以利用漏洞對計算機系統(tǒng)進行攻擊和破壞,從而影響計算機信息系統(tǒng)的正常運行. 據國家信息安全漏洞庫(CNNVD)統(tǒng)計,截至2018年6月,CNNVD收錄的信息安全漏洞已達110 000余個,其中危害等級在中危及以上漏洞占比達93%,近5年新增漏洞數(shù)量總體呈上升趨勢[2]. 基于已有基數(shù)龐大的漏洞信息,關于漏洞自動化分類模型的研究具有非常重大的研究意義和應用價值,主要體現(xiàn)在以下兩方面:一方面,針對不同類型的漏洞,按其危害等級采取分類應急措施方案,從而降低漏洞管理與系統(tǒng)維護成本,提高漏洞銷控的及時性;另一方面,不同類型的漏洞對信息系統(tǒng)所造成的危害程度不同,通過從現(xiàn)有大量漏洞描述中提取不同類型的漏洞特征屬性,進而為未知漏洞的發(fā)現(xiàn)及解決方案的建立提供前瞻性的預警分析[3].
對于漏洞信息來說,除漏洞編碼之外,漏洞描述是區(qū)分信息安全漏洞的重要載體,以“短文本”的形式描述了該漏洞的漏洞宿主、產生原因、存在位置、受影響范圍等,是人們對于漏洞信息認知和修復的最直接的信息來源. 近幾年,有關深度學習在文本分類方面的技術應用已廣泛展開深入探索,并取得了一定的研究成果. Conneau等[4]在Y.Kim研究的基礎上提出一種深度卷積神經網絡模型進行文本分類;杜昌順等[5]提出了使用分段卷積神經網絡來進行文本情感分析.
基于以上研究基礎,一部分信息安全領域研究學者嘗試將機器學習方法應用在漏洞自動分類當中,使用該方法可在一定程度上提高分類效率,避免手工分類的誤操作. Li[6]提出一種SOM聚類方法對漏洞信息進行無監(jiān)督分類;Chen等[7]提出了一種基于支持向量機(SVM)的漏洞自動分類模型,可對漏洞信息進行分類、推廣和預測;廖曉鋒等[8]提出一種隱含Dirichlet分布主題模型(LDA)和支持向量機(SVM)相結合的方法,在主題向量空間構建一個自動漏洞分類器,其準確度提高8%. 其中,絕大部分研究工作以國外漏洞庫的漏洞信息作為實驗數(shù)據,僅在詞匯向量空間層面構建漏洞分類模型,不足以應對國內信息安全漏洞分類需求.
為了更加適用于國內漏洞的分析研究,并在已有的基礎上提高分類效率,本文以國家信息安全漏洞庫(以下簡稱“CNNVD”)的漏洞信息作為實驗數(shù)據,建立基于CNN和文本語義的漏洞自動分類模型. 通過自動化判定威脅類型,進一步對危害級別較高、影響較為嚴重的安全漏洞,及時快速開展預警通報和修復消控,從而提高漏洞處置效力.
根據漏洞的多方面屬性,目前國內外針對多個維度已形成不同的漏洞分類標準,主要有3大類,分別為基于利用位置的分類,基于生命周期的分類和基于技術類型的分類. 本文漏洞分類研究工作從技術類型的角度出發(fā),采用了CNNVD漏洞分類標準. 該標準將信息安全漏洞按照其形成原因及危害影響劃分為5個層次26種類型,判別漏洞類型時可根據漏洞類型的層次關系,按照包含關系依次分別是:配置錯誤、代碼問題、資源管理錯誤、數(shù)字錯誤、信息泄露、競爭條件、輸入驗證、緩沖區(qū)錯誤、格式化字符串、跨站腳本、路徑遍歷、后置鏈接、SQL注入、注入、代碼注入、命令注入、操作系統(tǒng)命令注入、安全特征問題、授權問題、信任管理、加密問題、未充分驗證數(shù)據可靠性、跨站請求偽造、權限許可和訪問控制、訪問控制錯誤、資料不足. 目前,CNNVD所有收錄的漏洞信息均按照上述標準進行分類.
卷積神經網絡是一種深度監(jiān)督學習下的機器學習模型,具備善于挖掘數(shù)據局部特征、適應性強的特點,是近幾年計算機視覺、語音識別等眾多科學領域的研究熱點之一,并逐步在自然語言處理中得到廣泛應用.
卷積神經網絡的基本結構由輸入層、卷積層(convolution)、池化層(pooling)、全連接層及輸出層構成[9-12]. 其中,卷積層是特征提取的重要模塊,由多個特征映射圖組成,其主要特點是局部感知和權重共享. 卷積層的神經元通過卷積核(kernel)與上一層特征面的局部區(qū)域相連,由卷積核在整個特征映射圖(feature map)上進行卷積,捕捉整個圖像或者文本的特征. 而卷積核有深淺之分,淺層卷積核捕捉的是弱抽象類特征,如圖像邊緣,文本某個詞的類別等. 隨著層數(shù)增多,非線性程度開始增強,卷積后得到的是較深層次的抽象特征,如圖像中的具有某些特定形狀的物體或者文本中上下文的關系等. 每一層的卷積輸出都是對輸入信息特征的進一步提取和整合. 池化層位于卷積層之后,同樣由多個特征映射圖組成,并與上一層一一映射. 池化層用于獲取圖像或文本中最有價值的信息片段,忽略對模型有少量促進甚至抑制的信息. 從而在保留顯著的特征信息的基礎上有效降低輸出結果的維度,減小了網絡規(guī)模和參數(shù)的作用,防止過擬合. 全連接層是將每一層結點都與上一層的所有結點相連,綜合以上提取的全部特征. 為防止此層參數(shù)過多而導致過擬合,多數(shù)網絡中在全連接后加入dropout層隨機對參數(shù)進行舍棄不更新,以一定概率將全連接隱層結點的值設為0[11].
本文采用CNN模型針對漏洞描述的短文本進行安全漏洞分類. 把漏洞分類模型分為3個模塊:文本詞向量預處理模塊;包含卷積層和池化層的特征提取模塊;回歸分類模塊. 結合CNN和文本語義的漏洞分類流程如圖1所示.
圖1 基于CNN的漏洞分類流程Fig.1 The process of vulnerability classification based on CNN
第一部分是詞向量預處理模塊,對輸入的漏洞文本數(shù)據進行預處理,包括分詞與去除停用詞. 對漏洞描述文本進行詞處理,然后根據每個詞的特征利用Word2vec算法提取每個詞的特征,作為CNN模型的輸入層. 使用詞向量層對文本信息進行矢量化,將原始One-Hot編碼的詞(長度為詞庫大小)映射到低維向量表達,降低特征維數(shù). 本質上是特征提取器,在指定維度中編碼語義特征,這樣語義相近詞之間的歐氏距離或余弦距離也比較近.
第二部分是特征提取模塊,將矢量層得到固定維度詞向量輸入到特征提取模塊,經卷積層后送入、ReLU激活層、池化層和全連接層. 為防止模型過擬合并在測試集上達到很好的泛化效果,在每層卷積后增加batchnorm層通過batchnorm層對數(shù)據做歸一化操作去除數(shù)據相關性,減小數(shù)據的絕對差異,突出其相對差異,使模型更穩(wěn)定的同時加快收斂速度.
首先,求出當前batch數(shù)據x的均值為
(1)
其次,計算當前batch的方差為
(2)
再次,對當前batch數(shù)據x做歸一化操作:
(3)
第三部分是回歸分類模塊,本文采用具有類間抑制作用的的softmax層對漏洞文本特征進行分類預測. 訓練時采用交叉熵函數(shù)計算漏洞分類損失,公式如下所示.
(4)
(5)
m=maxzi.
以漏洞描述“遠程攻擊者可通過提交特制的URL利用該漏洞繞過身份驗證,訪問重要的服務.”為例,其安全漏洞類型判定示意圖如圖2所示.
步驟1 對該段描述進行預處理,輸出“遠程 攻擊者 提交 利用 漏洞 繞過 身份 驗證訪問 服務”,并將其進行矢量化;
步驟2 通過CNN網絡的卷積層、池化層、全連接層,對該矢量層進行特征提??;
步驟3 通過回歸分類計算,根據漏洞類型最大概率,該漏洞類型為授權問題.
圖2 基于CNN的漏洞分類模型結構Fig.2 The structure of vulnerability classification model based on CNN
本實驗數(shù)據來自國家信息安全漏洞庫(CNNVD)發(fā)布的互聯(lián)網公開漏洞信息,截止2018年6月13日,CNNVD收錄漏洞數(shù)據總量已達110 736個. 本文選取其中最為常見的6個漏洞類型進行實驗,分別是:輸入驗證、授權問題、注入、緩沖區(qū)溢出、跨站腳本、信息泄露. 其中每個漏洞信息包含以下屬性項:漏洞名稱、CNNVD編號、漏洞類型、危害等級等. 本文采用CNNVD的漏洞描述文本作為輸入,按照6∶1的比例分配訓練集與測試集. 表1為CNNVD漏洞數(shù)據樣例,截取本文重點關注項目.
表1 CNNVD漏洞數(shù)據描述Tab.1 CNNVDD escription of vulnerability data
采用圖像分類任務中的F1值作為衡量漏洞分類的性能指標,計算F1值公式如下:
(6)
F1可以同時兼顧召回率R(recall)和準確率P(precision)反映漏洞分類模型的整體性能.
實驗采用facebook開源框架pytorch搭建CNN網絡進行驗證漏洞分類效果[13],在CNN模型中使用word2vec預先訓練256位詞向量. 采用inception網絡結構提取特征,選擇3、4、5三種尺度的卷積核,每種卷積核數(shù)目設置為相同的數(shù)值,最后分類輸出數(shù)目為6,使用自適應梯度優(yōu)化算法ADAM訓練模型. 同時為了驗證batchnorm的有效性,本文嘗試兩種實驗策略.
策略1:去除所有batchnorm層,在最后的全連接層后增加dropout層,dropout層隨機參數(shù)設為0.5.
策略2:去除dropout層,所有卷積層和全連接層增加batchnorm層. 經試驗表明如圖2所示,增加batchnorm層的分類模型在20 000次迭代即收斂到穩(wěn)定,而dropout達到相同的F1值需要40 000次迭代. 采用batchnorm層可以提升1倍以上的訓練速度,性能較dropout網絡模型高1個點,而且模型具有更好的穩(wěn)定性.
圖3 收斂速度曲線圖Fig.3 Curve of convergence rate
本文進一步與傳統(tǒng)文本分類方法SVM模型進行比較,在表2中,“Ours_DropOut”是在CNN基礎上增加DropOut層,“Ours_BatchNorm”是在CNN基礎上每個卷積層之后增加BatchNorm規(guī)范化數(shù)據,由表2實驗結果可知,基于CNN和文本語義的漏洞自動分類方法顯著高于傳統(tǒng)SVM方法.
表2 漏洞分類測試結果Tab.2 Vulnerability classification test results
為解決大規(guī)模漏洞分類,提出了一種基于CNN和文本語義的信息安全漏洞分類方法,以國家信息安全漏洞庫(CNNVD)的漏洞數(shù)據作為實驗對象,在文本預處理的基礎上利用CNN善于從短文本中挖掘特征的優(yōu)點,對國家信息安全漏洞庫收錄的信息安全漏洞進行自動分類,實驗結果表明相對于傳統(tǒng)的分類方法,CNN在準確率、召回率等有了一定的提高. 未來的研究工作主要是將該算法應用到重大安全漏洞的及時快速預警系統(tǒng)上,以便針對漏洞類型的不同危害識別采取有效的防范措施,維護良好的網絡安全環(huán)境.