我們常說的計(jì)算機(jī)軟件漏洞是廣義上的軟件安全漏洞,主要是指在軟件的編寫過程中,容易對整個(gè)計(jì)算機(jī)軟件系統(tǒng)造成安全性方面威脅的缺陷,或者是能夠?qū)φ麄€(gè)系統(tǒng)的運(yùn)行帶來影響的各類因素的總和。由于計(jì)算機(jī)軟件都是人為編制的,所以都會(huì)因?yàn)檐浖木幹迫藛T在編制軟件過程中的考慮問題不全面帶來安全漏洞,這是每一個(gè)計(jì)算機(jī)系統(tǒng)都存在的問題,所以漏洞的出現(xiàn)是在正常不過了。
但于此同時(shí),計(jì)算機(jī)軟件存在的漏洞一旦被一些黑客發(fā)現(xiàn),就會(huì)成為攻擊的目標(biāo)和突破口,所以我們在無法避免計(jì)算機(jī)軟件漏洞的同時(shí),要及時(shí)對計(jì)算機(jī)軟件進(jìn)行掃描,對發(fā)現(xiàn)的漏洞及時(shí)進(jìn)行修復(fù),這也是評測一個(gè)計(jì)算機(jī)系統(tǒng)安全性能的一個(gè)標(biāo)準(zhǔn)。
黑客利用計(jì)算機(jī)軟件系統(tǒng)的漏洞實(shí)施攻擊是當(dāng)下軟件系統(tǒng)安全時(shí)間中最主要發(fā)生的一類。網(wǎng)上一般活躍比較多的都是一些初級黑客,他們在對計(jì)算機(jī)軟件系統(tǒng)的漏洞進(jìn)行攻擊是呈現(xiàn)了一定的特點(diǎn)。比如,漏洞遭受攻擊的次數(shù)與漏洞發(fā)布的時(shí)間成反比,也就是說,最新發(fā)布的軟件漏洞遭受黑客攻擊的次數(shù)比較多。這也是因?yàn)槲④洉?huì)依據(jù)在系統(tǒng)中檢測中的漏洞進(jìn)行及時(shí)的補(bǔ)丁完善而導(dǎo)致的,發(fā)布時(shí)間越長的漏洞,打補(bǔ)丁的用戶會(huì)越多。能夠快速檢測出聯(lián)網(wǎng)計(jì)算機(jī)在軟件漏洞問題,并且有針對性地進(jìn)行更新,是我們當(dāng)前信息安全人員需要開展的重要工作。
針對軟件存在漏洞的問題,信息安全人員也已經(jīng)于漏洞以及黑客打了半個(gè)多世紀(jì)的交道,因此,在漏洞檢測技術(shù)中,也形成了一系列檢測的慣例。如今我們在計(jì)算機(jī)軟件漏洞的檢測中比較常用的檢測方法主要有一下幾種:
(1)靜態(tài)檢測。靜態(tài)檢測技術(shù)就是我們軟件工程師常說的軟件靜態(tài)測試,通過一定的技術(shù)直接分析軟件的源代碼,通過對編程源代碼中的語法、語義進(jìn)行分析,從最基本的邏輯中檢測和去除可能存在的安全隱患或者說軟件漏洞。目前在靜態(tài)測試過程中主要采取的方法有推斷、數(shù)據(jù)流分析以及約束分析這三類。其中,推斷主要是將同語法類型的源代碼進(jìn)行總結(jié),有針對性地進(jìn)行推斷,而數(shù)據(jù)流分析是通過斷點(diǎn)檢測的方法分析源代碼中數(shù)據(jù)的走向,以此來判斷源程序中是否會(huì)有安全隱患,約束分析就是在源代碼的一些地方認(rèn)為增加一些可能發(fā)生的約束條件,看軟件是否會(huì)產(chǎn)生存在安全隱患的相應(yīng)。
靜態(tài)分析雖然能夠最直接地對軟件的安全隱患進(jìn)行解除和排查,但是并不能完全排查出軟件中存在的漏洞,因此我們還需要尋找其他配合使用的軟件測試方法。
(2)動(dòng)態(tài)測試。動(dòng)態(tài)測試不同于靜態(tài)分析,是首先將軟件“跑起來”,在軟件執(zhí)行的情況下對軟件中的變量在特定時(shí)間域內(nèi)的數(shù)值變化提取出來進(jìn)行分析,看其是否符合我們預(yù)定的變化軌道,以此來判斷軟件在哪一個(gè)環(huán)節(jié)會(huì)存在安全。動(dòng)態(tài)測試中的一種方式是在動(dòng)態(tài)測試的過程中就進(jìn)行軟件數(shù)據(jù)信息的收集工作,而另外一種方式是將執(zhí)行過程中的信息做全紀(jì)錄,之后再用這些信息進(jìn)行漏洞模式匹配,查找軟件漏洞。
(3)混合檢測。混合檢測并不是單純地將靜態(tài)檢測和動(dòng)態(tài)檢測結(jié)合起來形成先靜態(tài)后動(dòng)態(tài)或者先動(dòng)態(tài)后靜態(tài)的檢測方法。而是在結(jié)合了二者的內(nèi)容衍生出的檢測方法,兼顧有兩種檢測方法的特點(diǎn)。這其中就包括了測試庫技術(shù)、源代碼的改編技術(shù)以及異常檢測技術(shù)等多種技術(shù)。這些技術(shù)都是使用在不同需求和不同環(huán)境下的混合軟件漏洞檢測技術(shù)。
通過計(jì)算機(jī)漏洞的檢測技術(shù),讓計(jì)算機(jī)軟件以及計(jì)算機(jī)自身的漏洞能夠盡快找出,從而進(jìn)行軟件的及時(shí)漏洞修補(bǔ)與更新,在一定程度上完成對于漏洞的檢測工作。為了讓計(jì)算機(jī)更好的運(yùn)行,并且保證期運(yùn)行的安全性。漏洞檢測技術(shù)是必然要進(jìn)行開發(fā)與研究的,此外要注意對于漏洞的危險(xiǎn)性級別的分類。
漏洞的修復(fù)與更新的概念非常廣,不僅包含了我們常說的對計(jì)算機(jī)軟件進(jìn)行升級或者安全補(bǔ)丁的修復(fù),我們平時(shí)經(jīng)常使用的安裝防火墻、殺毒軟件以及更改一些關(guān)鍵部位的安全口令都可以看做是最計(jì)算機(jī)軟件的漏洞修復(fù)與更新。以安裝官方的補(bǔ)丁這種修復(fù)方法為例,最早提出對計(jì)算機(jī)軟件的漏洞進(jìn)行補(bǔ)丁修復(fù)的是微軟公司,在補(bǔ)丁的全生命周期中對補(bǔ)丁的識別、部署以及評估等都需要進(jìn)行有效的管理,才不會(huì)再次成為軟件安全漏洞。在軟件漏洞與修復(fù)的管理中主要有以下幾類成熟的管理模型:
(1)微軟補(bǔ)丁管理模型。微軟作為全球計(jì)算機(jī)系統(tǒng)的寡頭,其推行下的補(bǔ)丁管理模型已經(jīng)逐漸成為其他廠商的標(biāo)準(zhǔn)。微軟的補(bǔ)丁管理從漏洞的識別開始,經(jīng)過計(jì)劃階段、測試階段和部署階段。整個(gè)流程中通過對計(jì)算機(jī)漏洞的威脅等級進(jìn)行評估和識別,在計(jì)劃階段拿出補(bǔ)丁的計(jì)劃方案并予以實(shí)施,再通過植入系統(tǒng)中進(jìn)行全方位的測試到最終的部署階段。但是后續(xù)一定要對補(bǔ)丁的反饋信息進(jìn)行及時(shí)的梳理和統(tǒng)計(jì)。
(2)CNCERT/CC 補(bǔ)丁管理流程。這個(gè)補(bǔ)丁的管理流程是來自于我國國家計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心的,將補(bǔ)丁管理視為一類特殊的工程管理,也分為事前管理、實(shí)施過程的管理以及事后管理三部分??傮w來講與微軟的管理模式大同小異,只是在事后管理中采取一定措施來保證計(jì)算機(jī)軟件系統(tǒng)的穩(wěn)定性。
總之,隨著計(jì)算機(jī)技術(shù)的普及化以及越來越多的計(jì)算機(jī)軟件方面人才的培養(yǎng),黑客的數(shù)量也會(huì)越來越多。因此,計(jì)算機(jī)軟件的安全性也需要進(jìn)行更高技術(shù)的改革。作為我們的計(jì)算機(jī)軟件的普通用戶來講,發(fā)現(xiàn)軟件的漏洞是非常正常的,但與此同時(shí),我們也要做好保密工作,不要將漏洞散播出去,而是即使反饋給相應(yīng)的廠商,讓他們?nèi)プ鱿鄳?yīng)的更新工作,這樣我們才能夠有一個(gè)更好的計(jì)算機(jī)軟件的生存環(huán)境。