基于機器學習的自動漏洞修復分析方法
摘要
固件/軟件中的安全漏洞對電網安全構成了重要的威脅,因此電力公司在發現漏洞后應迅速決定如何補救。由于要考慮的因素很多,要在打補丁和服務可靠性之間保持平衡,以及要處理大量的漏洞,因此做出補救決策在電力行業是一項具有挑戰性的任務。遺憾的是,目前的修復決策都是人工做出的,需要很長的時間。這增加了安全風險,也帶來了高昂的漏洞管理成本。在本文中,我們提出了一個基于機器學習的自動化框架來自動化電力公司的修復決策分析。我們將其應用于一家電力公司,并對從該公司獲得的兩個真實運行數據集進行了大量實驗。結果表明,該解決方案具有很高的有效性。
第一節. 導言
軟件/固件中的漏洞對電網安全構成了重要的威脅,因為這些漏洞可能會被對手利用,控制電力系統的計算機和設備,并發動破壞性的攻擊。為此,安全漏洞和補丁管理(VPM)是目前電網安全不可或缺的重要組成部分之一[1]。每個電力公司(發電、輸電和/或配電的公司)都在其安全運營中心部署了VPM機制。當發現其資產存在安全漏洞時,電力公司需要決定如何快速修復漏洞以降低安全風險。
對于電力公司來說,做出修復決策并不容易。首先,雖然打補丁可以修復漏洞,但由于打補丁通常需要重新啟動資產并導致服務中斷,因此并不總是能夠或最好給易受攻擊的資產打補丁。因此,雖然緊急補丁的安裝速度很快,但電力公司通常會按照一定的維護計劃,如每季度對資產安裝其他補丁。對于一些需要及時關注,但打補丁可能會造成關鍵服務中斷的漏洞,可以先進行緩解,然后再在下一個維護周期中進行修補。其次,漏洞的安全風險遠非同等。舉例來說,應用于用戶瀏覽器持續活動的監督控制和數據采集(SCADA)操作員工作站的谷歌瀏覽器漏洞與應用服務器上沒有互聯網訪問的互聯網瀏覽器漏洞的風險就大不相同。組織應立即對前者作出反應,但可以安全地暫時擱置后者。補救決定應該根據漏洞的風險反映出漏洞的優先級,以優化有限安全資源的使用。第三,補救決策應考慮漏洞和資產的諸多因素,如漏洞是否有可利用的代碼,漏洞資產是否可以從互聯網上到達,漏洞的影響,以及修補是否會中斷電力傳輸服務等,因此是一個復雜的推理過程。第四,任何時候適用的安全漏洞數量往往超過組織的應用風險分析能力。在過去的兩年里,美國國家標準與技術研究所(NIST)國家漏洞數據庫(NVD)顯示,發現和公開報道的軟件安全漏洞數量增加了一倍多[2]。對于一個電力企業來說,每月數百個甚至更多的資產存在數百甚至上千個漏洞并不罕見。
遺憾的是,目前電力公司的補救決策大多是人工做出的。這就導致了在決定漏洞修復行動時的長時間延遲(通常是幾周的時間)。這種漫長的延遲延遲了補救行動的應用,并帶來了高安全風險。人工分析也消耗了大量的人力時間,這增加了VPM的成本。
為了解決這個問題,我們提出了一個基于機器學習的框架來自動化電力公司的補救決策分析。我們的想法是在漏洞特征和資產特征上應用一個預測性的機器學習模型來預測每個漏洞的修復決策。該模型可以建立在歷史的、人工的修復決策數據上,以捕捉和模仿人類操作者如何做出決策,但它可以比人工分析更快地做出決策。因此,它的修復決策的延遲時間要短得多,這可以降低安全風險,同時由于減少了人工努力,降低了VPM的成本。值得注意的是,我們的機器學習方法只推薦補救決策,人類操作者擁有接受或不接受預測決策的最終權力。
基于機器學習的自動化框架利用了兩個與電力行業相關的最新發展。首先,北美電力可靠性公司(NERC)關鍵基礎設施保護(CIP)第5版[3]的監管要求,以維護基線配置,確保電力公司中形成良好的軟件資產信息的可用性。其次,在過去的幾年里,通過NIST NVD和第三方服務提供商提供的格式良好和機器可讀的漏洞信息的可用性有了顯著的改善[2]。
本文的貢獻總結如下:
據我們所知,這是第一項研究在VPM中實現修復決策分析自動化的可行性的工作,目前在電力公司和許多其他組織中,修復決策分析是手工完成的。這種自動化不僅可以通過更及時地修復漏洞來提高安全性,而且還可以通過減少VPM所需的人力時間來降低成本。這項工作也證明了在安全操作中應用機器學習的價值。
我們提出了一個基于機器學習的框架,基于運營環境中的漏洞特征和資產特征進行自動化修復動作分析。我們選擇決策樹作為學習模型,因為它類似于人類的推理,并且可以生成推理代碼,供操作人員在需要時驗證預測。我們還設計了簡化推理代碼的方法,以方便驗證,并提出了一種基于組的資產管理方法,以簡化資產特征維護。雖然這個框架是在電力公司的背景下提出的,但這個框架可以應用于許多其他組織。
我們為一家電力公司實例化了該框架,并基于從該電力公司獲得的兩個一年期數據集進行了大量的實驗評估。評估結果表明,該方法是非常有效的。
本文的其余部分組織如下。第二節回顧了相關工作。第三節介紹了當前電力公司VPM的實踐,并介紹了一項調查的結果。第四節介紹了基于機器學習的自動化框架。第五節介紹了該框架在某電力公司的實例。第六節介紹了評估結果。最后兩節提出討論并作為本文的結論。
第二節. 相關工作
有許多供企業使用的 VPM 解決方案,如 GFI LanGuard [4]、ManageEngine 的 Patch Manager Plus [5]和 SolarWinds 的 Patch Manager [6]。然而,這些解決方案側重于漏洞發現和補丁部署,而不是優化漏洞修復資源的必要決策。大多數為電力公司VPM設計的解決方案也屬于這一類,如Doble Engineering的PatchAssure[7]、Flexera[8]或FoxGuard Solutions[9]。它們無法針對運行環境進行漏洞分析,也無法做出如何解決漏洞的決策。
在解決漏洞時,有一些公開的信息來源。NIST NVD[10]提供了一個結構良好、可靠的漏洞數據源,以及它們所報告的相應信息。Vulners[11]有一個可自由訪問的API,用于搜索漏洞信息和發現可用的漏洞;Exploit Database[12]也允許用戶搜索可用的漏洞。
學術界也有這方面的研究。[13] 和 [14]分析了大型漏洞數據集,并報告了漏洞屬性和披露日期的趨勢。[15]、[16]和[17]分析了補丁和補丁行為,比如從發布補丁到安裝補丁或有效保護漏洞的時間窗口。[18]、[19]、[20]和[21]描述了優先打補丁的方法。[22]和[23]基于攻擊圖分析了網絡攻擊的風險。但是,這些作品并沒有將漏洞度量與組織的獨特環境相結合,分析漏洞修復決策。我們之前的工作[24]首次對電力企業的漏洞修復方式進行了實證分析,但并沒有預測修復行動。機器學習已經被應用于發現軟件和源代碼中的漏洞[25][26][27][28][29]-[30]和檢測攻擊[31]、[32],但我們的工作使用機器學習來確定如何補救漏洞。
基于機器學習的自動漏洞修復分析方法
圖1.漏洞和補丁管理流程
第三節.電力事業中的Vpm現行做法
本節介紹目前電力行業組織的做法。按照美國國土安全部(DHS)[33]對VPM的推薦做法,如圖1所示,當發現漏洞時,組織首先需要從漏洞和資產信息兩方面考慮,分析漏洞是否會對系統造成影響,并確定對漏洞的修復行動,如打補丁和緩解。
對于事業單位來說,在實踐中進行VPM并不容易。幾乎每天都有新的漏洞被發現,新的補丁被發布。公用事業單位必須花費大量的時間和人力資源來分析漏洞并決定補救措施。NERC CIP標準要求嚴格的月度義務,以確定和評估安全漏洞和補丁。通過NERC對標準的遵守情況進行密切監控,并定期實施貨幣處罰。同樣,電力行業也有懲罰性的動機來嚴格遵守這些規定。
為了更深入地了解當前的做法,我們在電力行業進行了一項調查。由于與遵守法規密切相關的信息共享受到限制,調查通過國家關鍵基礎設施保護組織向電力公司廣泛發放,并以匿名方式進行。我們收到了16家電力公司的答復。100%的回復組織對漏洞和補丁進行人工分析。其中約60%的企業每年需要處理超過3000個安全漏洞,一半的受訪企業每月在VPM上花費超過400人小時。他們都會保存漏洞和補丁的歷史記錄。調查顯示,VPM對于公用事業單位來說確實是一項耗時耗力的工作。
第四節 基于機器學習的整治行動分析框架
安全操作人員會考慮很多因素來決定對漏洞的補救行動。這些因素包括漏洞信息,如該漏洞是否影響完整性、可用性或保密性,是否已經有了對該漏洞的利用,通用漏洞評分系統(CVSS)評分是多少[34]等。此外,這些因素還包括資產信息,如易損設備是否是電網運行的關鍵現場設備,易損設備對保密性/完整性/可用性攻擊是否敏感,軟件是什么等等。例如,如果一個漏洞在非關鍵設備,只是影響不大,而且還沒有可利用的漏洞,那么現在不需要處理,可以在下一個計劃周期內進行修補(表示為Patch-Later)。如果漏洞可以被利用,而且是在用戶工作站,則決定立即打補丁(用Patch-Now表示);如果是在關鍵服務器,因為給服務器打補丁可能會影響電網服務,則決定先緩解,在下一個計劃周期中再打補丁(用Mitigate-Now-Patch-Later表示)。
這個過程是繁瑣和重復的,我們提出要自動進行補救行動分析。直觀上,我們可以考慮手動制作一組規則(其中每條規則由所有因素的因子值組合和這個組合的決策組成),并利用它們來實現類似專家系統的自動化補救行動分析[35]。然而,基于規則的分析存在著實際的挑戰:為了覆蓋所有可能的情況,規則的數量將成倍增長。例如,在我們的一個公用事業合作伙伴那里,大約考慮了16個因素,每個因素都有一些值。因子值的可能組合總數約為2400億。首先手動生成這么多規則是不可行的,更不用說動態維護和更新規則了。
基于機器學習的自動漏洞修復分析方法
圖2:基于機器學習的框架
我們采用了一種利用機器學習來自動分析的方法。我們提出了一個基于機器學習的補救決策分析框架(見圖2),根據漏洞和資產特征,自動分析漏洞并預測補救決策,例如,是現在打補丁還是推遲到下一個定期維護周期打補丁。該框架的核心是機器學習模型,它不僅可以輸出補救行動,而且還可以輸出一個易于驗證的原因代碼,以防操作人員想要非常一些預測。該模型可以從歷史操作數據中進行訓練,這些數據包含漏洞信息、資產信息以及針對一組漏洞的人工補救決策。我們在第三節中描述的行業調查表明,所有被調查的電力公司都保留了他們的歷史運行數據。這在電力行業是意料之中的,因為對VPM的監管要求。我們的框架與第三節所述的國土安全部指南一致,但將基于機器學習的自動化引入其中,并提供了更多細節。
這項工作的目標是使機器學習的預測與人工決策一樣準確。這可以通過更快地對漏洞做出補救決定,并更快地采取行動,幫助降低安全風險(分析見第六-H節)。我們承認,人工決策可能不是最佳或正確的,并將研究如何做出比人類操作者更好的決策留待未來的工作。
基于機器學習的自動漏洞修復分析方法
表一-:漏洞特征
A. 脆弱性特征和管理
NVD已經很好地確立了漏洞特征。在NVD中,每個漏洞都帶有一套CVSS指標,從不同方面描述漏洞的特征。在我們的框架中,我們使用CVSS指標作為漏洞特征,因為它們與風險評估和修復決策分析相關。這些特征及其可能的值如表I所示。CVSS得分是由指標確定的0到10之間的數字,一般來說,用來描述一個漏洞的整體嚴重程度。攻擊向量表示漏洞如何被利用,如通過網絡或本地訪問。Exploitability表示漏洞被利用的可能性。高為最高級別,表示漏洞代碼已經廣泛存在,未被證實為最低級別,表示沒有漏洞代碼,中間還有兩個級別。用戶交互(權限,resp.)表示攻擊者利用該漏洞所需的用戶交互量(權限級別,resp.)。其他四個指標描述了攻擊的復雜性以及攻擊在保密性、完整性和可用性方面的影響。這些指標的詳細解釋可以在[34]中找到。
NVD每天都會公布各種軟件產品的漏洞。每個漏洞由一個獨特的通用漏洞和暴露(CVE)ID識別,如CVE-2016-8882。組織可以通過識別其資產的通用平臺枚舉(CPE)名稱[10]來檢索其資產的漏洞(包括CVE和漏洞特征),然后使用CPE向NVD查詢(NVD提供API進行此類查詢)。CPE是一種表示軟件的命名標準,其結構方式使其能夠自動搜索適用的漏洞[36]。一個組織可以手動識別一次資產的CPE,并使用多年而不需要更新,因此維護成本很低。
值得注意的是,該學習框架是通用的,可以支持公司可能使用的其他漏洞功能(例如,第三方服務提供的其他功能)。另外,如果公司在補救決策分析中只使用部分CVSS指標,那么學習模型可以建立在這些指標上。
B. 資產特點和管理
雖然脆弱性特征在維護公開披露的脆弱性信息方面有一個完善的CVE標準,但脆弱性特征本身并不能提供足夠的信息來對個別網絡資產進行有意義的補救分析。人們對待在互聯網上提供直接服務的脆弱系統(如網絡服務器)與對待應用于高度控制的本地網絡中的孤立系統的同樣的脆弱性是截然不同的。同樣,瀏覽器的弱點對不同的網絡資產的適用性也非常不同。很明顯,一臺主要用于電子郵件和網頁瀏覽的辦公室電腦,比一臺幾乎沒有用戶交互的服務器,恰好安裝了相同的瀏覽器,其脆弱性要明顯高得多。NVD CVSS系統建議使用保密性要求、完整性要求和可用性要求三個資產特征來計算環境得分。但是,僅僅使用這三個特征是不夠的,安全運營者還要考慮其他特征。例如,當一個漏洞可以通過網絡發起時,資產是否可以被外部訪問是一個關鍵因素。因此我們又確定了兩個資產特征來補充這三個特征。與環境CVSS系統的另一個不同之處在于,我們的方法使用機器學習將這些特征整合到一個決策模型中,而不是使用簡單的公式計算環境得分。這五個特征描述如下。
工作站用戶登錄。(是或否)—與漏洞的用戶交互特征相關聯,它意味著網絡資產是否為人類操作者提供了交互式工作站。如果該資產不具備交互式使用功能,那么影響Web瀏覽器等應用的漏洞影響將大大降低。
外部可訪問性。(High, Authenticated-Only or Limited) – 與漏洞的攻擊向量特征相關聯,它指的是網絡資產在網絡系統之外的外部可訪問程度。例如,”高 “可能是指提供公共內容的網絡服務器,而 “認證-僅 “可能是一組遠程訪問的應用服務器,在使用前需要登錄。Limit指的是不能直接連接到外部網絡。
保密性要求。(高、中、低) – 與漏洞的保密性影響特征相關聯,指資產的保密性要求是否很高。
完整性要求:(Integrity Requirement)。與保密性要求類似,但側重于完整性。
可用性要求。與保密性要求類似,但側重于可用性。
企業可以根據自己的實際情況,增加/刪除一些資產功能,以滿足自己的需求。
基于群體的資產特征管理 而軟件漏洞特征集有一個世界性的社區來維護一致的機器可讀特征(即通過NVD),網絡資產特征必須由組織來維護。根據我們的調查,一個組織可能有數千種資產,而且資產可能會經常變化(即一種資產可能會被刪除或增加)。由于資產數量龐大,且動態變化,對每項資產的特征值進行分析和維護非常繁瑣。為了降低維護成本,我們根據資產的作用或功能,將資產劃分為資產組。例如,特定廠商和功能的所有遠程終端設備(RTU)都可以歸入一個組,因為它們具有相似的功能。同樣,所有的防火墻也可以歸入一個組。同一組中的資產共享同一組資產特征值。那么人類操作員就可以確定和維護每組的特征值。在我們對電力公司的實驗中,通過資產數量的大幅增加,分類組別基本保持一致。例如,控制中心的操作員工作站無論有5個還是100個,其特征都是一樣的。雖然資產可能會來來去去,但我們發現出現一個全新的資產組的情況要少得多。由于組的數量遠小于資產的數量,所以分組將大大減少維護特征值所需的工作量。
C. 機器學習算法選擇
今天有很多機器學習算法,我們需要確定一個最好的算法來解決我們的問題。在這個框架中,我們采用決策樹模型來實現整治行動分析的自動化,原因如下。(1)基于決策樹的決策類似于人類的推理。在樹的每個層次上,模型選擇最重要的因素,并根據因素的價值將問題空間分割成多個分支。與許多其他機器學習模型如神經網絡和邏輯回歸等不太透明不同,決策樹模型可以讓我們看到模型每一步的工作,知道模型是如何做決策的。因此可以對決策樹的預測進行解釋,并推導出一個原因代碼來解釋預測。人工操作者可以根據理由代碼來驗證預測結果。(2)對于這個VPM自動化問題,在我們的實驗中,決策樹與其他幾種機器學習算法相比,被證明具有非常好的性能。
為了便于說明,圖3顯示了在修復行動分析背景下,訓練出來的決策樹模型樣本。基于該樹的漏洞預測過程如下。當一個新的漏洞數據記錄被輸入到模型中進行預測時,模型將首先查看根節點的可利用性特征。如果該漏洞性不是Unproven,則會去檢查資產特征 “工作站登錄”。如果工作站允許用戶登錄,說明它面臨的風險較大,必須立即打補丁。其他樹枝也可以通過其他記錄進行類似的遍歷。
圖 3: 訓練好的決策樹模型的一個例子
D. 原因代碼生成
對于一個預測性的機器學習工具來說,很難做到100%準確。為了提高預測決策的透明度,我們的方法為人類操作者提供了預測置信度和模型選擇決策的原因的可讀性描述(稱為原因代碼)。決策樹的使用使得理由代碼的生成是可行的。訓練好的決策樹模型是一個以樹形結構組織起來的連接節點和分割規則的集合。那么通過遍歷樹的路徑,結合路徑中節點的拆分規則,就可以得出foreach葉子節點(決策節點)的理由代碼。但是,對于一些長的路徑(例如,我們在一個公用事業的數據上建立的一棵樹有18個節點的路徑),如果簡單地組合拆分規則,理由代碼可能會變得非常長,冗余,而且難以閱讀。為了解決這個問題,我們使用兩種規則來簡化和縮短從決策路徑中得出的原始理由代碼。
交集:我們可以通過尋找范圍交集來減少冗余。例如,對于CVSS分數這樣的連續數據,如果理由碼中一個條件是 “CVSS分數大于5.0”,另一個條件是 “CVSS分數大于7.0”,那么我們就可以找到交集,理由碼就可以簡化為 “CVSS分數大于7.0”。
補全:對于一些特征在一個路徑的幾個條件中出現的,我們可以用它的補全條件來代替這些條件。例如,對于完整性影響,可能的值集是完整、部分、無。如原因碼為 “完整性影響不為None,完整性影響不為Partial”,由于Partial、None的補足條件為Complete,所以原因碼可以簡化為 “完整性為Complete”。
第五節.框架的實例。一個電力公司的案例研究
為了研究基于機器學習的框架在現實世界中的工作情況,我們根據某電力公司的VPM運行實踐和數據,對其應用并實例化了該框架。由于VPM運行信息的高度敏感性,該公司要求我們對其名稱進行匿名化處理,因此我們在本文中稱其為OrgA。
在本框架實例中,使用的漏洞特征是CVSS指標中的9個屬性(見表一)。使用的資產特征是工作站用戶登錄、外部可訪問性、保密性要求、完整性要求和可用性要求。這些特征是人類操作員在做出修復決策時使用的。操作員使用的可能的修復行動是 “現在修補”、”現在緩解”、”以后修補 “和 “以后修補”。
為了獲得資產特征,首先從公司的基線配置管理工具中獲得一個資產列表。然后根據資產的功能將其分為43個組。對于每個資產組,確定每個資產特征的值。對于公司來說,這些資產特征和特征值是相當穩定的,不需要在幾年內改變。為了得到漏洞和漏洞特征,根據軟件/固件的名稱和版本,為每個軟件/固件生成一個CPE,這些軟件/固件的名稱和版本在基線配置管理工具中也有。然后我們開發了一個Python程序,利用CPE作為參數,通過NVD的API自動查詢NVD,從NVD中檢索出適用的漏洞,包括其CVE和CVSS向量。漏洞檢索需要經常進行,但Python程序使其自動化。需要注意的是,為實用程序匯總漏洞的第三方服務也提供了同樣的CVE和CVSS信息,可以在我們的框架中使用。
決策樹是基于庫Scikit-learn用Python實現的。公用事業單位維護著VPM的運行數據,包括歷史漏洞、其相關資產,以及操作人員對其做出的人工修復決策。這樣就可以利用該實用程序的歷史數據來訓練決策樹模型。除了CVSS評分之外,所有的特征都是分類的。我們將這些分類值用一個熱編碼轉換為二進制數據。CVSS得分通過在0和1之間的縮放進行歸一化,Gini被用作衡量樹的分裂的指標。值得注意的是,應根據數據集對一些決策樹參數進行調整,以達到最佳性能(詳見第六節B)。模型訓練完成后,當獲得一個新的漏洞時,其漏洞和資產特征將被輸入到模型中進行分析。
模型會輸出三個信息:預測決策、置信度和原因代碼。信度值在0到1之間,表明模型對預測的信心程度。它可以指導操作者選擇預測進行人工驗證,例如,驗證那些置信度低的預測。理由代碼可以幫助人工操作者理解和驗證預測。表二顯示了三種不同漏洞的預測實例。第一個例子顯示,預測的操作是 “Patch Later”,置信度為100%。這個選擇的理由是,該漏洞不可利用,CVSS評分小于4.2,這表明資產影響較小,而且它的保密性影響中等。其他兩個預測也可以用類似的方式來解釋。
基于機器學習的自動漏洞修復分析方法
表二:三個漏洞的樣本預測結果
第六節. 評價
本節介紹第五節所述框架實例的實驗結果。
A. 資料集
我們從OrgA收集了兩個數據集,每個數據集包含一年的數據。其中一個數據集是在2016年6月至2017年5月收集的,有3,476條脆弱性數據記錄。另一個數據集是從2018年1月到2018年12月收集的,有3,660條記錄。為方便起見,我們將這兩個數據集分別稱為2017A和2018A。每條漏洞數據記錄包括以下信息:其相關軟件、漏洞特征、其相關資產和資產特征。此外,每條記錄還包括人為操作者針對該漏洞做出的修復決定。
B. 決策樹的參數調整
為了防止樹的深度過大,避免過度擬合,應適當設置葉子節點的最小樣本數(如果節點中的樣本數不超過最小數,該節點將停止分裂)和樹的最大深度。這兩個參數可以根據部署環境進行調整。在我們的實施中,使用實用程序的2017A數據集來調整這兩個參數。具體來說,隨機抽取70%的數據集作為訓練數據,另外30%作為測試數據,根據測試性能對這兩個參數進行調優。
我們對葉子節點中不同的最小樣本數進行了實驗,結果如圖4所示。”min_samples_leaf “是一個葉子節點所需的最小樣本數。”min_samples_leaf “越小,樹的分裂程度越高,樹的深度越大。如圖4所示,當 “min_samples_leaf “為8時,其預測精度最高,為97.22%。這里,預測精度是指預測的決策中與人類操作者人工決策相同的部分。當 “min_samples_leaf “降低時,預測精度會降低,因為樹太特殊,無法對新樣本進行泛化。如果 “min_samples_leaf “過大,在樹短的地方,預測精度也會降低,因為樹沒有捕捉到訓練數據足夠細的信息。因此,我們將其余實驗中葉子節點的最小樣本數設置為8。
基于機器學習的自動漏洞修復分析方法
圖4:在min_leaf_samples上的預測情況。
圖5:對樹的深度進行預測
不同最大樹深下的預測精度如圖5所示。當樹深超過25時,預測精度不再變化。通常情況下,當最大深度較大時,允許樹更深,會出現過擬合問題。但是,在這種情況下,由于最小葉子數設置為8,當葉子樣本等于或小于8時,樹就會停止分裂,因此不能太深。我們將其余實驗中的樹最大深度設置為50。
C. 預測精度
在這個實驗中,我們分別在組織OrgA的兩個數據集上測試模型。每個數據集被隨機分成兩部分,70%用于訓練,30%用于測試。我們使用預測精度和假陰性率來描述性能。誤判率定義為人工決策為Patch-Now或Mitigate-Now-Patch-Later,但預測結果為Patch Later的那部分預測。誤報率應該被最小化,因為它延遲了漏洞的修復,而漏洞應該更及時地被處理。結果如圖6所示。對于2017A數據集,預測準確率為97.02%,假陰性率為1.24%。對于2018A數據集,預測準確率為98.82%,假陰性為1.09%。準確率相當高,這意味著使用機器學習來預測補救行動是可行的。
虛假預測的探索 雖然機器學習預測的準確率已經很高了,但我們還是想弄清楚是什么原因導致了虛假預測。對于2017A數據集,在探究了2.98%的錯誤預測后,我們發現這些錯誤預測主要是由于歷史數據集中的人工補救決策不一致造成的,一些具有相同特征的漏洞被賦予了不同的人工決策,這會讓決策樹(其實也包括其他任何學習算法)感到困惑。同樣的問題也導致了2018A數據集上的預測錯誤。
這種情況的發生有幾個原因。一家公用事業公司可能有多個安全操作員分析漏洞并做出補救決策。不同的操作員可能會對具有相同特征的漏洞,甚至對相同的漏洞做出不同的決定。即使只有一個操作員,對於兩個具有相同特徵的保安漏洞,他/她可能在不同時間(例如上月和本月)處理時作出不同的決定。尤其是對于風險等級不在明顯的高風險端(通常會進入Patch-Now和Mitigate-Now-Patch-Later)或明顯的低風險端(通常會進入Patch Later),而是在中間的漏洞,更是可能出現這種情況。這是一種人為的錯誤,操作者無法完全避免。
對于每一組特征相同但人工決策不同的漏洞記錄,如果我們假設這組記錄中的多數決策是正確的決策,而將少數決策的記錄視為錯誤并從數據集中刪除(2017A數據集約有3%的記錄被刪除),那么2017A數據集的預測準確率達到99.8%,假陰性率達到0.20%,2018A數據集也有類似的提升。這個結果表明,如果訓練數據集中的人工決策不一致的情況較少,那么預測性能可以得到顯著提升。
我們還發現,對于特征相同但人工決策不同的記錄,其預測置信度會相對較低。例如,假設決策樹的一個葉子節點包含四條特征完全相同的記錄,其中三條被Patch-Now補救,一條被Mitigate-Now-Patch-Later補救。那么決策樹將輸出Patch-Now作為預測決策,置信度為0.75。如果操作者能夠以相對較低的置信度(即低于0.9)來驗證/糾正預測,那么可以將2017A數據集的性能提高到99.42%的準確率和0.38%的假陰性,2018A數據集的準確率為99.45%,假陰性為0.09%。由于只有10%左右的預測置信度在0.9以下,所以人工驗證的時間將比人工做出所有的補救決策要短得多。
D. 原因代碼驗證
每一個預測都會附帶一個理由碼,以便用戶在需要的時候可以對預測進行驗證。在這里,我們首先研究一下理由碼的長度。我們用一個理由碼所具備的條件數來表示其長度。例如,理由碼 “未經證實的可利用性,CVSS評分小于4.2,保密性影響中等 “的長度為3,因為它包含了3個條件。對于第六節-C所述的預測,原因代碼的平均長度為6.9個條件。應用第四節-D中提出的長度減少規則后,平均長度減少到3.6個條件。例如,原因代碼 “未經證實的可利用性,CVSS得分小于9.15,外部可訪問性不高,CVSS得分小于6.30,外部可訪問性未經過認證,可用性影響中等 “可以減少為 “未經證實的可利用性,CVSS得分小于6.3,外部可訪問性有限,可用性影響中等”。長度縮減規則可以大大縮短理由碼的長度,使其更容易理解和驗證。
然后,我們測試理由代碼是否足以驗證預測決策,檢查驗證理由代碼所需的時間,并與根據相應漏洞的原始特征驗證預測所需的時間進行比較。為此,我們從測試數據中隨機選取了100個預測,并請組織OrgA的安全操作員根據理由代碼和基于原始特征驗證這些預測。
結果顯示,100個理由代碼中,有98個足以驗證預測決策。通過原因代碼驗證,發現有一個預測是錯誤的。另外一個原因碼不足以驗證預測。
理由碼驗證和基于原始特征的驗證所花費的時間如圖7所示。大部分原因碼可以在很短的時間內完成驗證。35%的理由碼可以在5秒內完成驗證,90%的理由碼可以在45秒內完成驗證。平均驗證時間為28.8秒。從圖中可以看出,基于原始特征的驗證比基于理由碼的驗證需要更多的時間。只有35%的預測可以在60秒內完成驗證,約40%的預測需要4分鐘以上的驗證時間。基于原始特征驗證的平均時間為7分鐘。結果顯示了理由代碼的效率。這是合理的,因為理由代碼是從決策樹中推導出來的(并進行了優化),而決策樹在一定程度上根據決策過程中的判斷條件的重要性對其進行了優先級排序,并將不重要的因素隱藏起來不考慮。
圖7:基于理由代碼和基于特征的驗證時間
圖8:每月預測精度
E. 用動態訓練進行預測
在上述實驗中,將十二個月的數據隨機分為訓練數據和測試數據。在實際操作中,決策樹模型應該動態更新,并使用近期的歷史數據進行訓練,如第四節-E所討論的那樣。在本實驗中,我們通過動態訓練來測試模型的預測精度。特別是,我們假設操作者隨機選取每個月10%的預測結果進行檢查和驗證。在每個月的時候,我們將最近6個月被操作者手動檢查過的漏洞和決策作為訓練數據,訓練出一個新的決策樹模型,并用它來預測下個月的情況。2018A數據集上的預測結果如圖8所示。x軸表示預測的是哪個月,y軸是預測精度。例如,當x軸為7時,它用前6個月數據的10%來訓練模型,預測第7個月的決策,然后用第二個月到第7個月數據的10%來訓練模型,預測第8個月的漏洞。可以看出,不同月份的預測準確率不一樣,但總體上是很高的。2017A數據集在動態訓練下的預測性能也有類似趨勢。因此,動態訓練是可行的。
F. 不同特征集的預測
上述實驗使用了16個特征,包括軟件名稱、漏洞特征、資產名稱和資產特征。在此,我們評估了不同特征對預測的有用性,并在圖9中顯示了2017A數據集上的結果。在沒有軟件名稱和資產名稱作為特征的情況下,預測精度只是略有下降。但是,如果沒有軟件名稱、資產名稱和資產特征(即只有漏洞特征),預測準確率下降到83.78%;如果沒有軟件名稱、資產名稱和漏洞特征(即只有資產特征),預測準確率下降到68.33%。結果表明,漏洞特征和資產特征都很重要。
基于機器學習的自動漏洞修復分析方法
圖9:不同特征集的預測情況
G. 與其他模式的比較
我們將決策樹模型與其他流行的機器學習模型:邏輯回歸、支持向量機(SVM)、奈夫貝葉斯、k-最近鄰(KNN)和神經網絡進行比較。采用2017A數據集,隨機抽取其中70%作為訓練數據,其余30%作為測試數據。如圖10所示,決策樹模型的表現優于其他模型。Logistic回歸和神經網絡的表現與決策樹接近。然而,它們不像決策樹那樣容易解釋。
考慮到最近在神經網絡合理化方面的工作,我們改編并實現了一個帶有理由生成器的神經網絡模型[37],以便與決策樹進行綜合比較。由于篇幅所限,本文省略了改編和實現的細節,將在本文的擴展版本中提供。如圖10所示,決策樹在預測方面也優于帶理由生成器的神經網絡。在理由碼方面,決策樹生成的理由碼平均長度約為4個,而神經網絡的理由碼平均長度約為8.5個。當理由碼足以支持預測時(見第VI-D節),決策樹較短的理由碼更容易解釋/驗證。
基于機器學習的自動漏洞修復分析方法
圖10:與其他機器學習模型的比較
H. 補救分析延遲和成本
補救決策分析的延遲 這里,我們分析了通過自動化決策分析為OrgA節省的時間。我們首先計算了基于機器學習的框架所需的時間。漏洞分析和決策預測的時間是以毫秒級為單位的,可以忽略不計。當機器學習模型被動態訓練時,它將需要操作者驗證10%的漏洞預測,如第六節-E所討論的那樣。如第六節-D所示,預測驗證的平均時間為28.8秒。對于2017A數據集所覆蓋的3476個漏洞,OrgA的平均驗證時間為2.3個人小時/月(這是典型的決策周期)。假設只有一個運營商。可以在2.3小時內完成,使得決策延遲為2.3小時。
根據第六節-D中的測試,手動分析每個漏洞的平均時間為7分鐘。OrgA的人工分析總時間為每月33.8人小時。同樣,假設只有一個操作員。理論上,這個任務可以在33.8小時內完成,使得決策延遲33.8小時。但在實際工作中,當一項任務所需時間較長時,完成任務的總時間跨度將不僅僅是人時那么簡單。人的操作者不可能像機器一樣24小時工作,可能會時不時地休息一下,還需要執行很多其他的任務,比如開會、匯報、培訓等,也可能會因為其他事情而分心,比如互相聊天。這些因素都會產生額外的補救決策的延遲。這可能會使分析過程跨越幾天甚至幾周的時間。我們在第三節中描述的調查也驗證了這一點,50%的參與者表示他們需要16天以上的時間來完成每個周期的補救行動分析。
根據這個草圖分析,用機器學習完成補救決策分析的延遲可能是幾個小時,但用人工決策的延遲可能是幾天甚至幾周。如果能更早地做出漏洞的修復決策,就能更早地發現那些高風險的漏洞(現在需要修補或緩解的漏洞),從而更早地進行修復,這將大大降低電力企業的安全風險。因此,使用我們的機器學習框架的公用事業公司面臨的風險將大大降低。
補救成本決策分析 由于安全運營的VPM問題是一個人力資源配置的問題,我們分析機器學習帶來的人員成本節約。從上面的延遲分析可以看出,通過機器學習,每個月可以為OrgA節省31.5人小時。這樣算下來,每年可以節省378人小時。對于規模較大、資產較多的公用事業單位,節省的費用就更多了。例如,在我們的調查中,一家參與公司表示它每年有12000個漏洞。這樣一來,總共可以節省1305人小時。
第七部分:討論
盡管擬議的框架只在電力公司上進行了測試,但與國土安全部的準則是一致的,它具有普遍性,可適用于許多其他組織,特別是關鍵基礎設施,因為它們面臨著類似的風險防范管理挑戰和制約因素。將該框架應用于其他組織的方式與應用于電力公司的方式類似,但所確定的資產特征和補救決定可能有所不同。
在某些情況下,操作環境可能會影響補救行動。例如,當一個漏洞爆發并成為頭條新聞時(如Meltdown漏洞),公司的管理員可能會因為公眾聲譽的壓力而希望盡快對其進行修復。那么運營者可能會選擇 “現在修補 “或 “現在緩解”—“以后修補”,而不是 “以后修補”,即使基于漏洞/資產特征的決策樹預測是 “以后修補”。在這種情況下,操作者可以使用他們的決策來覆蓋決策樹的預測。
第八節. 結論
本文解決了需要更有效的決策支持來解決VPM挑戰的問題,并提出了一個基于決策樹的框架來自動分析漏洞的補救決策。我們對為一家電力公司定制的框架實例進行了測試,測試了從該公司獲得的兩個數據集。結果顯示出較高的預測精度和時間節省。這些結果證明了應用機器學習來自動化VPM流程的價值。
本文是翻譯文章,文章原作者ieee,文章來源:ieeexplore.ieee.org
原文地址:https://ieeexplore.ieee.org/document/9162309