一種基于集成神經(jīng)網(wǎng)絡(luò)的源代碼漏洞檢測(cè)方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種檢測(cè)方法,具體涉及一種基于集成神經(jīng)網(wǎng)絡(luò)的源代碼漏洞檢測(cè)方 法。
【背景技術(shù)】
[0002] 隨著黑客攻擊事件數(shù)量的不斷上升,懦蟲在Internet上的泛濫,信息安全逐漸成 為人們眼中的焦點(diǎn)。信息安全中的一個(gè)核心問題就是存在于計(jì)算機(jī)系統(tǒng)中的軟件安全漏 洞,惡意的攻擊者可以利用這些安全漏洞提升權(quán)限,訪問未授權(quán)資源,甚至破壞敏感數(shù)據(jù)。
[0003] 軟件安全漏洞造成的重大損失以及還在不斷增長(zhǎng)的漏洞數(shù)量使人們已經(jīng)開始深 刻認(rèn)識(shí)到軟件安全的重要性。從上世紀(jì)90年代,信息安全學(xué)者,計(jì)算機(jī)安全研宄人員就開 始了對(duì)計(jì)算機(jī)安全漏洞的研宄,最為人熟知的就是緩沖區(qū)溢出攻擊漏洞。但研宄的范圍主 要包括如何監(jiān)測(cè)和防御惡意攻擊者利用安全漏洞進(jìn)行攻擊,由此開發(fā)出來入侵檢測(cè)系統(tǒng) (IDS)和入侵防御系統(tǒng)(IPS)等等商業(yè)產(chǎn)品,以及針對(duì)緩沖區(qū)溢出的堆和棧,不可執(zhí)行堆棧 等等技術(shù)。直到本世紀(jì)初,研宄人員才把研宄的重點(diǎn)放在如何發(fā)現(xiàn)安全漏洞,更進(jìn)一步說, 如何借助自動(dòng)化或半自動(dòng)化的輔助工具使軟件開發(fā)人員在開發(fā)階段就發(fā)現(xiàn)軟件漏洞己經(jīng) 成為研宄的重點(diǎn)。這類輔助工具的開發(fā)需要大量使用諸如類型分析,指針別名分析,模型匹 配,代碼植入和動(dòng)態(tài)監(jiān)測(cè)等程序分析技術(shù)。比起早期用于編譯器優(yōu)化和軟件測(cè)試錯(cuò)誤查找 中的標(biāo)準(zhǔn)程序分析技術(shù),軟件安全漏洞的檢測(cè)要求更加復(fù)雜。如何從問題的根源上解決軟 件安全問題,如何才能更有效的利用這些分析技術(shù)來進(jìn)行安全漏洞查找已經(jīng)成為具有實(shí)用 價(jià)值的課題和方向。
【發(fā)明內(nèi)容】
[0004] 為了克服上述現(xiàn)有技術(shù)的不足,本發(fā)明提供一種基于集成神經(jīng)網(wǎng)絡(luò)的源代碼漏洞 檢測(cè)方法,較為有效地應(yīng)用于源代碼的漏洞檢測(cè),采取如下技術(shù)方案:
[0005] 本發(fā)明提供一種基于集成神經(jīng)網(wǎng)絡(luò)的源代碼漏洞檢測(cè)方法,所述方法包括以下步 驟:
[0006] 步驟1 :建立漏洞檢測(cè)模型;
[0007] 步驟2 :基于漏洞檢測(cè)模型進(jìn)行源代碼漏洞檢測(cè)。
[0008] 所述步驟1包括以下步驟:
[0009] 步驟1-1 :給定訓(xùn)練集;
[0010] 步驟1-2 :對(duì)源代碼進(jìn)行預(yù)處理,之后基于N-gram算法進(jìn)行特征提?。?br>[0011] 步驟1-3 :基于提取的特征,采用ReliefF算法進(jìn)行特征選??;
[0012] 步驟1-4 :基于集成神經(jīng)網(wǎng)絡(luò)進(jìn)行源代碼漏洞檢測(cè)學(xué)習(xí)。
[0013] 所述步驟1-1中,給定經(jīng)過人工分類的訓(xùn)練集D = {屯,d2,…,屯,…,dn},其中屯 表示第i個(gè)訓(xùn)練樣本,即第i個(gè)源代碼;n表示訓(xùn)練樣本個(gè)數(shù),即源代碼個(gè)數(shù)。
[0014] 所述步驟1-2包括以下步驟:
[0015] 步驟1-2-1 :對(duì)每個(gè)源代碼進(jìn)行預(yù)處理,包括數(shù)據(jù)規(guī)整、去噪和剔除垃圾數(shù)據(jù),預(yù) 處理后的訓(xùn)練樣本數(shù)用m表示;
[0016] 步驟1-2-2 :基于N-gram算法對(duì)源代碼進(jìn)行劃分,生成對(duì)應(yīng)的N-gram集合,完成 特征提取。
[0017] 所述步驟1-3具體包括以下步驟:
[0018] 步驟1-3-1 :初始化每個(gè)特征屬性A的特征權(quán)值W [A],使得W [A] = 0 ;
[0019] 步驟1-3-2 :統(tǒng)計(jì)源代碼類別中訓(xùn)練樣本個(gè)數(shù),為每個(gè)類別C分配k。值;
[0020] 步驟1-3-3 :隨機(jī)提取訓(xùn)練樣本R,并找到與訓(xùn)練樣本R最近鄰的k。個(gè)同類別的訓(xùn) 練樣本Hj;
[0021] 步驟1-3-4 :從提取的訓(xùn)練樣本R的不同類別的訓(xùn)練樣本中均找出k。個(gè)近鄰訓(xùn)練 樣本%(〇 ;
[0022] 步驟1-3-5 :對(duì)每個(gè)特征屬性A,按照以下公式更新其特征權(quán)值:
【主權(quán)項(xiàng)】
1. 一種基于集成神經(jīng)網(wǎng)絡(luò)的源代碼漏洞檢測(cè)方法,其特征在于:所述方法包括以下步 驟: 步驟1:建立漏洞檢測(cè)模型; 步驟2 :基于漏洞檢測(cè)模型進(jìn)行源代碼漏洞檢測(cè)。
2. 根據(jù)權(quán)利要求1所述的基于集成神經(jīng)網(wǎng)絡(luò)的源代碼漏洞檢測(cè)方法,其特征在于:所 述步驟1包括以下步驟: 步驟1-1 :給定訓(xùn)練集; 步驟1-2 :對(duì)源代碼進(jìn)行預(yù)處理,之后基于N-gram算法進(jìn)行特征提取; 步驟1-3 :基于提取的特征,采用ReliefF算法進(jìn)行特征選??; 步驟1-4 :基于集成神經(jīng)網(wǎng)絡(luò)進(jìn)行源代碼漏洞檢測(cè)學(xué)習(xí)。
3. 根據(jù)權(quán)利要求2所述的基于集成神經(jīng)網(wǎng)絡(luò)的源代碼漏洞檢測(cè)方法,其特征在于:所 述步驟1-1中,給定經(jīng)過人工分類的訓(xùn)練集D= {屯,d2,…,屯,???,(!"},其中屯表示第i 個(gè)訓(xùn)練樣本,即第i個(gè)源代碼;n表示訓(xùn)練樣本個(gè)數(shù),即源代碼個(gè)數(shù)。
4. 根據(jù)權(quán)利要求2所述的基于集成神經(jīng)網(wǎng)絡(luò)的源代碼漏洞檢測(cè)方法,其特征在于:所 述步驟1-2包括以下步驟: 步驟1-2-1 :對(duì)每個(gè)源代碼進(jìn)行預(yù)處理,包括數(shù)據(jù)規(guī)整、去噪和剔除垃圾數(shù)據(jù),預(yù)處理 后的訓(xùn)練樣本數(shù)用m表示; 步驟1-2-2 :基于N-gram算法對(duì)源代碼進(jìn)行劃分,生成對(duì)應(yīng)的N-gram集合,完成特征 提取。
5. 根據(jù)權(quán)利要求2所述的基于集成神經(jīng)網(wǎng)絡(luò)的源代碼漏洞檢測(cè)方法,其特征在于:所 述步驟1-3具體包括以下步驟: 步驟1-3-1 :初始化每個(gè)特征屬性A的特征權(quán)值W[A],使得W[A] = 0 ; 步驟1-3-2 :統(tǒng)計(jì)源代碼類別中訓(xùn)練樣本個(gè)數(shù),為每個(gè)類別C分配k。值; 步驟1-3-3 :隨機(jī)提取訓(xùn)練樣本R,并找到與訓(xùn)練樣本R最近鄰的k。個(gè)同類別的訓(xùn)練樣 本HJ; 步驟1-3-4 :從提取的訓(xùn)練樣本R的不同類別的訓(xùn)練樣本中均找出k。個(gè)近鄰訓(xùn)練樣本Mj(C); 步驟1-3-5 :對(duì)每個(gè)特征屬性A,按照以下公式更新其特征權(quán)值:
其中,diff()函數(shù)定義為: 若特征是離散的,有力/
若特征是連續(xù)的,有d
其中,value(A,Ij表示訓(xùn)練樣本L在特征屬性A上的值,value(A,I2)表示訓(xùn)練樣本 在特征屬性A上的值,max(A)表示特征屬性A在所有訓(xùn)練樣本中的最大值,min(A)表示 特征屬性A在所有訓(xùn)練樣本中的最小值; 步驟1-3-6 :根據(jù)更新后的特征權(quán)值,選擇特征值最大的若干維作為下一步集成神經(jīng) 網(wǎng)絡(luò)分類器的學(xué)習(xí)特征。
6. 根據(jù)權(quán)利要求2所述的基于集成神經(jīng)網(wǎng)絡(luò)的源代碼漏洞檢測(cè)方法,其特征在于:所 述步驟1-4中,基于集成神經(jīng)網(wǎng)絡(luò),并選擇BP算法對(duì)個(gè)體神經(jīng)網(wǎng)絡(luò)進(jìn)行學(xué)習(xí),并將個(gè)體網(wǎng)絡(luò) 的輸出結(jié)果采用基于DS證據(jù)理論進(jìn)行合成,進(jìn)而得到神經(jīng)網(wǎng)絡(luò)集成的最終結(jié)果,完成源代 碼漏洞檢測(cè)學(xué)習(xí)。
7. 根據(jù)權(quán)利要求6所述的基于集成神經(jīng)網(wǎng)絡(luò)的源代碼漏洞檢測(cè)方法,其特征在于:選 擇BP算法對(duì)個(gè)體神經(jīng)網(wǎng)絡(luò)進(jìn)行學(xué)習(xí),具體包括: 步驟1):給各特征權(quán)值分別賦區(qū)間(_1,1)內(nèi)的隨機(jī)數(shù),設(shè)定誤差函數(shù)e,設(shè)定計(jì)算精度 值e和最大學(xué)習(xí)次數(shù)M; 步驟2):隨機(jī)選取輸出層第k個(gè)訓(xùn)練樣本(1。〇〇及對(duì)應(yīng)期望x(k),(1。〇〇和x(k)分別 表示為: d0(k) = (d^k),d2(k), ???,dq(k))x(k) =h(k),x2 (k),…,xn (k)) 步驟3):計(jì)算隱含層各神經(jīng)元的輸入和輸出; 步驟4):根據(jù)個(gè)體神經(jīng)網(wǎng)絡(luò)期望輸出和實(shí)際輸出計(jì)算誤差函數(shù)e對(duì)輸出層各神經(jīng)元的 偏導(dǎo)數(shù)Mk); 步驟5):利用隱含層到輸出層的連接權(quán)值Wto(k)、誤差函數(shù)e對(duì)輸出層各神經(jīng)元的偏導(dǎo) 數(shù)8。〇〇和隱含層各神經(jīng)元的輸出,計(jì)算誤差函數(shù)e對(duì)隱含層各神經(jīng)元的偏導(dǎo)數(shù)Sh(k); 步驟6):利用誤差函數(shù)e對(duì)輸出層各神經(jīng)元的偏導(dǎo)數(shù)6。〇〇和隱含層各神經(jīng)元的輸出 修正wh()(k); 步驟7):利用誤差函數(shù)e對(duì)隱含層各神經(jīng)元的偏導(dǎo)數(shù)Sh(k)和輸入層各神經(jīng)元的輸入 修正輸入層到隱含層的連接權(quán)值; 步驟8):計(jì)算全局誤差E,有:
其中,7。00表示輸出層的輸出結(jié)果; 步驟9):判斷全局誤差E是否滿足要求,當(dāng)全局誤差E達(dá)到設(shè)定的計(jì)算精度值e或?qū)W 習(xí)次數(shù)大于設(shè)定的最大學(xué)習(xí)次數(shù)M,則結(jié)束;否則選取下一個(gè)學(xué)習(xí)樣本及對(duì)應(yīng)的期望輸出, 返回到步驟3),進(jìn)入下一輪學(xué)習(xí)。
8. 根據(jù)權(quán)利要求1所述的基于集成神經(jīng)網(wǎng)絡(luò)的源代碼漏洞檢測(cè)方法,其特征在于:所 述步驟2具體包括以下步驟: 步驟2-1 :采用N-gram算法對(duì)源代碼集進(jìn)行處理,得到N-Gram集合; 步驟2-2 :根據(jù)ReliefF算法選取的特征從N-Gram集合中提取得到特征向量Dp,表示 為: DP= (wpl,wp2, - ,wpk, - ,wpn) 其中,wpk表示從N-Gram集合中提取的第k個(gè)特征; 步驟2-3 :將特征向量%輸入到集成神經(jīng)網(wǎng)絡(luò)中,得到最終的檢測(cè)結(jié)果。
【專利摘要】本發(fā)明提供一種基于集成神經(jīng)網(wǎng)絡(luò)的源代碼漏洞檢測(cè)方法,使用N-Gram算法對(duì)源代碼進(jìn)行處理,使用N-gram集合來表示源代碼,采用概率統(tǒng)計(jì)方法從N-gram集合中挖掘出隱含其間的特征,保證代碼內(nèi)容的屬性并保留了代碼之間的前后順序關(guān)聯(lián)性質(zhì);使用ReliefF算法進(jìn)行特征選取,計(jì)算特征權(quán)值,為解決樣本數(shù)據(jù)極端不平衡的情況,需要在計(jì)算中充分考慮小類別樣本的作用,為不同類別設(shè)置不同的近鄰值,使得小樣本數(shù)據(jù)的特征能夠在計(jì)算中體現(xiàn)作用;在神經(jīng)網(wǎng)絡(luò)中采用BP算法訓(xùn)練多層前饋網(wǎng)絡(luò)作為個(gè)體網(wǎng)絡(luò),利用DS證據(jù)理論通過識(shí)別率、拒絕率等一系列參數(shù)學(xué)習(xí)每個(gè)個(gè)體網(wǎng)絡(luò)的信任范圍,根據(jù)每個(gè)網(wǎng)絡(luò)的不同信任值匯總出最終的檢測(cè)結(jié)果,實(shí)現(xiàn)了準(zhǔn)確有效的源代碼漏洞檢測(cè)。
【IPC分類】G06N3-02, G06F11-36
【公開號(hào)】CN104809069
【申請(qǐng)?zhí)枴緾N201510236687
【發(fā)明人】周誠(chéng), 張濤, 馬媛媛, 楚杰, 汪晨, 時(shí)堅(jiān), 李偉偉, 張波, 黃秀麗, 費(fèi)稼軒
【申請(qǐng)人】中國(guó)電力科學(xué)研究院, 國(guó)網(wǎng)智能電網(wǎng)研究院, 國(guó)家電網(wǎng)公司, 國(guó)網(wǎng)安徽省電力公司
【公開日】2015年7月29日
【申請(qǐng)日】2015年5月11日