軟件安全缺陷發(fā)現(xiàn)系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及軟件安全測(cè)試技術(shù)領(lǐng)域,具體涉及一種軟件安全缺陷發(fā)現(xiàn)系統(tǒng)。
【背景技術(shù)】
[0002] 目前軟件安全缺陷檢測(cè)技術(shù)種類繁多且分散,主要的檢測(cè)方法有靜態(tài)分析、行為 監(jiān)控、模糊測(cè)試和滲透測(cè)試4類,但上述4類檢測(cè)方法對(duì)軟件的檢測(cè)方式方法完全不一樣。 例如,利用靜態(tài)分析檢測(cè)軟件的安全缺陷,通常是針對(duì)軟件的源代碼而言,也有一些工具能 夠?qū)ava、. NET程序的可執(zhí)行文件反編譯后進(jìn)行靜態(tài)分析。目前的靜態(tài)分析安全缺陷檢測(cè) 工具均是針對(duì)于一些主流的編程語(yǔ)言,且不同的編程語(yǔ)言都有其對(duì)應(yīng)的靜態(tài)分析工具。比 如針對(duì) C/C++ 的有 CppCheck、Antic,針對(duì) Java 的有 FindBugs、Jlint、PMD 等,還有針對(duì) PHP 的 PHPLint 以及針對(duì) JavaScript 的 JavaScriptLint。
[0003] 行為監(jiān)控是對(duì)正在運(yùn)行中的軟件進(jìn)行監(jiān)控,記錄軟件運(yùn)行時(shí)所有的底層系統(tǒng)調(diào) 用。行為監(jiān)控分為兩個(gè)階段:訓(xùn)練和匹配。訓(xùn)練階段需要反復(fù)多次運(yùn)行軟件,并記錄下軟件 運(yùn)行時(shí)的系統(tǒng)調(diào)用序列,提取出其中的序列段形成知識(shí)庫(kù),序列段是由多個(gè)序列組成,代表 軟件運(yùn)行中的一次操作,比如打開文件操作。知識(shí)庫(kù)是可以在將來(lái)被反復(fù)多次利用的,訓(xùn)練 次數(shù)越多,樣本越全,知識(shí)庫(kù)中序列段越精確。然后在實(shí)際測(cè)試軟件的時(shí)候,監(jiān)控本次軟件 的系統(tǒng)調(diào)用序列提取出序列段,并與知識(shí)庫(kù)中序列段相匹配,未能成功匹配的序列段就可 能產(chǎn)生安全隱患。
[0004] 模糊測(cè)試的核心思想是自動(dòng)或半自動(dòng)的生成隨機(jī)數(shù)據(jù)輸入到一個(gè)程序中,并監(jiān)視 程序異常,如崩潰,斷言失敗,以發(fā)現(xiàn)可能的諸如內(nèi)存泄漏之類的程序錯(cuò)誤。針對(duì)使用固定 的協(xié)議或輸入內(nèi)容格式固定的軟件,模糊測(cè)試通過隨機(jī)生成的測(cè)試數(shù)據(jù)能夠很有效的對(duì)軟 件可信數(shù)據(jù)的邊界進(jìn)行測(cè)試,進(jìn)而發(fā)現(xiàn)那些正常使用時(shí)不容易探查到的安全缺陷。
[0005] 滲透測(cè)試是通過模擬惡意黑客的攻擊方法,來(lái)評(píng)估計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)安全的一種評(píng) 估方法。這個(gè)過程包括對(duì)系統(tǒng)的任何弱點(diǎn)、技術(shù)缺陷或漏洞的主動(dòng)分析,這個(gè)分析是從一個(gè) 攻擊者可能存在的位置來(lái)進(jìn)行的,并且從這個(gè)位置有條件主動(dòng)利用安全漏洞。
[0006] 首先,由于上述檢測(cè)方法通常都是各自獨(dú)立存在的,比如靜態(tài)分析有很多相關(guān)的 工具,多數(shù)編程語(yǔ)言都有一種對(duì)應(yīng)的測(cè)試工具。這就造成了想要對(duì)軟件進(jìn)行安全缺陷檢測(cè) 的學(xué)習(xí)成本很大,對(duì)一個(gè)多語(yǔ)言混雜的大型項(xiàng)目來(lái)說(shuō),需要精通各種測(cè)試工具才能實(shí)現(xiàn)比 較完整的安全缺陷檢測(cè),這也造成了在實(shí)際軟件開發(fā)的過程中,很少對(duì)安全缺陷進(jìn)行測(cè)試。
[0007] 其次,現(xiàn)有的缺陷檢測(cè)工具生成的缺陷報(bào)告難懂且格式不統(tǒng)一,即使對(duì)一個(gè)軟件 項(xiàng)目進(jìn)行了較為完整的安全缺陷檢測(cè),想要快速、簡(jiǎn)單地讀其各類報(bào)告也將非常困難,并且 由于缺陷報(bào)告分散也不便于對(duì)軟件安全缺陷有一個(gè)整體的了解。
[0008] 再次,現(xiàn)在的缺陷檢測(cè)通常只提供檢測(cè)與查看功能,缺陷報(bào)告仍需手寫,費(fèi)時(shí)費(fèi) 力。
[0009] 現(xiàn)有的比較完善的安全缺陷發(fā)現(xiàn)系統(tǒng)非常少,目前雖然《軟件安全漏洞檢測(cè)裝置 和方法》(中國(guó)發(fā)明專利申請(qǐng),公布號(hào):CN 102541729A,公布日2012. 7.4)提供了模糊測(cè)試 和滲透測(cè)試的缺陷檢測(cè)功能,并且配套有相應(yīng)的缺陷管理功能來(lái)查看缺陷,但對(duì)于實(shí)際應(yīng) 用時(shí)檢測(cè)軟件安全而言,一兩種檢測(cè)方法得到的檢測(cè)結(jié)果比較片面,不足以反應(yīng)出軟件整 體安全狀況,檢測(cè)結(jié)果仍不完善。
【發(fā)明內(nèi)容】
[0010] 有鑒于此,本發(fā)明提供了一種軟件安全缺陷發(fā)現(xiàn)系統(tǒng),能夠?qū)Υ郎y(cè)軟件進(jìn)行靜態(tài) 分析、行為監(jiān)測(cè)、模糊測(cè)試和滲透測(cè)試,測(cè)試方式完善,能夠較完善、準(zhǔn)確地發(fā)現(xiàn)軟件的安全 缺陷,且提高了檢測(cè)速度。
[0011] 本發(fā)明的軟件安全缺陷發(fā)現(xiàn)系統(tǒng),包括靜態(tài)測(cè)試模塊、行為監(jiān)控模塊、模糊測(cè)試模 塊、滲透測(cè)試模塊、行為監(jiān)控知識(shí)庫(kù)和缺陷數(shù)據(jù)庫(kù);其中,靜態(tài)測(cè)試模塊、行為監(jiān)控模塊、模 糊測(cè)試模塊、滲透測(cè)試模塊分別與缺陷數(shù)據(jù)庫(kù)連接,行為監(jiān)控模塊、模糊測(cè)試模塊、滲透測(cè) 試模塊分別與靜態(tài)測(cè)試模塊連接,行為監(jiān)控知識(shí)庫(kù)與行為監(jiān)測(cè)模塊連接;
[0012] 其中,靜態(tài)分析模塊內(nèi)包括若干個(gè)靜態(tài)分析插件,每一個(gè)靜態(tài)分析插件分別對(duì)應(yīng) 著一個(gè)特定編程語(yǔ)言;靜態(tài)分析模塊在系統(tǒng)對(duì)被測(cè)軟件的源代碼目錄進(jìn)行遞歸掃描并獲取 源代碼目錄下所有文件后,根據(jù)文件名后綴將文件分類并過濾掉靜態(tài)分析模塊中靜態(tài)分析 插件不能檢測(cè)的文件,然后針對(duì)各類型的源代碼文件,選擇對(duì)應(yīng)的靜態(tài)分析插件進(jìn)行安全 檢測(cè),得到安全缺陷數(shù)據(jù);將安全缺陷數(shù)據(jù)按照設(shè)定的缺陷數(shù)據(jù)庫(kù)格式進(jìn)行格式化處理后 存入缺陷數(shù)據(jù)庫(kù);
[0013] 行為監(jiān)控模塊針對(duì)由靜態(tài)分析模塊獲得的安全缺陷,對(duì)輸入的待測(cè)軟件進(jìn)行行為 監(jiān)控,同時(shí),也對(duì)待測(cè)軟件進(jìn)行其他的常規(guī)的行為監(jiān)控,得到系統(tǒng)調(diào)用序列,并與行為監(jiān)控 知識(shí)庫(kù)中的參考系統(tǒng)調(diào)用序列相匹配;將系統(tǒng)行為異常的系統(tǒng)調(diào)用序列存入缺陷數(shù)據(jù)庫(kù) 中;
[0014] 模糊測(cè)試模塊針對(duì)由靜態(tài)分析模塊獲得的安全缺陷,對(duì)待測(cè)軟件進(jìn)行模糊測(cè)試, 同時(shí),也對(duì)待測(cè)軟件進(jìn)行其他的常規(guī)的模糊測(cè)試,將能夠造成被測(cè)軟件出現(xiàn)安全問題的模 糊測(cè)試用例存入缺陷數(shù)據(jù)庫(kù)中;
[0015] 滲透測(cè)試模塊針對(duì)由靜態(tài)分析模塊獲得的安全缺陷,對(duì)待測(cè)軟件進(jìn)行滲透測(cè) 試,同時(shí),也對(duì)待測(cè)軟件進(jìn)行其他的常規(guī)的滲透測(cè)試;其中,利用一臺(tái)Linux服務(wù)器運(yùn)行 metasploit軟件對(duì)待測(cè)軟件進(jìn)行滲透測(cè)試;將能夠造成被測(cè)軟件出現(xiàn)安全問題的滲透測(cè) 試用例名存入缺陷數(shù)據(jù)庫(kù)中;其中,Linux服務(wù)器監(jiān)聽來(lái)自待測(cè)軟件所在系統(tǒng)的請(qǐng)求,當(dāng)監(jiān) 聽到待測(cè)軟件所在系統(tǒng)發(fā)送的待測(cè)軟件及其所在系統(tǒng)的信息后,調(diào)用metasploit完成對(duì) 待測(cè)軟件所在系統(tǒng)端口和服務(wù)的掃描,得到輸出結(jié)果后,發(fā)送給待測(cè)軟件所在系統(tǒng)。
[0016] 進(jìn)一步地,所述缺陷數(shù)據(jù)庫(kù)格式如下表所示:
[0018] 進(jìn)一步地,對(duì)靜態(tài)分析插件中的靜態(tài)分析規(guī)則進(jìn)行規(guī)則擴(kuò)展,擴(kuò)展方法如下:采用 "name"確定規(guī)則名;采用"file_type = A,B,…"指定本規(guī)則生效所針對(duì)的源代碼文件編 碼類型為A,B,…;采用"gr印=八.C\(/i"表示調(diào)用規(guī)則C進(jìn)行匹配;采用"category" 表示本規(guī)則的分類;采用"category_link"鏈接到缺陷詳情相關(guān)網(wǎng)址;采用"severity"表 示安全缺陷嚴(yán)重程度;采用"description"對(duì)缺陷進(jìn)行描述。
[0019] 進(jìn)一步地,建立滲透知識(shí)庫(kù),將Linux服務(wù)器下metasploit針對(duì)不同平臺(tái)下、不同 版本的目標(biāo)軟件生成的滲透測(cè)試用例存入滲透知識(shí)庫(kù)中,滲透檢測(cè)模塊直接調(diào)用滲透知識(shí) 庫(kù)中的滲透測(cè)試用例去攻擊被測(cè)軟件,進(jìn)行滲透測(cè)試。
[0020] 有益效果:
[0021] (1)本發(fā)明的軟件安全缺陷發(fā)現(xiàn)系統(tǒng),能夠?qū)㈧o態(tài)分析、行為監(jiān)測(cè)、模糊測(cè)試和滲 透測(cè)試四種缺陷檢測(cè)方法融入系統(tǒng)中,讓系統(tǒng)有一個(gè)完整且強(qiáng)大的缺陷檢測(cè)流程,并且對(duì) 生成的大量繁雜的安全缺陷檢測(cè)結(jié)果數(shù)據(jù)進(jìn)行處理,使其數(shù)據(jù)格式統(tǒng)一,查看方便。同時(shí), 檢測(cè)流程自動(dòng)化,能夠減少安全缺陷測(cè)試人員的使用難度。
[0022] (2)本發(fā)明的靜態(tài)分析模塊能夠適用于多種編程語(yǔ)言,且使用方便,需要選擇待測(cè) 軟件使用的編程語(yǔ)言和輸入項(xiàng)目路徑,便可自動(dòng)進(jìn)行靜