專利名稱:一種基于序列聚類的軟件安全特性分析方法
技術領域:
本發明涉及一種軟件安全特性分析方法,特別是一種基于序列聚類的軟件安全特 性分析方法,屬于計算機軟件安全領域。
背景技術:
隨著計算機應用的不斷發展,軟件已經滲透到國民經濟和國防建設的各個領域, 軟件中存在的任何安全漏洞都嚴重威脅著生命財產的安全。如何全面、有效、準確的挖掘出 軟件中的安全漏洞,是解決該問題的根本途徑。近年來,國內外學者對軟件安全性問題進行了大量的研究,提出一些挖掘軟件漏 洞的方法。Salas提出了一個基于模型的安全漏洞檢測框架,因為其它的基于模型的方法忽 視了安全漏洞對實施細節是敏感的,Salas通過定義一個三重框架模型自動產生測試用例, 用以檢測軟件中存在的已知的安全漏洞。然而該方法不能對未知類型的潛在安全漏洞進行 有效檢測。針對軟件開發過程中所存在的漏洞,Eichinger通過研究程序執行的調用圖和 圖挖掘算法,提出了一種基于圖挖掘和傳統特征選擇的軟件漏洞發掘方法。然而,當圖的規 模較大時,該方法的效率較低。Johnson等人利用類型限定詞方法來檢測Linux內核中的用 戶及內核態指針漏洞,同時擴展了 CQUAL的基本特性推理能力用以支持上下文敏感性及更 高的結構數據的分析精度。與之類似,Shankar等人利用CQUAL來檢測格式化字符串漏洞。 但是該類方法存在的最大問題就是缺少對合法性檢查的識別機制,同時遺漏了關鍵的檢測 點,導致較多的漏報和誤報。Aftersight系統和Memcheck系統是污點追蹤和傳播技術的典型代表,無需任何 程序源代碼,在運行時檢測當前執行路徑中是否存在內存泄露及懸掛指針等漏洞,但是該 技術僅能檢測出當前執行路徑上已經存在的漏洞,不能主動執行并搜索程序中的其他的可 執行路徑。UQBTng也是一個二進制級別的整數溢出漏洞自動檢測的工具,其首先利用逆向 編譯技術將二進制代碼轉換為C代碼,而后將斷點插入在內存分配函數前,再通過CBMC邊 界模型約束檢查器來校驗程序屬性,并從中挖掘漏洞,但是逆向編譯技術本身尚未成熟,進 而限制了 UQBTng的準確性。IntScope同樣是一個二進制級自動挖掘整數溢出漏洞的系統, 該系統直接符號化地執行X86代碼,同時從中提取和輸入相關的約束屬性,最后檢查和輸 入數據相關的指令是否可能導致整數溢出漏洞,但是因為其是符號化模擬執行,檢測的準 確性不高,不能完全準確的模擬真正運行時的環境,致使系統在進行整數溢出檢測時的誤 報率和漏報率較高。目前,逆向分析技術是軟件漏洞分析的一種重要方法,利用已知漏洞信息構建知 識庫是軟件漏洞逆向分析技術的關鍵步驟,基于所構建的漏洞知識庫并結合有效的挖掘算 法,定位和分析待測軟件中潛在的漏洞。聚類分析是數據挖掘中的一種重要分析方法,該方法不需要任何先驗知識,自動 挖掘數據中的隱藏模式,其基本思想就是將數據之間的相似性看成客體之間“距離”遠近的一種度量,將距離較近的客體歸為一類,這就使得同一類中的客體的相似性很大,不同類中 的客體相似性很小。聚類分析的應用十分廣泛,比較典型的應用有在地理信息系統中通過 聚類發現特征空間來建立主題索引;空間數據分析,檢測并解釋空間中的簇;文檔分類;通 過分析Web日志數據來發現相似的訪問模式;電子商務中市場分片和為用戶提供個性化服 務等。與傳統聚類方法不同,序列聚類是針對序列類型數據的一種聚類分析方法,使具有相 同或相似功能的序列歸為一類,不同類中的序列功能差異性很大。通過對序列數據進行聚 類分析,可以挖掘數據中潛在的知識和結構,如對交易序列進行聚類可以對客戶群進行劃 分,制定有針對性的市場廣告。
發明內容
本發明目的在于提供一種基于聚類技術的軟件安全特性分析方法,針對高質量的 軟件漏洞序列集收集困難,影響漏洞知識庫質量,以及不合適的相似性度量影響漏洞檢測 準確率的問題,利用序列聚類技術對軟件漏洞序列集進行分析,挖掘軟件漏洞模式,以提高 漏洞知識庫的質量;設計基于編輯距離的相似性度量,以提高漏洞檢測準確率。為了解決上述問題,本發明提出了一種基于聚類技術的軟件安全特性分析方法, 技術方案如下步驟一收集現有的軟件漏洞對已有軟件漏洞檢測工具檢測到的漏洞進行采 集,如棧溢出、堆溢出、整數溢出等。步驟二 預處理收集的軟件漏洞,創建軟件漏洞序列數據庫預處理步驟一所收 集的漏洞數據,去掉注釋、空行、不必要的函數塊等冗余信息,并抽象為序列形式錄入軟件 漏洞序列數據庫。軟件漏洞序列數據庫包含所收集的軟件漏洞產生時的序列,軟件漏洞序列數據 庫是一個三元組<SID,S,VD>的集合,其中SID是軟件漏洞序列的標識號,S是軟件漏洞序 列,VD是軟件漏洞序列的漏洞描述,描述漏洞類型以及產生的原因。步驟三基于序列聚類技術挖掘軟件漏洞模式利用序列聚類技術對軟件漏洞序 列數據庫進行自動分類,將具有相同或相似特征的漏洞序列分配到同一個簇中,形成一個 個軟件漏洞模式。軟件漏洞模式對軟件漏洞序列數據庫中的漏洞序列進行聚類分析以后,形成一 個個的聚類簇,每一個聚類簇代表一個漏洞模式P,并用一個四元組<PID,SET, SC, CNT>表 示,其中PID表示聚類簇的標識號,SET表示該漏洞模式中漏洞序列的集合,SC表示漏洞模 式的中心序列,CNT表示該漏洞模式中漏洞序列的總條數。基于序列聚類分析的軟件漏洞模式挖掘算法是將步驟二得到的軟件漏洞序列數 據庫采用序列聚類技術進行挖掘,得到軟件漏洞模式的具體步驟如下①任選K個軟件漏洞序列作為初始K個軟件漏洞模式中的軟件漏洞序列的中心序 列;②根據軟件漏洞模式中的軟件漏洞序列的中心序列,計算軟件漏洞序列數據庫中 其他軟件漏洞序列與K個中心序列的距離,將每個軟件漏洞序列分配到與其距離最小的中 心序列所對應的軟件漏洞模式中;計算軟件漏洞序列與中心序列距離的方法為利用編輯距離ED作為計算軟件漏洞序列之間的距離的函數,編輯距離的基本思想就是以替換、插入和刪除三種基本操作來 確定兩個序列之間的相似程度。兩個序列s1和s2的編輯距離就是用替換、插入和刪除將s1 轉化為s2的最小代價。計算編輯距離的第一步是用遞歸方程把距離定義為代價函數,每一 種基本操作的代價都是1,假設sup(bi),ins(bi)和subs (a,, bj)分別代表刪除插入a, 和用…代替 的相應的代價,則在代價為1的情況下,代價方程為,
權利要求
1.一種基于序列聚類的軟件安全特性分析方法,其特征在于其步驟如下步驟一收集現有的軟件漏洞對已有軟件漏洞檢測工具檢測到的漏洞進行采集;步驟二 預處理收集的軟件漏洞,創建軟件漏洞序列數據庫預處理步驟一所收集的漏洞數據,去掉冗余信息,并抽象為序列形式錄入軟件漏洞序列數據庫;步驟三基于序列聚類技術挖掘軟件漏洞模式利用序列聚類技術對軟件漏洞序列數 據庫進行自動分類,將具有相似特征的漏洞序列分配到同一個簇中,形成2個或2個以上的 軟件漏洞模式;步驟四構建軟件漏洞知識庫分析步驟三挖掘出的2個或者2個以上的軟件漏洞模 式,創建漏洞知識庫;步驟五從待測軟件的源程序中抽取待測軟件的疑似漏洞序列分析待測軟件的源程 序,抽取疑似漏洞程序段,預處理收集的軟件漏洞,得到疑似漏洞序列;步驟六將步驟五抽取的軟件漏洞結合步驟四創建的漏洞知識庫進行漏洞檢測首 先,通過計算疑似漏洞序列與漏洞知識庫中個漏洞模式的中心序列的距離,搜索與疑似漏 洞序列最為相近的漏洞模式,如果沒有,則該疑似漏洞序列為安全序列,否則,該疑似漏洞 序列為安全漏洞,并在與其最相近的漏洞模式中,通過計算相似度,尋找最相近的漏洞序 列,并將最相近的序列的漏洞信息作為安全報告輸出。
2.如權利要求1所述的一種基于序列聚類的軟件安全特性分析方法,其特征在于步 驟三中基于序列聚類分析的軟件漏洞模式挖掘算法是將軟件漏洞序列數據庫采用序列聚 類技術進行挖掘,得到軟件漏洞模式的具體步驟如下①任選K個軟件漏洞序列作為初始K個軟件漏洞模式中的軟件漏洞序列的中心序列;②根據軟件漏洞模式中的軟件漏洞序列的中心序列,計算軟件漏洞序列數據庫中其他 軟件漏洞序列與K個中心序列的距離,將每個軟件漏洞序列分配到與其距離最小的中心序 列所對應的軟件漏洞模式中;計算軟件漏洞序列與中心序列距離的方法為利用編輯距離ED作為計算軟件漏洞序 列之間的距離的函數,編輯距離是以替換、插入和刪除三種基本操作來確定兩個序列之間 的相似程度;兩個序列S1和S2的編輯距離就是用替換、插入和刪除將S1轉化為S2的最小代 價;計算編輯距離用遞歸方程把距離定義為代價函數,每一種基本操作的代價都是1,假設 sup (Bi),ins (a,)和subs (a^bj)分別代表刪除 ,插入屮和用b」代替屮的相應的代價,則 在代價為1的情況下,代價方程為,「1,如果 α,
3.如權利要求1所述的一種基于序列聚類的軟件安全特性分析方法,其特征在于步 驟六中,漏洞檢測方法是將步驟五提取的待測軟件的疑似漏洞序列進行檢測和分析,具體 步驟如下①設判定待測軟件的疑似漏洞序列是否為漏洞序列的距離閾值為θ,θ>0;②計算待測軟件的疑似漏洞序列與K個軟件漏洞模式的中心序列的距離,搜索漏洞知 識庫中與疑似漏洞序列最為相近的漏洞模式,為了降低算法的計算復雜度,利用標識距離 進行初始過濾,首先分別計算疑似漏洞序列與K個軟件漏洞模式的中心序列的標識距離, 獲取與疑似漏洞序列有最小標識距離的中心序列,如果疑似漏洞序列與該中心序列的標識 距離的大于θ,則疑似漏洞序列為安全序列,否則計算疑似漏洞序列與該中心序列的編輯 距離,如果編輯距離大于θ,則該疑似漏洞序列為安全序列,否則,該序列為漏洞序列,且與該中心序列屬于同一漏洞模式;所述的為了降低算法的計算復雜度,利用標識距離進行初始過濾兩條長度分別為m 和η的序列,它們之間標識距離計算的時間開銷為0(m+n),而編輯距離計算的時間開銷為 0(m*n),根據定理任意兩個序列S1和S2,一定滿足LD (S1, S2)彡ED (S1, S2),即標識距離是 編輯距離的下界,可見計算標識距離小于計算編輯距離時間開銷;③由上述步驟②確定待測軟件的疑似漏洞序列所屬的軟件漏洞模式后,在漏洞模式中 繼續搜索與其最相似的漏洞序列,通過計算其與漏洞模式中每一個漏洞序列的相似度,來 確定最相似的漏洞序列;其中,疑似漏洞序列與漏洞模式中每一個漏洞序列的相似度為通過公式(4)計算
全文摘要
本發明涉及一種基于序列聚類的軟件安全特性分析方法,基于軟件漏洞逆向分析技術的基礎上,收集現有的軟件漏洞,預處理軟件漏洞,將處理后的軟件漏洞程序操作序列存入軟件漏洞序列數據庫,采用基于序列整體的相似性的聚類算法將軟件漏洞序列數據庫中軟件序列進行分類,存入漏洞知識庫,以提高漏洞知識庫的質量和軟件漏洞的分析效率;將從待測軟件中抽取出來的疑似軟件漏洞序列進行分析,利用基于編輯距離的相似性度量來衡量序列之間的相似程度,分析出軟件漏洞,以提高軟件漏洞檢測的準確率。
文檔編號G06F21/00GK101996292SQ201010582878
公開日2011年3月30日 申請日期2010年12月10日 優先權日2010年12月10日
發明者任家東, 吳迪, 王崑聲, 胡昌振, 蔡斌雷 申請人:北京理工大學