嚴(yán)春風(fēng)
摘要:隨著我國(guó)經(jīng)濟(jì)的發(fā)展,科技水平不斷提高,如今已進(jìn)入互聯(lián)網(wǎng)的時(shí)代,信息系統(tǒng)被我們廣泛應(yīng)用到生活中的各個(gè)領(lǐng)域當(dāng)中,因此信息安全已經(jīng)成為人們重點(diǎn)關(guān)注的問(wèn)題。計(jì)算機(jī)軟件中的漏洞對(duì)我們的信息安全造成了嚴(yán)重威脅,所以我們要提高對(duì)軟件中漏洞的安全檢測(cè)水平,本文對(duì)其各種檢測(cè)技術(shù)進(jìn)行闡述。
關(guān)鍵詞:計(jì)算機(jī);軟件;安全漏洞;檢測(cè)技術(shù);運(yùn)用
中圖分類號(hào)TP3 文獻(xiàn)標(biāo)識(shí)碼A 文章編號(hào)2095-6363(2016)06-0050-02
隨著社會(huì)的信息化發(fā)展,Pc軟件在各個(gè)行業(yè)里起著越來(lái)越重要的作用。隨著源代碼數(shù)量的增加,網(wǎng)絡(luò)黑客利用其中漏洞進(jìn)行破壞的可能性也越來(lái)越高,軟件安全問(wèn)題儼然已成為系統(tǒng)安全的重點(diǎn)問(wèn)題。如今軟件中的漏洞逐漸增多,更多的黑客借此機(jī)會(huì)對(duì)系統(tǒng)進(jìn)行攻擊從而在其中獲得更多的利益,而其手段也更加多樣化。因此,安全技術(shù)人員必須增強(qiáng)漏洞檢測(cè)的技術(shù)研究,從而保護(hù)信息資料安全。
1.PC軟件漏洞
所謂漏洞,是指軟件系統(tǒng)中存在的弱項(xiàng)和缺點(diǎn),而這些弱點(diǎn)將會(huì)成為被黑客攻擊的目標(biāo)。漏洞之所以會(huì)出現(xiàn)是因?yàn)樵谲浖_(kāi)發(fā)過(guò)程中,編程人員設(shè)計(jì)失誤導(dǎo)致的。一般來(lái)說(shuō),漏洞有2種表現(xiàn)形式:其一,安全性漏洞。這種漏洞在人們平時(shí)正常使用計(jì)算機(jī)工作、學(xué)習(xí)、生活時(shí)不會(huì)出現(xiàn),但是當(dāng)這些漏洞被有心人發(fā)現(xiàn)并加以利用,就可能使軟件的運(yùn)行出現(xiàn)錯(cuò)誤,更嚴(yán)重時(shí)可能導(dǎo)致發(fā)出錯(cuò)誤指令,對(duì)程序的運(yùn)行造成更大的危害;其二,功能性漏洞。這種漏洞會(huì)影響人們對(duì)軟件的正常使用,比如軟件運(yùn)行時(shí)的流程及結(jié)果出現(xiàn)偏差等。
漏洞本身有幾點(diǎn)特性,我們能從4個(gè)方面看出:第一,程序員在編程過(guò)程中出現(xiàn)的邏輯性失誤,這種失誤非常常見(jiàn),其出現(xiàn)的原因是由于程序員的粗心;第二,Pc軟件對(duì)數(shù)據(jù)做運(yùn)算處理時(shí),出現(xiàn)邏輯性錯(cuò)誤,而容易產(chǎn)生邏輯錯(cuò)誤的往往是那些過(guò)大或過(guò)小的模塊,中等規(guī)模程序模塊較前兩者比較不容易發(fā)生邏輯錯(cuò)誤;第三,Pc軟件漏洞可能隨時(shí)間的推移發(fā)生變化,兩者之間聯(lián)系緊密,例如,舊的漏洞被程序員逐漸修復(fù),然而修復(fù)漏洞的代碼中可能會(huì)產(chǎn)生新的漏洞。由此可見(jiàn),漏洞問(wèn)題絕不會(huì)是能夠一勞永逸解決的問(wèn)題,它需要我們不斷對(duì)軟件進(jìn)行維護(hù);第四,漏洞在不同的Pc軟硬件系統(tǒng)中會(huì)有不同的表現(xiàn),在相同設(shè)備的不同設(shè)置、不同版本上也會(huì)有不同表現(xiàn)。
2.檢測(cè)技術(shù)
Pc軟件安全漏洞一般可用2種方法檢測(cè):動(dòng)態(tài)檢測(cè)和靜態(tài)檢測(cè)。
2.1動(dòng)態(tài)檢測(cè)
1)沙箱。沙箱是指對(duì)資源訪問(wèn)權(quán)限設(shè)限,這樣一來(lái)可以避免黑客對(duì)其進(jìn)行攻擊。比如c語(yǔ)言中一些函數(shù)可以被調(diào)用,而某個(gè)軟件自身不包含這些函數(shù)的調(diào)用,但是卻發(fā)現(xiàn)運(yùn)行中的軟件含有此類函數(shù)調(diào)用,這就說(shuō)明軟件已經(jīng)遭到不明攻擊。而沙箱的作用在此時(shí)可以充分發(fā)揮,它確保軟件遭到攻擊時(shí)不會(huì)影響其正常運(yùn)行。
2)共享庫(kù)的安全性。某些Pc軟件漏洞的出現(xiàn)是因?yàn)槭褂霉蚕韼?kù)的不安全。安全的共享庫(kù)在一定程度上對(duì)黑客的攻擊能夠進(jìn)行抵御。安全的共享庫(kù)是指使用動(dòng)態(tài)的鏈接方法,對(duì)那些不安全的函數(shù)在代碼運(yùn)行時(shí)進(jìn)行攔截,并且對(duì)其檢測(cè),這種方法也可以確保Pc軟件安全運(yùn)行。
3)內(nèi)存映射。黑客對(duì)軟件進(jìn)行攻擊時(shí)一般使用以“NUL”"結(jié)尾字符串覆蓋內(nèi)存,最終達(dá)到其攻擊的目的。而內(nèi)存映射,會(huì)讓黑客對(duì)軟件進(jìn)行攻擊時(shí),利用“NULL”結(jié)尾字符覆蓋內(nèi)存時(shí),不能輕易的跳轉(zhuǎn)至簡(jiǎn)單內(nèi)存區(qū)。換而言之,將代碼頁(yè)映射內(nèi)存的操作隨機(jī)化,這樣一來(lái)也能在一定程度上減少黑客通過(guò)猜測(cè)內(nèi)存地址進(jìn)行頁(yè)面攻擊的危險(xiǎn)性。
4)非執(zhí)行棧。黑客經(jīng)常會(huì)通過(guò)棧對(duì)軟件進(jìn)行攻擊,這個(gè)情況發(fā)生的原因一般是因?yàn)闂1旧韴?zhí)行和能寫(xiě)方面的原因。黑客一般會(huì)在棧內(nèi)摻加惡意代碼,并且使其運(yùn)行。而防止這種情況發(fā)生的有效措施是把棧變?yōu)椴豢蓤?zhí)行形式的代碼。這樣一來(lái),攻擊者在棧內(nèi)摻加的惡意代碼不能被執(zhí)行,在很大程度上降低被攻擊的可能性。
5)程序解釋。漏洞檢測(cè)技術(shù)中有一個(gè)比較好的方法,即程序解釋技術(shù)。當(dāng)代碼運(yùn)行后采取強(qiáng)制安全檢測(cè)及監(jiān)視行為對(duì)其進(jìn)行防御。但是,這種技術(shù)可能會(huì)導(dǎo)致大量性能的消耗,對(duì)此,我們通過(guò)使用程序的監(jiān)視器,使得檢測(cè)工作可以在安全檢測(cè)的同時(shí)保證不會(huì)犧牲大量的性能。這種技術(shù)將黑客的攻擊分成3種,繞過(guò)Pc的安全檢測(cè)、執(zhí)行非原始程序代碼以及無(wú)限制控制轉(zhuǎn)移,另外,此技術(shù)無(wú)需改變應(yīng)用程序以及系統(tǒng)的內(nèi)核,只需在應(yīng)用程序中鏈接啟動(dòng)程序代碼,并用其調(diào)用程序框架。當(dāng)然,這種技術(shù)的應(yīng)用也有其局限性,它會(huì)對(duì)系統(tǒng)兼容性產(chǎn)生一定危害,嚴(yán)重的可能會(huì)引發(fā)應(yīng)用程序的崩壞,但太過(guò)寬泛的策略又起不到防御攻擊的效果,因此程序員要合理使用這種技術(shù),在兩者間做出平衡。
2.2靜態(tài)檢測(cè)
最初的Pc漏洞的靜態(tài)分析就是靜態(tài)檢測(cè),但其檢測(cè)方式浮于表面,通過(guò)近年來(lái)的創(chuàng)新和研究,其檢測(cè)方式被擴(kuò)充成2個(gè)內(nèi)容:程序檢驗(yàn)和靜態(tài)分析。前者指的是抽象系統(tǒng)內(nèi)部源代碼,通常使用檢測(cè)方法,對(duì)程序是否符合Pc安全等需求進(jìn)行檢測(cè),而后檢驗(yàn)軟件是否存在安全漏洞;后者指的是掃描待測(cè)軟件源代碼,并從語(yǔ)義等多角度解析,從而進(jìn)一步分析需要檢測(cè)代碼的自身特點(diǎn)。
靜態(tài)檢測(cè)更注重代碼內(nèi)部特性,其劃分漏洞的方法多樣,根據(jù)已有分類法能把漏洞劃分為一些細(xì)小的組成,大多檢測(cè)方法可以處理零散的漏洞,因此我們難以發(fā)現(xiàn)漏洞的共同點(diǎn)。因此,我們將漏洞劃分為內(nèi)存性和安全性2種。內(nèi)存性漏洞側(cè)重?cái)?shù)據(jù)的準(zhǔn)確性和類別,安全性漏洞重視的是數(shù)據(jù)流的錯(cuò)誤。一些靜態(tài)檢測(cè)方法僅僅對(duì)特定漏洞檢測(cè),而另一些則能夠檢測(cè)以上2種漏洞。
1)程序檢驗(yàn)。此檢測(cè)方式需要形式化模型及程序。模型檢驗(yàn),需要采取顯式的狀態(tài)搜索或隱式的不動(dòng)點(diǎn)驗(yàn)證系統(tǒng)的命題性質(zhì)或狀態(tài),并采用建模方法驗(yàn)證程序構(gòu)造特性等。另外,可以在其中加入定N~iE明方法。這種方法能夠根據(jù)公式判別代碼抽象公式的對(duì)錯(cuò),在一定程度上,這種方法讓模型檢驗(yàn)得到了發(fā)展,因此變得更嚴(yán)密。
2)靜態(tài)分析。靜態(tài)分析要對(duì)代碼進(jìn)行掃描,提煉關(guān)鍵內(nèi)容,對(duì)其進(jìn)行分析解讀,并按照預(yù)設(shè)安全標(biāo)準(zhǔn)對(duì)其進(jìn)行檢測(cè)。首先是對(duì)其詞法語(yǔ)句進(jìn)行分析,這種方法僅僅從語(yǔ)法上檢測(cè)代碼,更具體的說(shuō),是將代碼分成幾個(gè)片段,在將其與可能出現(xiàn)漏洞的部分對(duì)比,這種方法較為繁瑣,一般不建議采用。另外,采取利用規(guī)則檢測(cè)的方法。此方法用于檢測(cè)代碼本身。編程過(guò)程里,程序員容易發(fā)生誤操作,導(dǎo)致漏洞出現(xiàn)。而規(guī)則檢測(cè)要對(duì)程序的規(guī)則進(jìn)行描述,再用處理器進(jìn)行檢測(cè)分析。
3.檢測(cè)技術(shù)運(yùn)用
3.1緩沖區(qū)漏洞的預(yù)防
通過(guò)對(duì)整個(gè)程序里容易遭受攻擊的函數(shù)進(jìn)行檢查,從而防止在緩沖區(qū)存在漏洞溢出現(xiàn)象。具體來(lái)說(shuō),我們要用安全版本的軟件替代不可靠版本的軟件。比如:使用extern char*strncat替代extern char*strcat等。
3.2競(jìng)爭(zhēng)條件漏洞的預(yù)防
我們可以采用原子化的方法對(duì)由競(jìng)爭(zhēng)條件引發(fā)的漏洞進(jìn)行處理。程序代碼執(zhí)行過(guò)程里的最小單位就是編碼。當(dāng)程序處于運(yùn)行階段時(shí),編碼不會(huì)為任何情況所影響。這種方法是采取鎖定的方式,防止因特定狀態(tài)的變化而產(chǎn)生的問(wèn)題發(fā)生,并通過(guò)間接調(diào)用的方法,描述好使用的句柄以及文件。
3.3隨機(jī)漏洞的預(yù)防
我們要利用隨機(jī)發(fā)生這一設(shè)備中自帶的密碼算法來(lái)保護(hù)程序安全,即便被攻擊也不會(huì)使攻擊方獲得其數(shù)據(jù)流。
3.4格式化的字符串漏洞預(yù)防
在數(shù)碼中通過(guò)格式常量進(jìn)行嚴(yán)謹(jǐn)預(yù)防,不給黑客攻擊留下可乘之機(jī)。通常個(gè)數(shù)函數(shù)里都存在這種漏洞,因此,我們?cè)谑褂眠@類函數(shù)時(shí)要確保均衡性能和參數(shù)的個(gè)數(shù)。
4.結(jié)論
當(dāng)今社會(huì),Pc漏洞嚴(yán)重威脅著信息安全,因此,掌握Pc軟件漏洞的各種檢測(cè)技術(shù),并加以正確的運(yùn)用顯得十分重要??傊?,漏洞的各種檢測(cè)技術(shù)漸漸變成維護(hù)Pc安全最基本的方法,相關(guān)人員應(yīng)該加強(qiáng)對(duì)各種檢測(cè)技術(shù)和應(yīng)用的研究,讓計(jì)算機(jī)軟件更好的服務(wù)于人類生活。