圖/iThome
今年屢屢在美國和日本的資安產品評選或技術評比上,大獲佳績,端點防護產品的偵測評比更勝過不少資安大廠。AI是奧義研發出頂尖資安偵測能力的關鍵,但是,要在資安領域發揮AI的威力,不是一件容易的事,光是如何蒐集和分析各式各樣駭客攻擊行為資料就是一大挑戰,更不用說ML開發過程繁複,實作過程中更會不斷碰壁。「究竟會遇到哪些困難?會怎麼失敗?」奧義智慧科技研究團隊的資深研究員陳仲寬,在今年臺灣資安大會中,分享了資安領域ML開發的挑戰。
去年從交大網路安全實驗室取得博士學位的陳仲寬,專注於網路攻防、惡意程式分析、漏洞分析與自動化攻防的研究,過去曾參與開發的ML應用,涵蓋惡意程式分類、事件log威脅獵捕(Event Log Threat Hunting)、用戶行為異常偵測、資安文章分析、端點資安鑑識(Endpoint Forensic)等類型。從這些資安ML實作經驗中,陳仲寬歸納出10項曾遭遇的挑戰,來提供其他開發者借鏡。
資料處理眉角多,稍有不慎都會影響模型準確率
要用ML來訓練資安類的模型,要經過多個環節,包括特徵選擇、模型選擇、ML Pipeline、調校模型、解釋分析結果等步驟。其中,涉及資料蒐集與處理方面的問題,就佔了10項開發挑戰中的一半。
陳仲寬首先指出,在多數情況下,開發者難以蒐集到到公開、高品質的資料集。這是因為,一般資安公司握有的高品質資料,並不會輕易公開釋出,能公開找到的資料集,大多也奠基在過去長期的研究基礎上,若今天是從頭發想一個新應用、新點子,可能就會面臨無資料可用的困境。
且在ML實作過程中,也可能因軟體工具、分析技術不斷改版更新,導致資料集在不同版本間的實作不一致(inconsistence),比如新版本需要的特徵值(feature),無法從舊資料集中取得,這時,就需要花費人力來處理這些細節。「參考的論文上通常也不會提到,因為沒有學術上的貢獻。」陳仲寬說。
第二,在資安領域中,時常發生資料集不平衡(Imbalance Dataset)的問題。在真實世界中,大部分蒐集到的資料,以正常程式為主,遭駭客攻擊的情況仍是少數,惡意程式可能只占全部資料的十分之一到百分之一。由於正常程式佔多數,以這些資料訓練出來的模型,會傾向判定每筆資料為正常程式,因為猜對的機率更高,且容易放過惡意程式。
陳仲寬建議,在訓練模型之前,需要先平衡正常與惡意程式的數量,或轉而用非監督式學習先進行前處理,以避免資料集不平衡對模型帶來的影響。
第三,蒐集到的資料缺乏高品質的資料標記。眾所皆知,資料標記本來就是一項高人力成本、費時的任務,尤其在資安領域中,惡意與正常程式的界線並非壁壘分明,比如流氓軟體、廣告軟體是劃分為黑名單還是白名單?而許多資料在不同的情境脈絡下,資料標記也可能不一樣,比如事件Log,可能在某些情境下被定義為惡意事件,但到了另一個環境,又能成為網管人員的管理工具。
也就是說,在資安資料的標記上,開發者需要針對ML的應用情境來標記資料,且這批標記好的資料,也難以直接移植到其他環境使用,需要針對其他應用環境重新標記才行。
第四,蒐集到的資料來源都不一樣,也可能對模型表現產生影響。比如說,提供惡意軟體分析服務的VirusTotal,匯集了各個資安廠商的分析引擎,從中可發現,儘管是同一支程式,不同廠商的分析結果可能不同,在進行資料標記時,應採用哪一個分析結果作為標準?而且,有些分析引擎判定某程式6成可能為惡意程式,標記時,應視為正常還是惡意?「這些都是要設計的,設計不好模型可能會不準。」
陳仲寬也舉例,過去曾開發惡意程式偵測模型,來偵測端點的惡意程式,當時從公開資料庫蒐集了樣本,也在模型訓練與測試上取得了良好表現,不過,研究團隊實際從端點蒐集資料來測試時,模型表現卻不如預期。推測可能的原因,在於公開資料集的惡意程式來源為Email和誘捕系統(Honeypot),但是端點蒐集到的程式,則多來自於後門程式、APT,由於兩者資料來源不一致,導致了這個問題。
最後一點,則是在資料處理過程中,可能因不正確的資料傳輸(Data Transfer)和資料過濾(Data Filtering)作法,導致訓練資料偏誤而影響模型表現。以惡意程式偵測為例,開發ML過程中,可能需要將PE檔的惡意程式進行語意分析(parser),若過程出錯,可能導致訓練出來的模型,只能辨識PE格式的惡意程式,非PE檔案都不行。
又或是說,處理加殼程式的分析軟體失效,但沒有回去修復程式,就可能導致後續模型訓練完成後,只能處理不加殼的程式,將某些類型的程式排除在外。陳仲寬也舉例,就像某些難以標記的資料,若因為不確定為白名單或黑名單內容,就直接捨棄掉,也會導致資料偏誤,導致後續訓練出來的模型,難以辨識特定類型的程式。
模型設計遵循KISS原則,依據資料特性選擇適合的ML框架
在模型設計過程中,陳仲寬也列舉了3項需要注意的問題。
首先,是取得了資料之後,要選哪個模型框架來實作?陳仲寬表示,需要根據資料特性,選擇具代表性的模型來應用。比如在事件Log分析上,通常會將Log資料以關聯圖形式(Graph)來呈現,就適合套用社群發現(Community Detection)演算法;用戶行為異常偵測的行為資料,則因為有周期性的價值,適合套用時間序列預測分析之一的ARIMA模型;而資安文章分析,由於是文字內容,就可以用NLP來處理。
第二,則是要避免過早使用複雜的模型,應該用最簡單的方法解決問題(Keep it simple, stupid,KISS)。陳仲寬認為,使用簡單的模型有三項優點,一是在建立簡單模型的過程中,能進一步了解資料特性以及模型執行過程,二是從簡單模型推及到複雜模型,可以避免一開始就耗費大量運算資源,三則是在部分應用中,Rule-based的分析,反而比龐大的神經網路模型還好用。
第三,則是在模型設計上,建議將資料視覺化(Visualization),比如運用主成分分析(PCA)或是t-隨機鄰近嵌入法(t-SNE),除了能藉此選擇合適的演算法,調校模型、除錯時也很實用。陳仲寬舉例,過去在做資安文章分析時,建立了BERT模型,但發現模型表現不佳,準確率甚至不到50%,為此,團隊運用t-SNE將數據視覺化,找出問題所在並調整了模型架構,才成功提升了模型準確率。
模型驗證需解釋決策原因,問題設計更需考量實際應用場景
最後,在模型驗證過程中,陳仲寬也歸類出兩大重點。第ㄧ,是要運用模型可解釋性來驗證模型,透過了解模型決策的原因,除了判斷決策是否合理,也可以進一步學習模型判斷的原理。
比如臺大電機系助理教授李宏毅,就曾經訓練一個AI模型,判斷一堆卡通圖案中,哪些屬於神奇寶貝、哪些是數碼寶貝,辨識準確率超過98%,但實際用顯著圖(Saliency map)檢測發現,模型是以png檔的背景底色來分類圖像,並非以圖像本身的差異。從這個例子中,說明了解釋模型決策原因的重要性。
陳仲寬也提醒,單從資料取得的知識是有限的,還需要實際應用場景中的領域知識(Domain Knowledge)。舉例來說,許多企業在建立ML應用時,會將資料欄位去識別化,比如使用者上、下線時間,改以欄位A、B代替,再交由資料分析師去處理,但是,將資料去識別化之後,也限制了資料的應用分析方式;又或是現在常見學校組成ML團隊,除了取得不同產業的資料,也需要各產業的專家提供領域知識,來協助ML應用落地。
「在做ML過程中,一定要有人提供回饋、指導、專家知識,這樣做出來的ML系統才更穩定。」陳仲寬說。
熱門新聞
2024-12-10
2024-12-10
2024-11-29
2024-12-11
2024-12-10
2024-12-08