本發(fā)明涉及軟件漏洞檢測(cè)技術(shù)領(lǐng)域,尤其涉及一種檢測(cè)軟件中集成或定制的開源項(xiàng)目漏洞的方法和裝置。
背景技術(shù):
開源項(xiàng)目是被非盈利軟件組織注冊(cè)為認(rèn)證標(biāo)記,并對(duì)其進(jìn)行了正式的定義,用于描述那些源碼可以被公眾使用的軟件,開源項(xiàng)目的使用、修改和發(fā)行不受許可證的限制。當(dāng)前,隨著互聯(lián)網(wǎng)上開源項(xiàng)目蓬勃發(fā)展,優(yōu)秀的開源軟已經(jīng)被其他軟件項(xiàng)目廣泛集成或定制開發(fā)成組件,例如linux、openssl、webkit等。同時(shí),一款軟件中集成或定制的開源項(xiàng)目數(shù)量大大增加,如谷歌chrome瀏覽器集成、定制的開源軟件已超過150個(gè)。但是,優(yōu)秀開源項(xiàng)目由于代碼更新、漏洞修復(fù)等非常頻繁,版本更新及迭代速度較快,版本更新及迭代過程中往往伴隨著開源項(xiàng)目的模塊、接口、策略等的變化,由此很容易產(chǎn)生開源項(xiàng)目新老版本的兼容性問題,導(dǎo)致通過開源項(xiàng)目集成或定制的組件不能及時(shí)更新,忽視了大量安全問題的修補(bǔ)。
目前,這種現(xiàn)象在全球范圍內(nèi)普遍存在,即使是非常優(yōu)秀的商業(yè)產(chǎn)品或開源項(xiàng)目。例如:使用最廣泛的移動(dòng)操作系統(tǒng)安卓(Android)的內(nèi)核是linux,其在修復(fù)linux內(nèi)核漏洞上表現(xiàn)出明顯的滯后性,如Android在2016年3月才修補(bǔ)了linux內(nèi)核一年前修補(bǔ)的漏洞CVE-2015-1805,該漏洞在Android上被修補(bǔ)之前已經(jīng)在互聯(lián)網(wǎng)上出現(xiàn)了利用該漏洞的攻擊代碼,導(dǎo)致谷歌公司不得不發(fā)布緊急補(bǔ)丁修復(fù)該漏洞。另外,由集成openssl、定制webkit等開源項(xiàng)目卻沒有及時(shí)更新安全補(bǔ)丁所帶來的問題也數(shù)不勝數(shù)。因此,及時(shí)檢測(cè)軟件中集成或定制的開源項(xiàng)目是否存在漏洞具有重要意義。
目前對(duì)軟件中集成或定制的開源項(xiàng)目的漏洞檢測(cè)方案較少,且大都是通過組件版本比對(duì)的方法檢測(cè)漏洞,即搜索軟件文件中的組件名稱及版本號(hào)字符串與漏洞影響的版本進(jìn)行比對(duì)來判斷漏洞是否存在,而集成或定制開源項(xiàng)目的軟件為避免版本更新迭代所造成的不兼容,一般只修補(bǔ)存在漏洞的代碼而不更新組件版本,所以,一般檢測(cè)方法或工具不能準(zhǔn)確判斷存在漏洞的代碼是否被修補(bǔ),從而不能準(zhǔn)確檢測(cè)漏洞,另外,部分集成或定制的開源項(xiàng)目的軟件中可能去掉組件名稱及版本號(hào)字符串,所以也無法通過組件版本比對(duì)的方法檢測(cè)漏洞。而一般的軟件漏洞檢測(cè)方法,如通過按照策略構(gòu)造隨機(jī)測(cè)試用例檢測(cè)軟件異常的fuzzing技術(shù),通過人工閱讀審計(jì)代碼的代碼審計(jì)等方法用于檢測(cè)軟件集成、定制的組件中漏洞,較為緩慢復(fù)雜,缺乏效率??梢姡?dāng)前缺少快捷準(zhǔn)確地檢測(cè)軟件中集成或定制的開源項(xiàng)目漏洞的方法。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的實(shí)施例提供一種檢測(cè)軟件中集成或定制的開源項(xiàng)目漏洞的方法和裝置,以現(xiàn)有技術(shù)中缺少快捷準(zhǔn)確地檢測(cè)軟件中集成或定制的開源項(xiàng)目漏洞的方法的問題。
為達(dá)到上述目的,本發(fā)明采用如下技術(shù)方案:
一種檢測(cè)軟件中集成或定制的開源項(xiàng)目漏洞的方法,包括:
從預(yù)先設(shè)置的搜集庫(kù)中獲取開源項(xiàng)目的原始漏洞信息;
根據(jù)所述開源項(xiàng)目的原始漏洞信息,提取開源項(xiàng)目的漏洞描述信息、漏洞影響的軟件或組件版本信息以及漏洞檢測(cè)細(xì)節(jié)特征信息;
根據(jù)所述開源項(xiàng)目的漏洞描述信息、漏洞影響的軟件或組件版本信息以及漏洞檢測(cè)細(xì)節(jié)特征信息建立漏洞檢測(cè)數(shù)據(jù)庫(kù);所述漏洞檢測(cè)數(shù)據(jù)庫(kù)包括以預(yù)設(shè)索引順序排列的各檢測(cè)項(xiàng);
從待檢測(cè)軟件中提取待檢測(cè)軟件的代碼和可執(zhí)行文件;
根據(jù)所述漏洞檢測(cè)數(shù)據(jù)庫(kù)中的各檢測(cè)項(xiàng),以預(yù)設(shè)索引順序依次匹配檢測(cè)待檢測(cè)軟件的代碼和可執(zhí)行文件,以確定待檢測(cè)軟件集成或定制的開源項(xiàng)目是否存在漏洞。
具體的,從預(yù)先設(shè)置的搜集庫(kù)中獲取開源項(xiàng)目的原始漏洞信息,包括:
從預(yù)先設(shè)置的漏洞數(shù)據(jù)庫(kù)中獲取開源項(xiàng)目的原始漏洞信息,并通過所述原始漏洞信息中的漏洞參考信息的補(bǔ)丁鏈接獲取開源項(xiàng)目的原始漏洞的修補(bǔ)代碼;
或者,從預(yù)先設(shè)置的開源項(xiàng)目主頁(yè)中獲取關(guān)鍵詞代碼,在所述關(guān)鍵詞代碼中過濾獲取開源項(xiàng)目的原始漏洞的修補(bǔ)代碼。
具體的,所述漏洞描述信息包括漏洞編號(hào)信息、嚴(yán)重程度信息、漏洞類型信息、漏洞披露時(shí)間信息、漏洞詳情信息。
具體的,所述漏洞影響的軟件或組件版本信息包括漏洞影響的軟件或組件名稱、漏洞影響的軟件或組件的版本號(hào)。
具體的,所述漏洞檢測(cè)細(xì)節(jié)特征信息包括開源項(xiàng)目組件識(shí)別模塊特征、識(shí)別函數(shù)特征、漏洞是否修補(bǔ)特征。
具體的,所述以預(yù)設(shè)索引順序排列的各檢測(cè)項(xiàng)包括:漏洞影響的軟件或組件名稱、漏洞影響的軟件或組件的版本號(hào)、開源項(xiàng)目組件識(shí)別模塊特征、識(shí)別函數(shù)特征以及漏洞是否修補(bǔ)特征。
具體的,根據(jù)所述漏洞檢測(cè)數(shù)據(jù)庫(kù)中的各檢測(cè)項(xiàng),以預(yù)設(shè)索引順序依次匹配檢測(cè)待檢測(cè)軟件的代碼和可執(zhí)行文件,以確定待檢測(cè)軟件集成或定制的開源項(xiàng)目是否存在漏洞,包括:
依次根據(jù)漏洞影響的軟件或組件名稱、漏洞影響的軟件或組件的版本號(hào)、開源項(xiàng)目組件識(shí)別模塊特征、識(shí)別函數(shù)特征以及漏洞是否修補(bǔ)特征,對(duì)待檢測(cè)軟件的代碼和可執(zhí)行文件進(jìn)行匹配檢測(cè);
若在待檢測(cè)軟件的代碼和可執(zhí)行文件中,存在與漏洞影響的軟件或組件名稱、漏洞影響的軟件或組件的版本號(hào)、開源項(xiàng)目組件識(shí)別模塊特征、識(shí)別函數(shù)特征以及漏洞是否修補(bǔ)特征其中之一的不匹配內(nèi)容,則確定待檢測(cè)軟件集成或定制的開源項(xiàng)目不存在漏洞;
若待檢測(cè)軟件的代碼和可執(zhí)行文件中未存在與漏洞影響的軟件或組件名稱、漏洞影響的軟件或組件的版本號(hào)、開源項(xiàng)目組件識(shí)別模塊特征、識(shí)別函數(shù)特征以及漏洞是否修補(bǔ)特征其中之一的不匹配內(nèi)容,則確定待檢測(cè)軟件集成或定制的開源項(xiàng)目存在漏洞。
一種檢測(cè)軟件中集成或定制的開源項(xiàng)目漏洞的裝置,包括:
原始漏洞信息獲取單元,用于從預(yù)先設(shè)置的搜集庫(kù)中獲取開源項(xiàng)目的原始漏洞信息;
信息提取單元,用于根據(jù)所述開源項(xiàng)目的原始漏洞信息,提取開源項(xiàng)目的漏洞描述信息、漏洞影響的軟件或組件版本信息以及漏洞檢測(cè)細(xì)節(jié)特征信息;
漏洞檢測(cè)數(shù)據(jù)庫(kù)建立單元,用于根據(jù)所述開源項(xiàng)目的漏洞描述信息、漏洞影響的軟件或組件版本信息以及漏洞檢測(cè)細(xì)節(jié)特征信息建立漏洞檢測(cè)數(shù)據(jù)庫(kù);所述漏洞檢測(cè)數(shù)據(jù)庫(kù)包括以預(yù)設(shè)索引順序排列的各檢測(cè)項(xiàng);
待檢測(cè)軟件提取單元,用于從待檢測(cè)軟件中提取待檢測(cè)軟件的代碼和可執(zhí)行文件;
匹配檢測(cè)單元,用于根據(jù)所述漏洞檢測(cè)數(shù)據(jù)庫(kù)中的各檢測(cè)項(xiàng),以預(yù)設(shè)索引順序依次匹配檢測(cè)待檢測(cè)軟件的代碼和可執(zhí)行文件,以確定待檢測(cè)軟件集成或定制的開源項(xiàng)目是否存在漏洞。
此外,所述原始漏洞信息獲取單元,具體用于:
從預(yù)先設(shè)置的漏洞數(shù)據(jù)庫(kù)中獲取開源項(xiàng)目的原始漏洞信息,并通過所述原始漏洞信息中的漏洞參考信息的補(bǔ)丁鏈接獲取開源項(xiàng)目的原始漏洞的修補(bǔ)代碼;
或者,從預(yù)先設(shè)置的開源項(xiàng)目主頁(yè)中獲取關(guān)鍵詞代碼,在所述關(guān)鍵詞代碼中過濾獲取開源項(xiàng)目的原始漏洞的修補(bǔ)代碼。
此外,所述信息提取單元提取的漏洞描述信息包括漏洞編號(hào)信息、嚴(yán)重程度信息、漏洞類型信息、漏洞披露時(shí)間信息、漏洞詳情信息。
具體的,所述信息提取單元提取的漏洞影響的軟件或組件版本信息包括漏洞影響的軟件或組件名稱、漏洞影響的軟件或組件的版本號(hào)。
此外,所述信息提取單元提取的漏洞檢測(cè)細(xì)節(jié)特征信息包括開源項(xiàng)目組件識(shí)別模塊特征、識(shí)別函數(shù)特征、漏洞是否修補(bǔ)特征。
具體的,所述漏洞檢測(cè)數(shù)據(jù)庫(kù)建立單元中的以預(yù)設(shè)索引順序排列的各檢測(cè)項(xiàng)包括:漏洞影響的軟件或組件名稱、漏洞影響的軟件或組件的版本號(hào)、開源項(xiàng)目組件識(shí)別模塊特征、識(shí)別函數(shù)特征以及漏洞是否修補(bǔ)特征。
另外,所述匹配檢測(cè)單元,具體用于:
依次根據(jù)漏洞影響的軟件或組件名稱、漏洞影響的軟件或組件的版本號(hào)、開源項(xiàng)目組件識(shí)別模塊特征、識(shí)別函數(shù)特征以及漏洞是否修補(bǔ)特征,對(duì)待檢測(cè)軟件的代碼和可執(zhí)行文件進(jìn)行匹配檢測(cè);
若在待檢測(cè)軟件的代碼和可執(zhí)行文件中,存在與漏洞影響的軟件或組件名稱、漏洞影響的軟件或組件的版本號(hào)、開源項(xiàng)目組件識(shí)別模塊特征、識(shí)別函數(shù)特征以及漏洞是否修補(bǔ)特征其中之一的不匹配內(nèi)容,則確定待檢測(cè)軟件集成或定制的開源項(xiàng)目不存在漏洞;
若待檢測(cè)軟件的代碼和可執(zhí)行文件中未存在與漏洞影響的軟件或組件名稱、漏洞影響的軟件或組件的版本號(hào)、開源項(xiàng)目組件識(shí)別模塊特征、識(shí)別函數(shù)特征以及漏洞是否修補(bǔ)特征其中之一的不匹配內(nèi)容,則確定待檢測(cè)軟件集成或定制的開源項(xiàng)目存在漏洞。
本發(fā)明實(shí)施例提供的檢測(cè)軟件中集成或定制的開源項(xiàng)目漏洞的方法和裝置,從預(yù)先設(shè)置的搜集庫(kù)中獲取開源項(xiàng)目的原始漏洞信息;根據(jù)所述開源項(xiàng)目的原始漏洞信息,提取開源項(xiàng)目的漏洞描述信息、漏洞影響的軟件或組件版本信息以及漏洞檢測(cè)細(xì)節(jié)特征信息;根據(jù)所述開源項(xiàng)目的漏洞描述信息、漏洞影響的軟件或組件版本信息以及漏洞檢測(cè)細(xì)節(jié)特征信息建立漏洞檢測(cè)數(shù)據(jù)庫(kù);所述漏洞檢測(cè)數(shù)據(jù)庫(kù)包括以預(yù)設(shè)索引順序排列的各檢測(cè)項(xiàng);從待檢測(cè)軟件中提取待檢測(cè)軟件的代碼和可執(zhí)行文件;根據(jù)所述漏洞檢測(cè)數(shù)據(jù)庫(kù)中的各檢測(cè)項(xiàng),以預(yù)設(shè)索引順序依次匹配檢測(cè)待檢測(cè)軟件的代碼和可執(zhí)行文件,以確定待檢測(cè)軟件集成或定制的開源項(xiàng)目是否存在漏洞??梢?,本發(fā)明實(shí)施例可以通過開源項(xiàng)目的源代碼補(bǔ)丁提取漏洞檢測(cè)特征,即各檢測(cè)項(xiàng),從而通過這些檢測(cè)項(xiàng)即可進(jìn)行匹配檢測(cè),自動(dòng)匹配檢測(cè)較為快捷準(zhǔn)確,避免了當(dāng)前缺少快捷準(zhǔn)確地檢測(cè)軟件中集成或定制的開源項(xiàng)目漏洞的方法。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例提供的一種檢測(cè)軟件中集成或定制的開源項(xiàng)目漏洞的方法的流程圖一;
圖2為本發(fā)明實(shí)施例提供的一種檢測(cè)軟件中集成或定制的開源項(xiàng)目漏洞的方法的流程圖二;
圖3為本發(fā)明實(shí)施例提供的一種檢測(cè)軟件中集成或定制的開源項(xiàng)目漏洞的裝置結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
如圖1所示,本發(fā)明實(shí)施例提供一種檢測(cè)軟件中集成或定制的開源項(xiàng)目漏洞的方法,包括:
步驟101、從預(yù)先設(shè)置的搜集庫(kù)中獲取開源項(xiàng)目的原始漏洞信息。
步驟102、根據(jù)所述開源項(xiàng)目的原始漏洞信息,提取開源項(xiàng)目的漏洞描述信息、漏洞影響的軟件或組件版本信息以及漏洞檢測(cè)細(xì)節(jié)特征信息。
步驟103、根據(jù)所述開源項(xiàng)目的漏洞描述信息、漏洞影響的軟件或組件版本信息以及漏洞檢測(cè)細(xì)節(jié)特征信息建立漏洞檢測(cè)數(shù)據(jù)庫(kù)。
其中,所述漏洞檢測(cè)數(shù)據(jù)庫(kù)包括以預(yù)設(shè)索引順序排列的各檢測(cè)項(xiàng)。
步驟104、從待檢測(cè)軟件中提取待檢測(cè)軟件的代碼和可執(zhí)行文件。
步驟105、根據(jù)所述漏洞檢測(cè)數(shù)據(jù)庫(kù)中的各檢測(cè)項(xiàng),以預(yù)設(shè)索引順序依次匹配檢測(cè)待檢測(cè)軟件的代碼和可執(zhí)行文件,以確定待檢測(cè)軟件集成或定制的開源項(xiàng)目是否存在漏洞。
本發(fā)明實(shí)施例提供的檢測(cè)軟件中集成或定制的開源項(xiàng)目漏洞的方法,從預(yù)先設(shè)置的搜集庫(kù)中獲取開源項(xiàng)目的原始漏洞信息;根據(jù)所述開源項(xiàng)目的原始漏洞信息,提取開源項(xiàng)目的漏洞描述信息、漏洞影響的軟件或組件版本信息以及漏洞檢測(cè)細(xì)節(jié)特征信息;根據(jù)所述開源項(xiàng)目的漏洞描述信息、漏洞影響的軟件或組件版本信息以及漏洞檢測(cè)細(xì)節(jié)特征信息建立漏洞檢測(cè)數(shù)據(jù)庫(kù);所述漏洞檢測(cè)數(shù)據(jù)庫(kù)包括以預(yù)設(shè)索引順序排列的各檢測(cè)項(xiàng);從待檢測(cè)軟件中提取待檢測(cè)軟件的代碼和可執(zhí)行文件;根據(jù)所述漏洞檢測(cè)數(shù)據(jù)庫(kù)中的各檢測(cè)項(xiàng),以預(yù)設(shè)索引順序依次匹配檢測(cè)待檢測(cè)軟件的代碼和可執(zhí)行文件,以確定待檢測(cè)軟件集成或定制的開源項(xiàng)目是否存在漏洞??梢?,本發(fā)明實(shí)施例可以通過開源項(xiàng)目的源代碼補(bǔ)丁提取漏洞檢測(cè)特征,即各檢測(cè)項(xiàng),從而通過這些檢測(cè)項(xiàng)即可進(jìn)行匹配檢測(cè),自動(dòng)匹配檢測(cè)較為快捷準(zhǔn)確,避免了當(dāng)前缺少快捷準(zhǔn)確地檢測(cè)軟件中集成或定制的開源項(xiàng)目漏洞的方法。
為了使本領(lǐng)域的技術(shù)人員更好的了解本發(fā)明,下面結(jié)合具體的實(shí)例,對(duì)本發(fā)明做進(jìn)一步的說明,如圖2所示,本發(fā)明實(shí)施例提供一種檢測(cè)軟件中集成或定制的開源項(xiàng)目漏洞的方法,包括:
步驟201、從預(yù)先設(shè)置的漏洞數(shù)據(jù)庫(kù)中獲取開源項(xiàng)目的原始漏洞信息,并通過所述原始漏洞信息中的漏洞參考信息的補(bǔ)丁鏈接獲取開源項(xiàng)目的原始漏洞的修補(bǔ)代碼;或者,從預(yù)先設(shè)置的開源項(xiàng)目主頁(yè)中,搜索開發(fā)者提交的代碼描述及注釋,從而獲取關(guān)鍵詞代碼,在所述關(guān)鍵詞代碼中過濾獲取開源項(xiàng)目的原始漏洞的修補(bǔ)代碼。
上述的漏洞數(shù)據(jù)庫(kù)可以是CVE(公共漏洞和暴露,Common Vulnerabilities&Exposures)等漏洞數(shù)據(jù)庫(kù)。此處的開源項(xiàng)目可以為linux、openssl等流行的開源軟件。上述的關(guān)鍵詞代碼可以為vulnerability,crash,bug,OOB等關(guān)鍵詞代碼。
步驟202、根據(jù)所述開源項(xiàng)目的原始漏洞信息,提取開源項(xiàng)目的漏洞描述信息、漏洞影響的軟件或組件版本信息以及漏洞檢測(cè)細(xì)節(jié)特征信息。
此處,所述漏洞描述信息包括漏洞編號(hào)信息、嚴(yán)重程度信息、漏洞類型信息、漏洞披露時(shí)間信息、漏洞詳情信息。
此處,所述漏洞影響的軟件或組件版本信息包括漏洞影響的軟件或組件名稱、漏洞影響的軟件或組件的版本號(hào),例如組件名稱和版本號(hào)為linux kernel 3.10.12~3.14.15。
此處,所述漏洞檢測(cè)細(xì)節(jié)特征信息包括開源項(xiàng)目組件識(shí)別模塊特征、識(shí)別函數(shù)特征、漏洞是否修補(bǔ)特征。
對(duì)于上述開源項(xiàng)目組件識(shí)別模塊特征,首先可以提取開源項(xiàng)目組件模塊編譯好后的庫(kù)(如文件xx.so或xx.lib)的特征;然后提取庫(kù)組件模塊中特殊的字符串(如“MD5part of OPENSSL 1.0.2a”)等信息形成開源項(xiàng)目組件識(shí)別模塊特征。
另外,上述的識(shí)別函數(shù)特征可通過函數(shù)中如下具有特征的指令來形成,例如:操作常量運(yùn)算指令(如mov eax,0x1234,注:本發(fā)明實(shí)施例以x86二進(jìn)制文件反匯編指令舉例,其他架構(gòu)及語言同理)、庫(kù)函數(shù)調(diào)用的指令(如call write)、對(duì)特征字符串的操作指令(如lea esi,“0123456789”)。
對(duì)于上述的漏洞是否修改特征,其主要是通過補(bǔ)丁代碼中增加或刪除的可區(qū)分代碼不同的特征序列是否存在,從而可判斷漏洞是否已修補(bǔ)。例如幾種類型的特征:
判斷大小等改變程序執(zhí)行路徑分支的指令序列(如“cmp eax,16;ja xxxx”);
給新變量賦值的指令序列(如“mov eax,0x123;mov[esp],eax”);
字符串操作的相關(guān)指令。
步驟203、根據(jù)所述開源項(xiàng)目的漏洞描述信息、漏洞影響的軟件或組件版本信息以及漏洞檢測(cè)細(xì)節(jié)特征信息建立漏洞檢測(cè)數(shù)據(jù)庫(kù);所述漏洞檢測(cè)數(shù)據(jù)庫(kù)包括以預(yù)設(shè)索引順序排列的各檢測(cè)項(xiàng)。
具體的,所述以預(yù)設(shè)索引順序排列的各檢測(cè)項(xiàng)包括:漏洞影響的軟件或組件名稱、漏洞影響的軟件或組件的版本號(hào)、開源項(xiàng)目組件識(shí)別模塊特征、識(shí)別函數(shù)特征以及漏洞是否修補(bǔ)特征。
步驟204、從待檢測(cè)軟件中提取待檢測(cè)軟件的代碼和可執(zhí)行文件。
步驟205、依次根據(jù)漏洞影響的軟件或組件名稱、漏洞影響的軟件或組件的版本號(hào)、開源項(xiàng)目組件識(shí)別模塊特征、識(shí)別函數(shù)特征以及漏洞是否修補(bǔ)特征,對(duì)待檢測(cè)軟件的代碼和可執(zhí)行文件進(jìn)行匹配檢測(cè)。
在步驟205之后,執(zhí)行步驟206或者步驟207。
步驟206、若在待檢測(cè)軟件的代碼和可執(zhí)行文件中,存在與漏洞影響的軟件或組件名稱、漏洞影響的軟件或組件的版本號(hào)、開源項(xiàng)目組件識(shí)別模塊特征、識(shí)別函數(shù)特征以及漏洞是否修補(bǔ)特征其中之一的不匹配內(nèi)容,則確定待檢測(cè)軟件集成或定制的開源項(xiàng)目不存在漏洞。
步驟207、若待檢測(cè)軟件的代碼和可執(zhí)行文件中未存在與漏洞影響的軟件或組件名稱、漏洞影響的軟件或組件的版本號(hào)、開源項(xiàng)目組件識(shí)別模塊特征、識(shí)別函數(shù)特征以及漏洞是否修補(bǔ)特征其中之一的不匹配內(nèi)容,則確定待檢測(cè)軟件集成或定制的開源項(xiàng)目存在漏洞。
本發(fā)明實(shí)施例提供的檢測(cè)軟件中集成或定制的開源項(xiàng)目漏洞的方法,從預(yù)先設(shè)置的搜集庫(kù)中獲取開源項(xiàng)目的原始漏洞信息;根據(jù)所述開源項(xiàng)目的原始漏洞信息,提取開源項(xiàng)目的漏洞描述信息、漏洞影響的軟件或組件版本信息以及漏洞檢測(cè)細(xì)節(jié)特征信息;根據(jù)所述開源項(xiàng)目的漏洞描述信息、漏洞影響的軟件或組件版本信息以及漏洞檢測(cè)細(xì)節(jié)特征信息建立漏洞檢測(cè)數(shù)據(jù)庫(kù);所述漏洞檢測(cè)數(shù)據(jù)庫(kù)包括以預(yù)設(shè)索引順序排列的各檢測(cè)項(xiàng);從待檢測(cè)軟件中提取待檢測(cè)軟件的代碼和可執(zhí)行文件;根據(jù)所述漏洞檢測(cè)數(shù)據(jù)庫(kù)中的各檢測(cè)項(xiàng),以預(yù)設(shè)索引順序依次匹配檢測(cè)待檢測(cè)軟件的代碼和可執(zhí)行文件,以確定待檢測(cè)軟件集成或定制的開源項(xiàng)目是否存在漏洞??梢?,本發(fā)明實(shí)施例可以通過開源項(xiàng)目的源代碼補(bǔ)丁提取漏洞檢測(cè)特征,即各檢測(cè)項(xiàng),從而通過這些檢測(cè)項(xiàng)即可進(jìn)行匹配檢測(cè),自動(dòng)匹配檢測(cè)較為快捷準(zhǔn)確,避免了當(dāng)前缺少快捷準(zhǔn)確地檢測(cè)軟件中集成或定制的開源項(xiàng)目漏洞的方法。
如圖3所示,本發(fā)明實(shí)施例提供一種檢測(cè)軟件中集成或定制的開源項(xiàng)目漏洞的裝置,包括:
原始漏洞信息獲取單元301,可以從預(yù)先設(shè)置的搜集庫(kù)中獲取開源項(xiàng)目的原始漏洞信息。
信息提取單元302,可以根據(jù)所述開源項(xiàng)目的原始漏洞信息,提取開源項(xiàng)目的漏洞描述信息、漏洞影響的軟件或組件版本信息以及漏洞檢測(cè)細(xì)節(jié)特征信息。
漏洞檢測(cè)數(shù)據(jù)庫(kù)建立單元303,可以根據(jù)所述開源項(xiàng)目的漏洞描述信息、漏洞影響的軟件或組件版本信息以及漏洞檢測(cè)細(xì)節(jié)特征信息建立漏洞檢測(cè)數(shù)據(jù)庫(kù);所述漏洞檢測(cè)數(shù)據(jù)庫(kù)包括以預(yù)設(shè)索引順序排列的各檢測(cè)項(xiàng)。
待檢測(cè)軟件提取單元304,可以從待檢測(cè)軟件中提取待檢測(cè)軟件的代碼和可執(zhí)行文件。
匹配檢測(cè)單元305,可以根據(jù)所述漏洞檢測(cè)數(shù)據(jù)庫(kù)中的各檢測(cè)項(xiàng),以預(yù)設(shè)索引順序依次匹配檢測(cè)待檢測(cè)軟件的代碼和可執(zhí)行文件,以確定待檢測(cè)軟件集成或定制的開源項(xiàng)目是否存在漏洞。
此外,所述原始漏洞信息獲取單元301,具體可以:
從預(yù)先設(shè)置的漏洞數(shù)據(jù)庫(kù)中獲取開源項(xiàng)目的原始漏洞信息,并通過所述原始漏洞信息中的漏洞參考信息的補(bǔ)丁鏈接獲取開源項(xiàng)目的原始漏洞的修補(bǔ)代碼。
或者,從預(yù)先設(shè)置的開源項(xiàng)目主頁(yè)中獲取關(guān)鍵詞代碼,在所述關(guān)鍵詞代碼中過濾獲取開源項(xiàng)目的原始漏洞的修補(bǔ)代碼。
此外,所述信息提取單元302提取的漏洞描述信息包括漏洞編號(hào)信息、嚴(yán)重程度信息、漏洞類型信息、漏洞披露時(shí)間信息、漏洞詳情信息。
具體的,所述信息提取單元302提取的漏洞影響的軟件或組件版本信息包括漏洞影響的軟件或組件名稱、漏洞影響的軟件或組件的版本號(hào)。
此外,所述信息提取單元302提取的漏洞檢測(cè)細(xì)節(jié)特征信息包括開源項(xiàng)目組件識(shí)別模塊特征、識(shí)別函數(shù)特征、漏洞是否修補(bǔ)特征。
具體的,所述漏洞檢測(cè)數(shù)據(jù)庫(kù)建立單元303中的以預(yù)設(shè)索引順序排列的各檢測(cè)項(xiàng)包括:漏洞影響的軟件或組件名稱、漏洞影響的軟件或組件的版本號(hào)、開源項(xiàng)目組件識(shí)別模塊特征、識(shí)別函數(shù)特征以及漏洞是否修補(bǔ)特征。
另外,所述匹配檢測(cè)單元305,具體用于:
依次根據(jù)漏洞影響的軟件或組件名稱、漏洞影響的軟件或組件的版本號(hào)、開源項(xiàng)目組件識(shí)別模塊特征、識(shí)別函數(shù)特征以及漏洞是否修補(bǔ)特征,對(duì)待檢測(cè)軟件的代碼和可執(zhí)行文件進(jìn)行匹配檢測(cè)。
若在待檢測(cè)軟件的代碼和可執(zhí)行文件中,存在與漏洞影響的軟件或組件名稱、漏洞影響的軟件或組件的版本號(hào)、開源項(xiàng)目組件識(shí)別模塊特征、識(shí)別函數(shù)特征以及漏洞是否修補(bǔ)特征其中之一的不匹配內(nèi)容,則確定待檢測(cè)軟件集成或定制的開源項(xiàng)目不存在漏洞。
若待檢測(cè)軟件的代碼和可執(zhí)行文件中未存在與漏洞影響的軟件或組件名稱、漏洞影響的軟件或組件的版本號(hào)、開源項(xiàng)目組件識(shí)別模塊特征、識(shí)別函數(shù)特征以及漏洞是否修補(bǔ)特征其中之一的不匹配內(nèi)容,則確定待檢測(cè)軟件集成或定制的開源項(xiàng)目存在漏洞。
值得說明的是,本發(fā)明實(shí)施例提供的檢測(cè)軟件中集成或定制的開源項(xiàng)目漏洞的裝置的具體實(shí)現(xiàn)方式可以參見上述圖1和圖2對(duì)應(yīng)的方法實(shí)施例,此處不再贅述。
本發(fā)明實(shí)施例提供的檢測(cè)軟件中集成或定制的開源項(xiàng)目漏洞的裝置,從預(yù)先設(shè)置的搜集庫(kù)中獲取開源項(xiàng)目的原始漏洞信息;根據(jù)所述開源項(xiàng)目的原始漏洞信息,提取開源項(xiàng)目的漏洞描述信息、漏洞影響的軟件或組件版本信息以及漏洞檢測(cè)細(xì)節(jié)特征信息;根據(jù)所述開源項(xiàng)目的漏洞描述信息、漏洞影響的軟件或組件版本信息以及漏洞檢測(cè)細(xì)節(jié)特征信息建立漏洞檢測(cè)數(shù)據(jù)庫(kù);所述漏洞檢測(cè)數(shù)據(jù)庫(kù)包括以預(yù)設(shè)索引順序排列的各檢測(cè)項(xiàng);從待檢測(cè)軟件中提取待檢測(cè)軟件的代碼和可執(zhí)行文件;根據(jù)所述漏洞檢測(cè)數(shù)據(jù)庫(kù)中的各檢測(cè)項(xiàng),以預(yù)設(shè)索引順序依次匹配檢測(cè)待檢測(cè)軟件的代碼和可執(zhí)行文件,以確定待檢測(cè)軟件集成或定制的開源項(xiàng)目是否存在漏洞??梢姡景l(fā)明實(shí)施例可以通過開源項(xiàng)目的源代碼補(bǔ)丁提取漏洞檢測(cè)特征,即各檢測(cè)項(xiàng),從而通過這些檢測(cè)項(xiàng)即可進(jìn)行匹配檢測(cè),自動(dòng)匹配檢測(cè)較為快捷準(zhǔn)確,避免了當(dāng)前缺少快捷準(zhǔn)確地檢測(cè)軟件中集成或定制的開源項(xiàng)目漏洞的方法。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
本發(fā)明中應(yīng)用了具體實(shí)施例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。