■ 文/國網(wǎng)電動汽車服務有限公司 李帥華 孫慶賀 趙明宇
關鍵字:Isolation Forest XGBoost 余弦相似度 越權邏輯漏洞
隨著社會經(jīng)濟和互聯(lián)網(wǎng)的快速發(fā)展及“互聯(lián)網(wǎng)+”概念的提出,車聯(lián)網(wǎng)全面提速發(fā)展,車聯(lián)網(wǎng)行業(yè)網(wǎng)絡業(yè)務不斷擴大,Web、App應用在成為支撐車聯(lián)網(wǎng)業(yè)務重要方式的同時,其應用安全問題也與日俱增。Web、App應用已經(jīng)成為被攻擊的的主要目標,由此引發(fā)的各種安全問題值得我們重視。在眾多攻擊漏洞中,業(yè)務越權邏輯漏洞攻擊逐年增長,給互聯(lián)網(wǎng)廠商和使用者帶來巨大經(jīng)濟損失。
目前針對Web和App應用的業(yè)務越權邏輯漏洞研究主要集中在人工檢測、半自動化越權邏輯漏洞檢測工具、黑盒測試等方面。主要研究如何使用基于傳統(tǒng)的攔截數(shù)據(jù)包,提取URL中的關鍵參數(shù)進行替換,再次發(fā)送請求,判斷是否存在漏洞。業(yè)務邏輯漏洞產(chǎn)生的相關原因主要包括個人信息未經(jīng)合法性校驗、繞過相對簡單、未限制登錄失敗次數(shù)、相關有價值參數(shù)隨意修改。這種業(yè)務越權邏輯漏洞檢測沒有很好的自動化工具,一般使用人工測試、黑盒測試、白盒測試等相關方法。由于黑盒、白盒測試效果不理想,安全人員經(jīng)常使用人工測試,對傳統(tǒng)手動替換多賬戶間多身份參數(shù)的檢測方法進行改進,優(yōu)化為采用爬蟲技術爬取數(shù)據(jù)后替換多賬戶請求中head標簽下的cookie參數(shù),然后針對請求返回內(nèi)容進行比對,進而發(fā)現(xiàn)是否存在越權漏洞。但這些方法存在識別效率低、性能差、誤報多、辨識率低、部分場景不支持等問題。
本文以車聯(lián)網(wǎng)企業(yè)Web和App應用的業(yè)務越權邏輯漏洞為研究對象開展越權漏洞檢測研究,提出基于機器學習的越權場景識別和相似度對比的方法。通過獲取不同用戶對同一操作的響應數(shù)據(jù)識別響應內(nèi)容是否為越權場景,并進一步識別具體的越權漏洞場景,如修改密碼、訂單信息、積分信息、個人信息等,最后根據(jù)識別出的具體越權漏洞場景做文本相似度計算,并分析計算結果,完成對車聯(lián)網(wǎng)企業(yè)Web和App應用越權訪問漏洞的全部測試。該方法通過三種機器學習算法組合模型,建立車聯(lián)網(wǎng)企業(yè)Web和App應用越權漏洞檢測模型,用于內(nèi)部應用的安全檢測,可及時發(fā)現(xiàn)企業(yè)內(nèi)部應用的安全隱患,極大提高企業(yè)內(nèi)部應用的安全性。選擇車聯(lián)網(wǎng)企業(yè)Web和App應用進行實驗,驗證了方法的有效性。
本文提出了使用機器學習相關算法檢測越權邏輯漏洞的方法,主要使用了Isolation Forest算法、XGBoost算法與余弦相似度算法相結合實現(xiàn)越權邏輯漏洞檢測,其主要算法說明如下。
孤立森林(Isolation Forest)是一種高效異常檢測算法,由周志華教授于2008年在第八屆IEEE數(shù)據(jù)挖掘國際會議上提出,屬于無監(jiān)督算法。在包含越權場景的訓練集中,對數(shù)據(jù)進行遞歸劃分,直至iTree將每個樣本數(shù)據(jù)與其他非越權數(shù)據(jù)區(qū)分開來,用少量樣本數(shù)據(jù)的特征條件即可檢測出異常的非越權場景數(shù)據(jù)。
孤立森林(Isolation Forest)算法分為兩個階段:第一階段需要訓練出棵孤立樹,組成孤立森林;第二階段將每個樣本點帶入孤立森林中的每棵樹,計算平均高度,最后計算出每個樣本點分數(shù),判斷是否為異常值。
第一階段:
Step2:從d個維度中隨機指定一個維度q,在當前數(shù)據(jù)中隨機產(chǎn)生一個切點p,切點p的計算公式如下所示:
Step3:此切割點p生成了一個超平面,將當前數(shù)據(jù)空間劃分為兩個子空間:確定維度小于p的樣本點放入左子節(jié)點;大于或等于p的放入右子節(jié)點;
Step4:遞歸Step2和Step3,直到所有葉子節(jié)點都只有一個樣本點或者孤立樹已經(jīng)達到指定的高度;
Step5:循環(huán)Step1至Step4,直至生成t棵孤立樹。第二階段:
XGBoost是2016年開發(fā)的Boosting庫,具備線性規(guī)模求解器和樹學習算法。XGBoost是Boosting算法的其中一種,Boosting算法的思想是將許多弱分類器集成在一起形成一個強分類器。XGBoost算法思想就是不斷地添加樹,不斷地進行特征分裂來生長一棵樹,每次添加一個樹,其實是學習一個新函數(shù),去擬合上次預測的殘差。與傳統(tǒng)的GBDT方法不同,為了提高訓練速度、更好的擬合損失函數(shù),XGBoost對損失函數(shù)做了二階泰勒展開。為了防止模型過擬合,XGBoost在目標函數(shù)之外又加入了正則項,對整體目標函數(shù)求最優(yōu)解,用于衡量目標函數(shù)的梯度下降和模型的復雜度。大致流程如下:
Step2:目標函數(shù)定義如下:
目標函數(shù)Obj由兩項組成:第一項為損失函數(shù),主要作用是來判斷模型預測值和真實值之間的損失,該函數(shù)必須是可微分的凸函數(shù),式中為真實值,為預測值;第二項為正則化項,用來控制模型的復雜度,正則化項傾向于選擇簡單的模型,避免過擬合。正則化項的定義如下:
正則化項中第一項γT通過葉子節(jié)點數(shù)及其系數(shù)控制樹的復雜度,值越大則目標函數(shù)越大,從而抑制模型的復雜程度,γ為葉子樹懲罰系數(shù),第二項為L2,正則項ω用于控制葉子節(jié)點的權重分數(shù),λ為葉子權重懲罰系數(shù)。
Step4:將公式(7)到結果代入(6)中可得到:
Step5:泰勒公式是用函數(shù)某點的信息描述其附近取值的公式,如果函數(shù)曲線足夠平滑,則可通過某一點的各階導數(shù)值構建一個多項式來近似表示函數(shù)在該點鄰域的值,此處只取泰勒展開式的兩階,定義如下:
余弦相似度是眾多計算相似度算法中的一種算法,最常應用于文本相似度的計算。余弦相似度是通過計算兩個向量的夾角的余弦值來度量它們之間的相似性。該算法將不同用戶響應內(nèi)容根據(jù)相關算法轉(zhuǎn)化為向量,通過計算兩個向量的空間夾角余弦來度量不同用戶響應內(nèi)容的相似值。余弦值越接近于1,表示兩個向量的夾角越接近0度,即兩個向量越相似,反之亦然。兩個向量的余弦相似度計算公式如下:余弦相似度通過計算兩個向量夾角的余弦值來評估其相似度。與歐式距離相比,余弦相似度主要計算兩個向量在方向上的差異。
圖1 整體流程
本文提出使用機器學習相關算法檢測越權邏輯漏洞的方法主要分為兩個階段,即訓練階段和預測階段。整體流程如圖 1所示,其中訓練階段主要包括訓練數(shù)據(jù)預處理、特征工程、算法選擇、模型參數(shù)調(diào)優(yōu)、訓練模型和保存模型等過程。預測階段包括獲取A、B兩個用戶對同一接口請求的響應數(shù)據(jù)、數(shù)據(jù)預處理、特征工程、孤立森林(Isolation Forest)模型預測、判斷是否包含漏洞場景、XGBoos模型預測、余弦相似度計算和判斷是否越權等過程。
鑒于目前互聯(lián)網(wǎng)上沒有針對包含越權邏輯漏洞場景的樣本數(shù)據(jù)集,且在未授權情況下私自對應用進行漏洞檢測和數(shù)據(jù)收集涉嫌違法,所以通過授權某電動汽車服務有限公司W(wǎng)eb、App應用的包含越權邏輯漏洞場景數(shù)據(jù)進行收集,其中場景類別修改密碼、訂單信息、個人信息、積分信息等為輸出標簽,其它數(shù)據(jù)基本信息為特征數(shù)據(jù),收集到的數(shù)據(jù)信息以及場景詳細如圖2 所示。
圖2 各類別訓練數(shù)據(jù)量分布
由于各類別數(shù)據(jù)量不均衡,導致模型在預測時,結果更多偏向于數(shù)據(jù)量多的那一類,所以本文采用了SMOTE(Synthetic Minority Oversampling Technique)技術對不均衡數(shù)據(jù)進行采樣,SMO-TE是合成少數(shù)類過采樣技術,基于隨機過采樣算法的一種改進方案, 通過添加生成的少數(shù)類樣本改變不平衡數(shù)據(jù)集的數(shù)據(jù)分布,使用線性插值的方法在兩個少數(shù)類樣本間合成新的樣本,從而有效緩解了由隨機過采樣引起的過擬合問題。后續(xù)把數(shù)據(jù)集按照7:3劃分訓練集和測試集。
數(shù)據(jù)預處理是模型訓練前的首要工作,包括數(shù)據(jù)清洗、去操、缺失值和異常值處理、向量化等。在實際工作中不同數(shù)據(jù)集會有不同特征,所以數(shù)據(jù)預處理也會有不同的方法。
1)數(shù)據(jù)清洗。在收集到的數(shù)據(jù)集中,有一些特殊字符、數(shù)字還有一些與業(yè)務無關的數(shù)據(jù),以及詞頻特別高或特別低的詞語,數(shù)據(jù)清洗就是刪除這些數(shù)據(jù)。
2)特征選擇。根據(jù)不同類別,數(shù)據(jù)特征也明顯不同,為此我們制作了詞云圖用于查看各類別特征,分布情況如圖3 所示,根據(jù)詞云中的詞頻分布可以進行特征選擇。
圖3 各類別數(shù)據(jù)特征分布
3)文本轉(zhuǎn)向量。模型輸入數(shù)據(jù)應該為向量形式,常用的方法有One-hot、N-Gram等,經(jīng)過對比文本采用TF-IDF算法把數(shù)據(jù)集中文本數(shù)據(jù)轉(zhuǎn)化為向量。
實驗采用Precision、Recall、F1-score指標對模型結果進行評估及可視化展示。查準率(Precision)表示預測為正例的樣本中有多少是真的正例,Precision越高,模型預測負面樣本的能力就越好。查全率(Recall)表示樣本中的正例有多少被預測為正例,Recall越高,模型對正樣本的預測能力越強。準確率(Accuracy)表示在預測結果中,正確預測的數(shù)量/樣本總數(shù)。為了評估不同算法的優(yōu)缺點,評估指標添加了基于Precision和Recall的F1-score的概念公式,對Precision和Recall進行綜合評價,F(xiàn)1-score越高,表示模型越穩(wěn)定。
越權邏輯漏洞模型訓練及預測采用PC配置3.70GHz的Intel(R)Core(TM)i9-10900K處理器,32GB內(nèi)存, 64位centos7操作系統(tǒng),使用python3.6.3作為分析、訓練、預測的編程語言。
使用Isolation Forest、XGBoost算法建模分析時,模型算法會有很多參數(shù),參數(shù)的初始化及選擇對模型的最終結果會有較大影響,因此訓練時需要對算法中的若干參數(shù)進行調(diào)優(yōu)。對于Isolation Forest模型,本文主要從產(chǎn)生孤立森林樹的數(shù)量、子采樣的數(shù)量、從總樣本中抽取來訓練每棵樹的屬性的數(shù)量這三個參數(shù)進行調(diào)優(yōu);對于XGBoost模型本文主要從最大樹的深度、迭代次數(shù)、樹上葉子節(jié)點數(shù)、最小葉子節(jié)點權重這四個參數(shù)進行調(diào)優(yōu),本文使用網(wǎng)格搜索方法對上述模型的參數(shù)進行自動尋優(yōu)。同時為了提高模型的泛化能力,模型在訓練時采用5折交叉驗證的方式自動選擇最優(yōu)參數(shù)。
結合3.2節(jié)中模型評估指標以及通過網(wǎng)格搜索進行參數(shù)尋優(yōu)方法,綜合評估上述Isolation Forest、XGBoost模型的相關性能,從中選出最優(yōu)模型。為便于查看各場景的識別準確率,本文制作了針對不同算法測試結果的precision、recall、f1-score情況。如下表所示。
表1 XGBoost評估指標
表2 決策樹評估指標
表3 SVM評估指標
表4 OneClass評估指標
表5 Isolation Forest評估指標
表6 多分類各模型準確率情況
針對上述表中的評估指標情況,計算出不同模型的分類準確率對比情況如表7、表8 所示:
表7 單分類各模型準確率情況
表8 各工具檢測出漏洞情況
綜合上述圖表結果可以看出,Isolation Forest模型和XGBoost模型結合,預測能力最優(yōu),說明模型Isolation Forest和XGBoost范化能力和預測能力最強,能夠最大程度地找準并找全包含越權邏輯漏洞場景的數(shù)據(jù)。
由于互聯(lián)網(wǎng)上沒有越權相關數(shù)據(jù)集,因此本文選擇某電動汽車服務有限公司內(nèi)部Web、App應用進行實驗。在Web、App應用安全測試階段,使用本文提出的方法進行測試,并對發(fā)現(xiàn)的漏洞進行人工確認,共發(fā)現(xiàn)3個應用存在越權邏輯漏洞。
實驗中,使用WebInspect等商業(yè)的漏洞掃描軟件對測試出的漏洞進行測試,最終在掃描結果中找出越權邏輯漏洞,與本文提出檢測方法檢測出的結果進行對比,如表9所示。本文提出方法的效果優(yōu)于其他商業(yè)掃描工具,主要原因是商業(yè)漏洞掃描器在執(zhí)行掃描過程中只能配置單個登錄用戶,其功能主要集中在對sql注入、弱口令、目錄遍歷等傳統(tǒng)web、中間件等已知漏洞檢測,不會對多個賬號請求的結果進行場景識別并做對比分析。
表9 漏洞確認列表
本次實驗發(fā)現(xiàn)的越權邏輯漏洞已全部整改完畢,由此可說明本文提出的越權邏輯漏洞檢測方法可以極大提高對Web、App應用的越權邏輯漏洞檢測能力,并能及時敦促開發(fā)人員及時整改應用漏洞,有效減輕Web、App應用的安全隱患。
針對Web、App應用可能存在的越權邏輯漏洞導致資金損失、信息泄露、違規(guī)操作等問題,本文提出了基于機器學習的越權邏輯漏洞檢測方法。利用三種機器學習算法相結合的方法實現(xiàn)了越權邏輯漏洞快速準確檢測,節(jié)省了大量的人力和財力,有效提高了Web、App應用的安全性。未來將主要在以下方面開展工作:一是本文針對六類越權邏輯漏洞場景進行檢測,后續(xù)應繼續(xù)完善針對其他場景的越權邏輯漏洞檢測;二是本文適用機器學習模型進行訓練,模型準確率在95%左右,后續(xù)將探索使用深度學習方式進行場景識別提高模型準確率。