国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種基于序列模式挖掘的軟件安全漏洞檢測方法

      文檔序號:6584406閱讀:174來源:國知局
      專利名稱:一種基于序列模式挖掘的軟件安全漏洞檢測方法
      技術領域
      本發(fā)明涉及一種軟件安全漏洞靜態(tài)檢測技術,特別涉及一種基于序列模式挖掘的
      軟件安全漏洞檢測方法,屬于信息安全技術領域。
      背景技術
      隨著計算機技術的迅速發(fā)展,人類社會的信息化程度越來越高,整個社會的政治、 經(jīng)濟、軍事、文化以及其他領域?qū)τ嬎銠C信息系統(tǒng)的依賴程度也越來越高。在這種情況下, 計算機系統(tǒng)的安全性得到了人們越來越多的關注。然而,大型軟件、系統(tǒng)的編寫需要許許多 多程序員共同完成,他們將一個軟件或系統(tǒng)分成若干板塊,分工編寫,然后再匯總,測試;最 后再修補、發(fā)布,因此在軟件中存在安全漏洞幾乎是不可避免的。軟件安全漏洞指軟件設計 實現(xiàn)過程中被引入的、在數(shù)據(jù)訪問或行為邏輯等方面的缺陷。這些漏洞常常被攻擊者利用, 從而使程序行為違背一定的安全策略?;谏鲜鲈颍壳皩浖踩┒礄z測技術的研 究越來越受到重視。 按照檢測過程中是否需要執(zhí)行程序的標準,軟件安全漏洞檢測技術分為動態(tài)檢測
      和靜態(tài)檢測。
      (1)動態(tài)測試 動態(tài)測試是在程序運行過程中注入測試數(shù)據(jù),通過對程序的運行環(huán)境(包括環(huán)境 變量、內(nèi)存、堆和棧等)進行分析,觀察程序運行是否正常、程序行為是否滿足要求,來檢測 程序是否存在漏洞。動態(tài)檢測技術的優(yōu)點是不直接面對源代碼,不需要修改目標程序源代 碼,這在一定程度上提高程序的保密性。但其缺點是僅關注程序運行的外部表現(xiàn),因此,定 位不準確、漏報率高,不能很好地發(fā)現(xiàn)隱藏在程序中的漏洞。動態(tài)測試主要應用于軟件生命 周期的測試階段。(2)靜態(tài)檢測 靜態(tài)檢測主要應用于軟件生命周期的編碼階段。靜態(tài)檢測不編譯運行程序,而是
      通過對程序源代碼進行分析以發(fā)現(xiàn)其中的錯誤。靜態(tài)檢測的目標不是證明程序完全正確, 而是作為動態(tài)測試的補充,在程序運行前盡可能多地發(fā)現(xiàn)其中隱含的錯誤,提高程序的可 靠性和健壯性。對一些狀態(tài)有限且對穩(wěn)定性要求很高的軟件來說,采用適當?shù)撵o態(tài)檢測技 術是非常有必要的。但靜態(tài)檢測也有局限性,對于程序的某些性質(zhì)(比如和指針運算、動態(tài) 存儲分配等相關的性質(zhì)),用靜態(tài)檢測難以奏效。因此,靜態(tài)檢測并不能完全替代動態(tài)測試。 靜態(tài)檢測包括靜態(tài)分析和程序驗證。其中靜態(tài)分析方法主要包括三種檢測方法 詞法分析,規(guī)則檢查和類型推導。 靜態(tài)分析方法直接掃描程序代碼,提取程序關鍵語法,解釋其語義,理解程序行 為,根據(jù)預先設定的漏洞特征、安全規(guī)則等檢測漏洞。各種靜態(tài)分析工具的不同點主要體現(xiàn) 在掃描程序的過程中所采用的算法不同,以及在與預先設定的漏洞特征進行比對時所采用 的方法不同。靜態(tài)分析方法的缺點是①只關注程序表面特征,過于簡單;②很多靜態(tài)分析 工具需要人工輔助定義類型和規(guī)則安全漏洞的檢測,其擴展性和自動性差,可檢查的漏洞也有限。 程序驗證方法通過抽象程序得到形式化程序或模型,然后使用形式化驗證技術進
      行檢驗證明,通過驗證正確性的方式來檢測漏洞。各種程序驗證工具的不同點主要體現(xiàn)在 從程序中抽象得到的模型不同,以及針對安全特性建立的模型不同。靜態(tài)分析方法采用的 是模擬掃描,而程序驗證方法采用的是嚴謹?shù)淖C明。與靜態(tài)分析方法相比,程序驗證方法的 理論基礎更加嚴格,在程序全局性的檢測上,效果更加突出。程序驗證方法的自動化程度 高,可擴展性好。 靜態(tài)檢測中的程序驗證方法包括模型檢驗,定理證明和符號執(zhí)行。
      安全特性模型檢驗程序M0PS(M0del Checking Programs for Securityproperties)和SLAM是兩個典型的模型檢驗工具。H. Chen, D. Wagner在文 獻《M0PS :an Infrastructure for Examining Security Properties of Software》 (Technical R印ort,2002.)中介紹了 M0PS, MOPS是一種檢測軟件安全特性的體系結(jié)構。 MOPS利用硬件設計領域中的模型檢驗方法來檢測軟件安全特性,它分別對源程序和安全特 性建模。安全特性模型用有窮自動機表示,源程序模型用下推自動機來表示。MOPS檢驗的 基本思想是通常程序都會執(zhí)行一些與安全相關的操作,而安全特性則定義了這些操作的 順序,違背該順序的操作序列可能導致潛在的安全漏洞。軟件安全檢驗的目標就是驗證程 序是否很好的滿足了安全特性。 T. Ball, S. K. Rajamani等人在文獻《Automatically Validating Temporal Safety Properties of Interfaces》(Proc. 8th Int' 1 SPIN Workshop on ModelChecking of Software, LNCS 2057, Springer-Verlag, 2001, pp. 103-122.)中介紹了 SLAM, SLAM用模型 檢驗的方法對C程序進行分析。SLAM的分析過程是一個對抽象的程序模型不斷細化的反復 迭代的過程。首先對程序進行抽象建立模型,然后分析模型。如果發(fā)現(xiàn)能夠?qū)е洛e誤的路 徑則終止分析過程并報告錯誤;如果已經(jīng)枚舉證明所有可能的路徑都不可能導致錯誤則對 模型進行細化,建立并分析細化后的模型,如此迭代直到發(fā)現(xiàn)錯誤或者超時。
      符號執(zhí)行工具典型的有ESC和PREfix。 ESC采用定理證明的方法進行程序分析 驗證。C. Flanagan等人在文獻《An Annotation Assistant for ESC/Java. ESC. FME2001》 (Lecture Notes in Computer Science 2021, 2001,pp. 500—517.)中介紹了ESC符號執(zhí)行 工具。ESC的基本思想是,首先由帶規(guī)約的程序生成證明條件,然后由定理證明器進行處理。 如果成功則說明程序中不包含錯誤,如果失敗則可以通過后處理程序推導出導致失敗的可 能原因。ESC利用最弱前置條件和最強后置條件,將規(guī)約以及約束條件轉(zhuǎn)換為Dijkstra衛(wèi) 式命令再轉(zhuǎn)換成證明條件由定理證明器證明。ESC還可以用于檢查多線程的并發(fā)程序中經(jīng) 常出現(xiàn)的一些錯誤。PREf ix使用符號執(zhí)行及約束求解方法對C/C++程序進行靜態(tài)分析測 試。W. R. Bush等人在文獻《A static analyzer for finding dynamic programmingerrors》 (Software-Practice and Experience,2000,30(7), pp. 755-802.)中介紹了 PREfix。 PREf ix的工作流程是首先分析源代碼,將其轉(zhuǎn)換成抽象的語法樹,然后對過程依照調(diào)用關 系進行拓撲排序,再為每個過程生成相應的抽象模型,最后靜態(tài)模擬執(zhí)行路徑并用約束求 解的方法對約束集合進行檢測。 現(xiàn)有靜態(tài)檢測技術在利用漏洞相關數(shù)據(jù)分析軟件安全時,只是對常見的一些相關 漏洞建立一個簡單的小數(shù)據(jù)庫。由于漏洞數(shù)據(jù)收集的不充分,現(xiàn)有的漏洞檢測工具存在的缺點是漏報率高,并且效率較低。 本發(fā)明涉及到的另外一項重要的已有技術是序列模式挖掘算法的CloSpan算法。 其算法描述如下算法ClosedMining(DS, min-sup, L) 輸入數(shù)據(jù)庫DS和最小支持度min-sup 輸出閉合序列集L (1)刪除非頻繁項集和空的序列,在待挖掘數(shù)據(jù)庫DS中對序列中的每個項集進行 排序。 (2)對長度為1的頻繁項集調(diào)用CloSpan算法。
      (3)刪除結(jié)果集中的非閉合序列。
      CloSpan (s, Ds, min-sup, U算法描述如下
      輸入序列s,投影數(shù)據(jù)庫Ds,最小支持度min_Sup
      輸出前綴搜索序列格L —個序列之所以稱為序列模式,它必須是頻繁的,即它在數(shù)據(jù)庫中出現(xiàn)的次數(shù)至 少是min-sup次。最小支持度的取值視實際情況而定。本發(fā)明在軟件安全漏洞檢測中使用 該算法時,DS表示漏洞相關操作序列數(shù)據(jù)庫,L是挖掘到的頻繁發(fā)生的漏洞相關操作序列, min_sup是最小支持度。 在軟件安全漏洞檢測中使用CloSpan算法對漏洞相關操作序列庫進行數(shù)據(jù)挖掘 得到頻繁發(fā)生的漏洞相關操作序列以后,無需對漏洞相關操作序列庫中的每一個漏洞相關 操作序列和源代碼程序進行比對,只需與頻繁發(fā)生的漏洞相關操作序列比對即可,可大大 提高效率。

      發(fā)明內(nèi)容
      本發(fā)明的目的是針對上述已有技術存在的不足,提出一種基于序列模式挖掘的軟
      件安全漏洞檢測方法。本發(fā)明首先利用已檢測到的、大量的安全漏洞相關操作序列數(shù)據(jù),創(chuàng)
      建大的安全漏洞相關操作序列數(shù)據(jù)庫,然后利用數(shù)據(jù)挖掘技術中的閉序列模式挖掘算法挖
      掘頻繁發(fā)生的漏洞相關操作序,將挖掘到的頻繁發(fā)生的漏洞相關操作序列用來檢測當前軟
      件系統(tǒng)的安全漏洞,從而降低漏洞檢測漏報率,提高安全漏洞檢測效率。隨著漏洞數(shù)據(jù)的積
      累,本發(fā)明的安全漏洞檢測效率高的優(yōu)點會更加突出。 本發(fā)明的目的是通過下述技術方案實現(xiàn)的。 首先給出漏洞相關操作序列的定義 漏洞相關操作序列是指會導致漏洞產(chǎn)生的一個有序的程序操作序列。 本發(fā)明的一種基于序列模式挖掘的軟件安全漏洞檢測方法的整體框架設計如圖1
      所示。其具體操作步驟如下 步驟一、利用已有的安全漏洞數(shù)據(jù),創(chuàng)建軟件安全漏洞序列數(shù)據(jù)庫。
      收集已有漏洞檢測工具檢測到的安全漏洞數(shù)據(jù),創(chuàng)建軟件安全漏洞序列數(shù)據(jù)庫。 軟件安全漏洞序列數(shù)據(jù)庫用S表示,包含已確認的軟件安全漏洞對應的操作序列。S是元組 〈SID, s, time〉的集合,其中SID是該漏洞相關操作序列的序列號;s是漏洞相關操作序列, 序列s記作〈ei, e2, e3,......, e,, ei表示該漏洞的一個操作;time表示該漏洞操作序列的最近一次訪問時間。 步驟二、對軟件安全漏洞序列數(shù)據(jù)庫進行預處理 在步驟一的基礎上,利用數(shù)據(jù)挖掘中數(shù)據(jù)預處理階段的數(shù)據(jù)清洗、數(shù)據(jù)集成和數(shù) 據(jù)消減方法清除掉安全漏洞相關操作序列數(shù)據(jù)庫中存在錯誤或異常的數(shù)據(jù)、不完整的數(shù) 據(jù)、不一致數(shù)據(jù)以及冗余數(shù)據(jù)。 步驟三、挖掘頻繁發(fā)生的漏洞相關操作序列 在步驟二的基礎上,采用閉序列模式挖掘算法從軟件安全漏洞序列數(shù)據(jù)庫中挖掘 出頻繁發(fā)生的漏洞相關操作序列。 經(jīng)過上述步驟,即可創(chuàng)建安全漏洞序列數(shù)據(jù)庫以及挖掘出頻繁發(fā)生的漏洞相關操 作序列集(用B表示頻繁發(fā)生的漏洞相關操作序列集)。
      步驟四、進行軟件安全漏洞檢測 在步驟三挖掘出頻繁發(fā)生的漏洞相關操作序列的基礎上進行軟件安全漏洞檢測。 其具體操作步驟如下 第1步從源程序中抽取程序執(zhí)行路徑 利用安全特性模型檢驗程序MOPS生成源程序的控制流圖;然后利用轉(zhuǎn)換命令將 壓縮后的控制流圖轉(zhuǎn)換為對應的程序路徑,進一步生成程序可能執(zhí)行路徑序列集(用T表 示)。
      第2步檢測軟件安全漏洞 對頻繁發(fā)生的漏洞相關操作序列集B和可能執(zhí)行路徑序列集T取交集,若B與T
      的交集為空,則說明源程序不存在這些頻繁發(fā)生的漏洞,結(jié)束操作;若B與T的交集不為空,
      則說明源程序存在這些頻繁發(fā)生的漏洞,輸出檢測到的漏洞相關操作序列。
      本發(fā)明還提供一種對漏洞相關操作序列庫進行更新的方法,具體為對舊序列的
      刪除和對新序列的添加。按照time屬性對于多時未訪問的,時間上滿足預定義條件的漏洞
      相關操作序列,將其刪除。對于新出現(xiàn)的,數(shù)據(jù)庫中不存在的安全漏洞,將其添加到序列數(shù)
      據(jù)庫中。 有益效果 充分利用先驗知識,即已有的安全漏洞數(shù)據(jù),創(chuàng)建軟件安全漏洞庫,然后利用數(shù)據(jù) 挖掘技術中的閉序列模式挖掘算法挖掘隱藏在漏洞數(shù)據(jù)背后的信息,將挖掘到的頻繁發(fā)生 的漏洞相關操作序列用來檢測當前軟件系統(tǒng)的安全漏洞,從而降低漏洞檢測漏報率,提高 安全漏洞檢測效率。隨著時間的推移,漏洞數(shù)據(jù)的積累,本發(fā)明的優(yōu)點會更加突出。


      圖1為本發(fā)明的一種基于序列模式挖掘的軟件安全漏洞檢測方法的整體框架設 計流程圖。
      具體實施例方式
      下面結(jié)合具體實施方式
      對本發(fā)明技術方案進行詳細描述。
      本發(fā)明的具體操作步驟如下 步驟一、利用已有的安全漏洞數(shù)據(jù),創(chuàng)建安全漏洞序列數(shù)據(jù)庫。
      6
      收集已有漏洞檢測工具檢測到的安全漏洞數(shù)據(jù),創(chuàng)建軟件安全漏洞序列數(shù)據(jù)庫。 序列數(shù)據(jù)庫用S表示,包含已確認的安全漏洞對應的操作序列。S是元組〈SID,s,time〉的 集合,其中SID是該漏洞相關操作序列的序列號;s是漏洞相關操作序列,序列s記作〈ei,
      e2, e3,......, e,, ei表示該漏洞的一個操作;time表示該漏洞操作序列的最近一次訪問時間。 步驟二、對安全漏洞序列數(shù)據(jù)庫進行預處理 在步驟一的基礎上,利用數(shù)據(jù)挖掘中數(shù)據(jù)預處理階段的數(shù)據(jù)清洗、數(shù)據(jù)集成和數(shù) 據(jù)消減方法清除掉安全漏洞相關操作序列數(shù)據(jù)庫中存在錯誤或異常的數(shù)據(jù)、不完整的數(shù) 據(jù)、不一致數(shù)據(jù)以及冗余數(shù)據(jù)。 步驟三、挖掘頻繁發(fā)生的漏洞相關操作序列 在步驟二的基礎上,采用Yan等人在文獻《CloSpan :Mining closedsequential patterns in large data sets》(Proceedings of the Third SIAMInternational Conference on Data Mining, San Francisco, CA, USA, Mayl_3,2003.)中提出的CloSpan 算法從軟件安全漏洞序列數(shù)據(jù)庫中挖掘出頻繁發(fā)生的漏洞相關操作序列。
      步驟四、進行軟件安全漏洞檢測 在步驟三挖掘出頻繁發(fā)生的漏洞相關操作序列的基礎上進行軟件安全漏洞檢測。 其具體操作步驟如下 第1步從源程序中抽取程序執(zhí)行路徑 利用安全特性模型檢驗程序MOPS生成源程序的控制流圖;然后利用轉(zhuǎn)換命令將 壓縮后的控制流圖轉(zhuǎn)換為對應的程序路徑,進一步生成程序可能執(zhí)行路徑序列集(用T表 示)。
      第2步檢測軟件安全漏洞 對頻繁發(fā)生的漏洞相關操作序列集B和可能執(zhí)行路徑序列集T取交集,若B與T
      的交集為空,則說明源程序不存在這些頻繁發(fā)生的漏洞,結(jié)束操作;若B與T的交集不為空,
      則說明源程序存在這些頻繁發(fā)生的漏洞,輸出檢測到的漏洞相關操作序列。
      對漏洞相關操作序列庫進行更新時,具體操作為對舊序列的刪除和對新序列的
      添加。按照time屬性對于多時未訪問的,時間上滿足預定義條件的漏洞相關操作序列,將
      其刪除。對于新出現(xiàn)的,數(shù)據(jù)庫中不存在的安全漏洞,將其添加到序列數(shù)據(jù)庫中。
      權利要求
      一種基于序列模式挖掘的軟件安全漏洞檢測方法,其特征在于具體操作步驟如下步驟一、利用已有的軟件安全漏洞數(shù)據(jù),創(chuàng)建軟件安全漏洞序列數(shù)據(jù)庫;收集已有漏洞檢測工具檢測到的安全漏洞數(shù)據(jù),創(chuàng)建軟件安全漏洞序列數(shù)據(jù)庫;序列數(shù)據(jù)庫用S表示,包含已確認的軟件安全漏洞對應的操作序列;S是元組<SID,s,time>的集合,其中SID是該漏洞相關操作序列的序列號;s是漏洞相關操作序列,序列s記作<e1,e2,e3,......,ei>,ei表示該漏洞的一個操作;time表示該漏洞操作序列的最近一次訪問時間;步驟二、對軟件安全漏洞序列數(shù)據(jù)庫進行預處理在步驟一的基礎上,利用數(shù)據(jù)挖掘中數(shù)據(jù)預處理階段的數(shù)據(jù)清洗、數(shù)據(jù)集成和數(shù)據(jù)消減方法清除掉安全漏洞相關操作序列數(shù)據(jù)庫中存在錯誤或異常的數(shù)據(jù)、不完整的數(shù)據(jù)、不一致數(shù)據(jù)以及冗余數(shù)據(jù);步驟三、挖掘頻繁發(fā)生的漏洞相關操作序列在步驟二的基礎上,采用閉序列模式挖掘算法從軟件安全漏洞序列數(shù)據(jù)庫中挖掘出頻繁發(fā)生的漏洞相關操作序列;經(jīng)過上述步驟,即可創(chuàng)建安全漏洞序列數(shù)據(jù)庫以及挖掘出頻繁發(fā)生的漏洞相關操作序列集,用B表示頻繁發(fā)生的漏洞相關操作序列集;步驟四、進行軟件安全漏洞檢測在步驟三挖掘出頻繁發(fā)生的漏洞相關操作序列的基礎上進行軟件安全漏洞檢測;其具體操作步驟如下第1步從源程序中抽取程序執(zhí)行路徑利用安全特性模型檢驗程序MOPS生成源程序的控制流圖;然后利用轉(zhuǎn)換命令將壓縮后的控制流圖轉(zhuǎn)換為對應的程序路徑,進一步生成程序可能執(zhí)行路徑序列集,用T表示;第2步檢測軟件安全漏洞對頻繁發(fā)生的漏洞相關操作序列集B和可能執(zhí)行路徑序列集T取交集,若B與T的交集為空,則說明源程序不存在這些頻繁發(fā)生的漏洞, 結(jié)束操作;若B與T的交集不為空,則說明源程序存在這些頻繁發(fā)生的漏洞,輸出檢測到的漏洞相關操作序列。
      2. 如權利要求1所述的一種基于序列模式挖掘的軟件安全漏洞檢測方法,其特征在 于步驟一中創(chuàng)建的軟件安全漏洞序列數(shù)據(jù)庫,其更新方法為對舊序列的刪除和對新序 列的添加;按照time屬性對于多時未訪問的,時間上滿足預定義條件的漏洞相關操作序 列,將其刪除;對于新出現(xiàn)的,數(shù)據(jù)庫中不存在的安全漏洞,將其添加到序列數(shù)據(jù)庫中。
      3. 如權利要求1所述的一種基于序列模式挖掘的軟件安全漏洞檢測方法,其特征在 于在步驟三挖掘頻繁發(fā)生的漏洞相關操作序列時采用CloSpan算法。
      全文摘要
      本發(fā)明提出一種基于序列模式挖掘的軟件安全漏洞檢測方法。首先利用已檢測到的、大量的軟件安全漏洞相關操作序列數(shù)據(jù),創(chuàng)建安全漏洞相關操作序列數(shù)據(jù)庫,然后利用數(shù)據(jù)挖掘技術中的閉序列模式挖掘算法挖掘頻繁發(fā)生的漏洞相關操作序,將挖掘到的頻繁發(fā)生的漏洞相關操作序列用來檢測當前軟件系統(tǒng)的安全漏洞,從而降低漏洞檢測漏報率,提高安全漏洞檢測效率。隨著漏洞數(shù)據(jù)的積累,本發(fā)明的安全漏洞檢測效率高的優(yōu)點會更加突出。
      文檔編號G06F17/30GK101710378SQ200910235658
      公開日2010年5月19日 申請日期2009年10月10日 優(yōu)先權日2009年10月10日
      發(fā)明者任家東, 孟麗麗, 張冬梅, 王崑聲, 王立波, 胡昌振, 馬瑞青 申請人:北京理工大學;燕山大學;中國航天科技集團公司第七一○研究所
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1