專利名稱:一種基于模型驅(qū)動(dòng)的安全測(cè)試方法
技術(shù)領(lǐng)域:
本發(fā)明屬于軟件安全技術(shù)領(lǐng)域,涉及一種軟件安全測(cè)試方法。
背景技術(shù):
隨著互聯(lián)網(wǎng)的迅速發(fā)展和軟件功能的不斷強(qiáng)大,軟件安全面臨的問題越來越大。一 個(gè)關(guān)鍵的問題是如何在軟件發(fā)布之前發(fā)現(xiàn)盡可能多的安全缺陷以便更正或緩和漏洞。為 了滿足軟件對(duì)安全性和可靠性越來越高的需求,微軟提出了可信計(jì)算的理念,并通過對(duì) 傳統(tǒng)軟件開發(fā)生命周期的各個(gè)階段增加一系列的針對(duì)安全的改進(jìn),提出了安全開發(fā)生命 周期這一概念,形成了遵照這一軟件開發(fā)流程的安全軟件工程。這種流程旨在盡量減少 設(shè)計(jì)、編碼和文檔編寫過程中出現(xiàn)的漏洞,并在開發(fā)生命周期中盡可能早地檢測(cè)到并消 除這些漏洞。對(duì)于被用來處理來自Internet的輸入、控制可能被攻擊的關(guān)鍵系統(tǒng)和處 理個(gè)人身份信息的軟件,最需要實(shí)施這種流程。
安全軟件工程針對(duì)軟件開發(fā)的各個(gè)生命周期分別采取了相應(yīng)的安全措施。從分析、 設(shè)計(jì)到編碼、測(cè)試以及后期的維護(hù)工作,安全軟件工程都增加了相應(yīng)階段的安全控制或 威脅抵抗機(jī)制。
發(fā)明內(nèi)容
本發(fā)明的目的是通過分析軟件在測(cè)試階段的代碼運(yùn)行狀況,明確當(dāng)中可能出現(xiàn)的安 全隱患,從而在軟件開發(fā)的最后階段找到系統(tǒng)中仍可能存在的問題,避免有問題的軟件 的發(fā)布,有效提高軟件的安全性。
為此本發(fā)明采用如下的技術(shù)方案
一種基于模型驅(qū)動(dòng)的安全測(cè)試方法,包括下列步驟 第一步制作順序第二步通過遍歷順序圖里表達(dá)的所有消息傳遞序列,得到攻擊路徑的總和; 第三步分析源碼文件,假如遇到一個(gè)方法定義,就將探査函數(shù)執(zhí)行的語句插入在 所要執(zhí)行函數(shù)的定義的第一聲明之前;假如遇到一個(gè)方法調(diào)用,就將探査方法調(diào)用的語 句插入在方法調(diào)用的調(diào)用語句之前,從而為取得程序運(yùn)行時(shí)可能要執(zhí)行的路徑做準(zhǔn)備; 第四步通過生成隨機(jī)數(shù)據(jù)的方式,作為已植入代碼的程序運(yùn)行時(shí)的數(shù)據(jù)提供者, 運(yùn)行程序,將程序運(yùn)行所產(chǎn)生的各個(gè)執(zhí)行路徑與各個(gè)攻擊路徑相匹配,獲得各個(gè)執(zhí)行路 徑的適應(yīng)值,對(duì)適應(yīng)值在(0.85、)區(qū)間的隨機(jī)數(shù)據(jù)通過遺傳算法得到新的測(cè)試數(shù)據(jù),然 后再次檢驗(yàn)他們的適應(yīng)值,再次選取適應(yīng)值在(O. 85 1)區(qū)間的數(shù)據(jù)并再次使用遺傳算法,以此方式逼近攻擊路徑,若找到匹配的攻擊路徑或運(yùn)行到設(shè)定的次數(shù),則程序終止; 第五步分析軟件系統(tǒng)中可能存在的漏洞。
本發(fā)明通過構(gòu)造UML順序圖和對(duì)這個(gè)圖進(jìn)行分析,能夠找到系統(tǒng)中可能存在的攻擊 路徑,從而為后面的測(cè)試工作提供了一個(gè)基礎(chǔ)。這些攻擊路徑也可以對(duì)程序編寫人員有 一定的啟迪,可以避免程序中出現(xiàn)這些問題,從而提高軟件的質(zhì)量。而代碼植入部分的 自動(dòng)完成,也大大減少了人工的干預(yù),從而保證程序能夠客觀的進(jìn)行,不會(huì)由于人為的 失誤而出現(xiàn)錯(cuò)誤。而測(cè)試數(shù)據(jù)也是自動(dòng)生成的,并且通過使用遺傳算法,使數(shù)據(jù)的質(zhì)量 達(dá)到了一個(gè)比較高的水平,從而保證了最后我們得出的測(cè)試結(jié)果是正確的。并且,這種 數(shù)據(jù)驅(qū)動(dòng)測(cè)試的方式,不需要人工來選取測(cè)試數(shù)據(jù),從而保證了程序的客觀正確性。最 后,對(duì)已經(jīng)得到的攻擊路徑和執(zhí)行路徑進(jìn)行匹配,發(fā)現(xiàn)系統(tǒng)中存在的漏洞,也就是攻擊 路徑和執(zhí)行路徑是可以匹配成功的,說明了系統(tǒng)在設(shè)計(jì)上是存在問題的,有利于程序員 作出修改,從而使系統(tǒng)的安全性得到提升。
通過以上四個(gè)部分的工作,可以有效的檢測(cè)系統(tǒng)中是否出現(xiàn)漏洞,在軟件開發(fā)過程 中明確可能存在的問題,有助于及早發(fā)現(xiàn)和解決。有利于降低開發(fā)成本,提高軟件的可 信度和開發(fā)效率。同時(shí)這又是一個(gè)可以基本自動(dòng)完成不需要人工干預(yù)的測(cè)試流程,沒有 給軟件測(cè)試人員增加工作量。同時(shí)它也給安全測(cè)試人員提供了一個(gè)新穎的測(cè)試思路。
圖l本發(fā)明的測(cè)試方法的整體流程圖; 圖2獲得攻擊路徑過程流程圖; 圖3代碼自動(dòng)植入過程流程圖; 圖4新的測(cè)試數(shù)據(jù)生成過程流程圖; 圖5匹配過程流程圖; 圖6示意順序圖。
具體實(shí)施例方式
模型驅(qū)動(dòng)測(cè)試已提出了很長時(shí)間,它所提倡的正是消除設(shè)計(jì)缺陷,本發(fā)明則正是是 基于此種測(cè)試模式研究了一種安全測(cè)試方法,能在測(cè)試階段很好的檢測(cè)軟件設(shè)計(jì)缺陷。 本發(fā)明利用安全測(cè)試工具從已存在的XML文檔中提取相應(yīng)的威脅信息、攻擊路徑信息。 接著根據(jù)這些信息建立相應(yīng)的測(cè)試場(chǎng)景,生成相應(yīng)的測(cè)試數(shù)據(jù),這一過程即基于順序圖 的攻擊路徑的生成。首先根據(jù)某一攻擊模式(威脅樹)產(chǎn)生具體威脅的順序圖模型,該 順序圖用來描述某個(gè)威脅要成功所需要的經(jīng)過,然后通過一定的覆蓋標(biāo)準(zhǔn)遍歷順序圖, 從而得到具體威脅的路徑。威脅就是一些攻擊者可能會(huì)破壞系統(tǒng)的行為,UML順序圖就用 來描述一些交互信息。 一個(gè)威脅場(chǎng)景用一個(gè)消息交換的序列來表示, 一個(gè)消息序列就是 順序圖中從第一個(gè)消息到最后一個(gè)消息的一條路徑。因?yàn)轫樞驁D中可能存在判斷或者循環(huán),我們可以遍歷這個(gè)順序圖,得到所有消息的順序。接下來是要提取程序運(yùn)行時(shí)所真 正執(zhí)行到的威脅。這個(gè)威脅的保存方式也是用一個(gè)消息序列的方式來保存的,即XML這 種格式來保存。我們是借助于在程序中植入代碼來實(shí)現(xiàn)獲取執(zhí)行時(shí)的威脅的。最后一步 的工作,我們用到了模型驅(qū)動(dòng)測(cè)試的方法。首先將程序執(zhí)行時(shí)的執(zhí)行路徑進(jìn)行粗略選取, 然后通過和我們事先得到的攻擊路徑進(jìn)行匹配,得到一些符合條件的執(zhí)行路徑,再用遺 傳算法進(jìn)行雜交,生成子類的執(zhí)行路徑,繼續(xù)和攻擊路徑進(jìn)行匹配,通過這樣一個(gè)過程, 來最后監(jiān)測(cè)軟件中存在的安全隱患。
本發(fā)明的重點(diǎn)在于用順序圖來表示一個(gè)具體的攻擊,然后遍歷UML順序圖找到攻擊 路徑。接著在目標(biāo)程序中植入代碼,并運(yùn)行得到執(zhí)行路徑。最后,對(duì)攻擊路徑和執(zhí)行路 徑進(jìn)行匹配,得出軟件中是否存在威脅的結(jié)論,并告知用戶。
具體來說,包括以下三個(gè)方面
1. 構(gòu)建攻擊模型攻擊模型是表示的是系統(tǒng)中可能存在的漏洞。通過它, 可 以發(fā)現(xiàn)系統(tǒng)中存在的所有可能的漏洞,即攻擊路徑。但它只是從理論上得到的結(jié)果,并 不表示系統(tǒng)在執(zhí)行過程中, 一定會(huì)出現(xiàn)這個(gè)漏洞。
2. 構(gòu)造實(shí)現(xiàn)模型實(shí)現(xiàn)模型的構(gòu)造是通過對(duì)程序植入代碼并多次運(yùn)行程序而得到 的。實(shí)現(xiàn)模型可以真實(shí)的運(yùn)行程序,并發(fā)現(xiàn)系統(tǒng)中存在的漏洞,即執(zhí)行路徑,從而為下 一步的路徑匹配模塊提供了對(duì)比的依據(jù)。
3. 路徑匹配模塊用數(shù)據(jù)驅(qū)動(dòng)的方式,將得到的攻擊路徑和執(zhí)行路徑進(jìn)行匹配,看 看之前得到的攻擊路徑在程序的執(zhí)行過程中真的能夠發(fā)生,如果是的話,證明程序中確 實(shí)存在這種漏洞。如果沒有執(zhí)行到的話,說明程序是沒有問題的。其中的數(shù)據(jù)驅(qū)動(dòng)是完 全不需要人工干預(yù)的測(cè)試方式,能夠?qū)y(cè)試人員從大量繁重的提供數(shù)據(jù)的重復(fù)勞動(dòng)中解 放出來。
針對(duì)上述目標(biāo),本發(fā)明提出的方法大致分為五個(gè)部分,即制作順序圖,讀取UML順 序圖、獲取攻擊路徑、植入代碼、生成測(cè)試數(shù)據(jù)并返回結(jié)果。首先,要完成讀取UML順 序圖部分,這個(gè)UML順序圖是用XML文檔形式保存的。它的對(duì)象間存在消息傳遞,這個(gè) 消息傳遞的信息是需要重點(diǎn)處理的。通過消息傳遞的過程進(jìn)行分析,査找軟件中可能存 在的攻擊路徑,并把這個(gè)攻擊路徑用消息序列的形式表示出來。在找到所有的攻擊路徑 之后,將攻擊路徑的信息呈現(xiàn)給用戶。其主體過程的流程如附圖l所示。
1. 制作順序圖首先我們要通過對(duì)程序的系統(tǒng)分析,得到其中可能存在的漏洞,并 且將它們用順序圖的形式表示出來。這個(gè)順序圖要作為我們下一步尋找攻擊路徑的一個(gè) 輸入。
2. 讀取UML順序圖部分要求用戶輸入U(xiǎn)ML順序圖。具體的講就是將軟件設(shè)計(jì)人員 繪制的順序圖作為整個(gè)過程的起點(diǎn)和輸入。通常順序圖會(huì)以^uml的格式存取,但由 于.uml格式可以無信息損失的轉(zhuǎn)換為.xml格式,所以這一部分的主要內(nèi)容就是讀入包含 有順序圖信息的.xml文件。這個(gè)部分的工作用到的主要工具是ArgoUML。3. 獲取攻擊路徑部分這部分負(fù)責(zé)提取XML順序圖中的消息傳遞序列,也就是攻擊 路徑。在順序圖中,對(duì)象間的聯(lián)系就是靠消息的傳遞,這個(gè)消息傳遞也是有時(shí)間先后順 序的。他們可以表示消息的走向,同時(shí)也是一個(gè)攻擊路徑可能的過程。所以,我們要通 過遍歷所有的消息來得到攻擊路徑的總和,并將這個(gè)結(jié)果作為下一步工作的對(duì)象。具體 獲得攻擊路徑的過程如附圖2所示。獲取攻擊路徑的算法如下所示遍歷由UML順序圖 轉(zhuǎn)換成的XML文件中的SDG,獲取攻擊路徑的算法
遍歷SDG獲取攻擊路徑的算法
輸入存儲(chǔ)SDG的XML文檔
輸出存儲(chǔ)攻擊路徑(ThrScn)的XML文檔
算法描述 '
1) 在SDG中取出所有節(jié)點(diǎn)的信息存放在列表中,并得到初始節(jié)點(diǎn);
2) 建立一條只包含首節(jié)點(diǎn)的攻擊路徑,并存放到存儲(chǔ)所有路徑的列表中;
3) 設(shè)置flag=0; 〃利用flag來標(biāo)識(shí)一次遍歷循環(huán)中所有攻擊的路徑有沒發(fā)生變化,
假如沒變化說明遍歷可以結(jié)束,初始值賦為0;
4) 將路徑列表里的總數(shù)賦值給ScnNum,并建立一個(gè)空的用來存儲(chǔ)攻擊路徑的臨時(shí) 列表;
5) 取出路徑列表中的一條路徑,并得到該路徑最后一個(gè)節(jié)點(diǎn)的信息,ScnNum減l, 然后判斷該節(jié)點(diǎn)是否為NULL,假如為NULL則跳到第11步,否則執(zhí)行第6步;
6) 讀取節(jié)點(diǎn)列表的一個(gè)節(jié)點(diǎn)信息,并判斷其是否為該路徑最后一個(gè)節(jié)點(diǎn)的后繼節(jié) 點(diǎn),假如是則執(zhí)行第7步,否則跳到第8步;
7) 將該節(jié)點(diǎn)插入到此路徑的最后形成一個(gè)新的路徑,并將新路徑信息存儲(chǔ)到臨時(shí)的 攻擊路徑列表中,并賦值flag^,接著執(zhí)行第9步;
8) 對(duì)不是該路徑后繼節(jié)點(diǎn)的數(shù)量進(jìn)行統(tǒng)計(jì);
9) 判斷節(jié)點(diǎn)列表中的節(jié)點(diǎn)是否全部被提取比較過,假如是則執(zhí)行第10步,否者返 回第6步;
10) 假如節(jié)點(diǎn)列表中的所有節(jié)點(diǎn)都不是該路徑的后繼節(jié)點(diǎn),則給該路徑加上一個(gè)NULL 節(jié)點(diǎn),并執(zhí)行第ll步,否則跳到第12步;
11) 將此路徑添加至臨時(shí)路徑列表中;
12) 將臨時(shí)路徑列表賦值給路徑列表,并判斷,假如flag=l,則返回執(zhí)行第3步, 否者執(zhí)行第13步;
13) 將路徑列表中的全部路徑信息存儲(chǔ)到XML文檔中。
4. 植入代碼部分這部分的主要任務(wù)是要取得程序運(yùn)行時(shí)可能要執(zhí)行的路徑。其主
要的方式為分析源碼文件,假如遇到一個(gè)方法定義,就將探査函數(shù)執(zhí)行的語句插入在
所要執(zhí)行函數(shù)的定義的第一聲明之前;假如遇到一個(gè)方法調(diào)用,就將探查方法調(diào)用的語 句插入在方法調(diào)用的調(diào)用語句之前。這個(gè)過程的算法詳細(xì)描述如下所示,其流程圖如附圖3所示。
植入代碼算法描述
1)在Java源文件中掃描,直到文件的最后一行。在掃描過程中,當(dāng)發(fā)現(xiàn)一個(gè)函數(shù) m且m在Mlist(方法列表)中,貝lj:
a) 如果m是函數(shù)調(diào)用,則在Java源文件中此方法的的前一行插入pCodel (類型為 1的代碼段);
b) 如果m是函數(shù)定義,則在Java源文件中此方法的的前一行插入pCode2 (類型為 2的代碼段);
其中,方法列表是對(duì)源代碼掃描得到的所有的方法的一個(gè)列表。pCodel和pCode2 則是對(duì)文件中類和方法的一些描述,借助這些信息,可以進(jìn)行執(zhí)行路徑的查找。
5.生成測(cè)試數(shù)據(jù)并返回結(jié)果部分首先通過生成隨機(jī)數(shù)據(jù)的方式,作為巳植入代碼 運(yùn)行時(shí)的數(shù)據(jù)提供者,運(yùn)行程序并獲得執(zhí)行路徑的適應(yīng)值。將對(duì)適應(yīng)值比較高(例如在 (0.85~1)范圍內(nèi)的數(shù)據(jù)通過遺傳算法的雜交,變異等方式得到新的測(cè)試數(shù)據(jù),然后再次檢 驗(yàn)他們的適應(yīng)值,再次選取適應(yīng)值高的數(shù)據(jù)并再次使用遺傳算法。最后,通過對(duì)攻擊路 徑和執(zhí)行路徑的匹配,來得到是否存在威脅的結(jié)論。測(cè)試數(shù)據(jù)生成過程及匹配過程如附 圖4和5所示。
匹配算法描述如下
輸入執(zhí)行路徑ExcutePath[O,…,m-1],攻擊路徑ThrScn[O,…,n-1] 輸出ExcutePath和ThrScnt的相似度即適應(yīng)值
1) 相似度similaritFO, firstNode-攻擊路徑的第一個(gè)節(jié)點(diǎn),lengthOfPath:執(zhí)行路 徑的長度,lengthOfTh^攻擊路徑的長度;
2) 在執(zhí)行路徑中查找firstNode節(jié)點(diǎn),返回位置并賦值給posOfFirst,假如不存在則 賦值lengthOfPath+l;
3) 判斷posOfFirst是否等于lengthOfPath+l,假如不等則執(zhí)行第4步,否則跳到第2 步;
4) 利用match變量來統(tǒng)計(jì)覆蓋到節(jié)點(diǎn)的總數(shù),match=0,用posOfPath來表示執(zhí)行路徑 中的位置,并賦值pos0fPatl^pos0fFirst;
5) 從攻擊路徑的posOfScn節(jié)點(diǎn)和執(zhí)行路徑的posOfPath節(jié)點(diǎn)開始,判斷對(duì)應(yīng)節(jié)點(diǎn)是否 一致
5. 1 假如一致,貝iJmatch+十,pos0fPath++, pos0fScn++,執(zhí)行第5步; 5.2假如不一致,則執(zhí)行第6步;
6) 判斷match是否大于similarity,假如大于,則similarity二match;
7) 從執(zhí)行路徑的第++1)03(^卩1^{個(gè)節(jié)點(diǎn)開始查找廿^1,016節(jié)點(diǎn)的位置,并賦值給
posOfFirst,然后返回執(zhí)行第3步;■s!' w 〃 a r 〃_y 返回適應(yīng)值 ^ 的值。
下面以附圖6中的順序圖為例,來說明本發(fā)明的應(yīng)用。
第一個(gè)階段是分析我們獲得的順序圖。這個(gè)順序圖是我們對(duì)系統(tǒng)進(jìn)行分析之后得到 的一個(gè)順序圖,它表示的是從用戶內(nèi)存溢出到這些數(shù)據(jù)被利用來攻擊用戶的一個(gè)過程,, 從這個(gè)圖上我們可以得到以下的信息
對(duì)象的個(gè)數(shù)是3;
方法的數(shù)目是3; 得到一個(gè)具體的攻擊路徑,其順序如下
A. Message () - 〉 B. Message () -〉C. Message (); 并且這個(gè)攻擊的執(zhí)行路徑是唯一的。
第二個(gè)階段就是要向這個(gè)順序圖所表示的程序中植入代碼,來收集在程序運(yùn)行過程
中數(shù)據(jù)。其程序的框架結(jié)構(gòu)如下
public static void main() {
i"…)(
A. message ()
i"…){
B. message (); C. message ();
通過植入代碼,我們可以得到形式如下的代碼片段
public static void main(){
if(…){
String s = "a. message"; String si = ^testl"; A. message 0
String s = "b. message"; String si = "testl,,;B. message ();
String s = "c.message"; String si = "testl,,;
C. message ();
接下來的工作,就是生成測(cè)試數(shù)據(jù)。從程序的代碼中分析可得,這個(gè)程序需要一個(gè) 輸入。運(yùn)用遺傳算法的原理,首先生成隨機(jī)的數(shù)據(jù),然后對(duì)這個(gè)數(shù)據(jù)運(yùn)行一次程序,得 到一個(gè)執(zhí)行路徑。接下來對(duì)數(shù)據(jù)進(jìn)行雜交變異的操作,得到子類數(shù)據(jù),并再次運(yùn)行程序,
得到新的執(zhí)行路徑??偨Y(jié)得到的程序的執(zhí)行路徑有以下幾個(gè)
I . C. message 0 ;
II. A. message () _> C. message ();
III. B. message () -> C. message ();
IV. A. message () —> B. message () _〉 C. message ();
最后的步驟,就是將程序運(yùn)行時(shí)得到的執(zhí)行路徑,和從順序圖所得到的攻擊路徑進(jìn)
行匹配。最后(IV)能成功的和攻擊路徑匹配。它恰好表示了一個(gè)緩存溢出攻擊的過程
1. 首先是緩存發(fā)生溢出,
2. 然后是這些數(shù)據(jù)被其他人通過某種手段得到,
3. 最后通過分析這些緩存中的數(shù)據(jù),得到用戶的使用信息,并利用這些
數(shù)據(jù)來對(duì)用戶進(jìn)行攻擊。 根據(jù)這些信息,用戶能在代碼成型之后,最后分析出系統(tǒng)中可能存在的漏洞,權(quán)衡利弊 得失,修改、完善其原有設(shè)計(jì),得到高安全性能的軟件開發(fā)方案。從而達(dá)到完善軟件總 體結(jié)構(gòu),避免軟件中漏洞泄露的目的。
權(quán)利要求
1.一種基于模型驅(qū)動(dòng)的安全測(cè)試方法,包括下列步驟第一步制作順序圖;第二步通過遍歷順序圖里表達(dá)的所有消息傳遞序列,得到攻擊路徑的總和;第三步分析源碼文件,假如遇到一個(gè)方法定義,就將探查函數(shù)執(zhí)行的語句插入在所要執(zhí)行函數(shù)的定義的第一聲明之前;假如遇到一個(gè)方法調(diào)用,就將探查方法調(diào)用的語句插入在方法調(diào)用的調(diào)用語句之前,從而為取得程序運(yùn)行時(shí)可能要執(zhí)行的路徑做準(zhǔn)備;第四步通過生成隨機(jī)數(shù)據(jù)的方式,作為已植入代碼的程序運(yùn)行時(shí)的數(shù)據(jù)提供者,運(yùn)行程序,將程序運(yùn)行所產(chǎn)生的各個(gè)執(zhí)行路徑與各個(gè)攻擊路徑相匹配,獲得各個(gè)執(zhí)行路徑的適應(yīng)值,對(duì)適應(yīng)值在(0.85~1)區(qū)間的隨機(jī)數(shù)據(jù)通過遺傳算法得到新的測(cè)試數(shù)據(jù),然后再次檢驗(yàn)他們的適應(yīng)值,再次選取適應(yīng)值在(0.85~1)區(qū)間的數(shù)據(jù)并再次使用遺傳算法,以此方式逼近攻擊路徑,若找到匹配的攻擊路徑或運(yùn)行到設(shè)定的次數(shù),則程序終止;第五步分析軟件系統(tǒng)中可能存在的漏洞。
全文摘要
本發(fā)明屬于軟件安全技術(shù)領(lǐng)域,涉及一種基于模型驅(qū)動(dòng)的安全測(cè)試方法,包括下列步驟制作順序圖;通過遍歷順序圖里表達(dá)的所有消息傳遞序列,得到攻擊路徑的總和;在程序中植入代碼;生成隨機(jī)數(shù)據(jù)的方式,運(yùn)行植入代碼后的程序,將程序運(yùn)行所產(chǎn)生的各個(gè)執(zhí)行路徑與各個(gè)攻擊路徑相匹配,獲得各個(gè)執(zhí)行路徑的適應(yīng)值,對(duì)適應(yīng)值在(0.85~1)區(qū)間的隨機(jī)數(shù)據(jù)通過遺傳算法得到新的測(cè)試數(shù)據(jù),然后再次檢驗(yàn)他們的適應(yīng)值,再次選取適應(yīng)值在(0.85~1)區(qū)間的數(shù)據(jù)并再次使用遺傳算法,以此方式逼近攻擊路徑,若找到匹配的攻擊路徑或運(yùn)行到設(shè)定的次數(shù),則程序終止;分析軟件系統(tǒng)中可能存在的漏洞。本發(fā)明有利于降低開發(fā)成本,提高軟件的可信度和開發(fā)效率。
文檔編號(hào)G06F21/00GK101551842SQ20091006873
公開日2009年10月7日 申請(qǐng)日期2009年5月5日 優(yōu)先權(quán)日2009年5月5日
發(fā)明者丁剛剛, 馮志勇, 超 徐, 李曉紅, 李衍法 申請(qǐng)人:天津大學(xué)