林心怡
摘 要:改革開放以來,隨著我國(guó)社會(huì)主義市場(chǎng)經(jīng)濟(jì)的發(fā)展,計(jì)算機(jī)為代表的科學(xué)技術(shù)獲得了前所未有的發(fā)展,計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)已經(jīng)深入到我國(guó)的各行各業(yè),并且發(fā)揮著越來越重要的作用。因此,計(jì)算機(jī)軟件的安全問題自然而然便發(fā)展成為人們研究的重點(diǎn),其中安全漏洞可以說是計(jì)算機(jī)軟件面臨的主要威脅之一。因此,文章對(duì)計(jì)算機(jī)軟件中安全漏洞檢測(cè)技術(shù)做了深入研究,以期切實(shí)提升計(jì)算機(jī)軟件的安全性,使之更好地為人類服務(wù)。
關(guān)鍵詞:計(jì)算機(jī)軟件;安全漏洞;檢測(cè)技術(shù);研究
1 概述
近年來,我國(guó)的科學(xué)技術(shù)得到了迅猛發(fā)展,同時(shí)計(jì)算機(jī)軟件也發(fā)揮出了更加強(qiáng)大的功能,不可避免地帶來了源代碼數(shù)據(jù)量的激增,這為不法分子的入侵埋下了隱患。因此,現(xiàn)如今計(jì)算機(jī)系統(tǒng)安全的最關(guān)鍵問題之一便是軟件安全[1]。據(jù)有關(guān)研究表明,現(xiàn)代計(jì)算機(jī)軟件系統(tǒng)的工作中漏洞百出,不法分子在攻擊時(shí)也更多地呈現(xiàn)出利益化以及多樣化的趨勢(shì)。為了確保計(jì)算機(jī)系統(tǒng)的安全性,相關(guān)技術(shù)人員必須加強(qiáng)對(duì)計(jì)算機(jī)軟件的研究,分析相應(yīng)的安全漏洞檢測(cè)技術(shù),尋求處理方式的創(chuàng)新。
2 計(jì)算機(jī)軟件中安全漏洞檢測(cè)技術(shù)
通常情況下,我們對(duì)計(jì)算機(jī)軟件中的安全漏洞進(jìn)行檢測(cè)時(shí),分別以動(dòng)態(tài)和靜態(tài)兩種方式進(jìn)行檢測(cè)。
2.1 安全靜態(tài)檢測(cè)
2.1.1 靜態(tài)分析
這種檢測(cè)技術(shù)主要是面向程序中的代碼,對(duì)其進(jìn)行全面直接的掃描,對(duì)程度代碼中的關(guān)鍵句和語法進(jìn)行總結(jié)與提煉,并解讀出其中的含義,進(jìn)而來確定程序的目的,最后根據(jù)事先預(yù)設(shè)的漏洞特征和計(jì)算機(jī)軟件系統(tǒng)的安全標(biāo)準(zhǔn)來對(duì)這些漏洞作出整體性檢測(cè)[2]。首先,分析語句和語法。這是靜態(tài)分析方法中誕生最早的一門技術(shù),但是這種檢測(cè)技術(shù)在工作時(shí),僅僅是對(duì)語法進(jìn)行檢查。該檢測(cè)技術(shù)具備自身的“疑問數(shù)據(jù)庫(kù)”,監(jiān)測(cè)時(shí)對(duì)系統(tǒng)中的程序進(jìn)行分段,逐段與“疑問數(shù)據(jù)庫(kù)”進(jìn)行對(duì)比,假設(shè)發(fā)現(xiàn)某一片段是可疑部分,那么要針對(duì)這一片段進(jìn)行啟發(fā)式評(píng)估和判定。由此我們可以得出,雖然通過對(duì)語句和語法的分析能夠有效檢測(cè)漏洞,然而能夠檢測(cè)出的數(shù)量和類型都是固定的,存在較為嚴(yán)重的漏報(bào)現(xiàn)象;其次,嚴(yán)格遵守有關(guān)標(biāo)準(zhǔn)檢測(cè)。一般而言,這種安全標(biāo)準(zhǔn)是對(duì)系統(tǒng)程序運(yùn)行情況的描述,屬于一種編程標(biāo)準(zhǔn),也就是我們通常所講的漏洞模式。我們可以采用規(guī)則處理方式,通過一定的語法模式對(duì)相關(guān)標(biāo)準(zhǔn)作出表述,然后以規(guī)則處理器進(jìn)行接收,將其轉(zhuǎn)化為可以被處理器接受的內(nèi)部表達(dá),這些準(zhǔn)備工作完成以后,對(duì)整體檢測(cè)系統(tǒng)程序的運(yùn)行。
2.1.2 程序檢驗(yàn)
在程序檢驗(yàn)檢測(cè)方式中,以抽象的軟件系統(tǒng)程序來得到形式化的程序和模型,然后通過形式化檢測(cè)技術(shù)作出檢測(cè),最后通過正確性的檢測(cè)方式檢測(cè)計(jì)算機(jī)系統(tǒng)的漏洞。首先,進(jìn)行模型檢測(cè)。該檢測(cè)是指對(duì)計(jì)算機(jī)系統(tǒng)程序的有向圖和狀態(tài)機(jī)等作出抽象模型,在這一過程中作出對(duì)系統(tǒng)特征的檢驗(yàn)。通常有兩種檢驗(yàn)方式,即符號(hào)化和模型自動(dòng)轉(zhuǎn)化。前者是指將抽象模型轉(zhuǎn)化為語法書的形式,然后以公式進(jìn)行描述,并對(duì)其進(jìn)行判斷;后者指的是以等價(jià)自動(dòng)機(jī)的形式來對(duì)需要進(jìn)一步檢測(cè)的程序進(jìn)行描述,通過兩個(gè)自動(dòng)機(jī)之間的補(bǔ)充與替換來形成新的自動(dòng)機(jī),然后以可以接受的語言形式把判定的系統(tǒng)表達(dá)出來[3]。在模型檢驗(yàn)中,通常是對(duì)實(shí)際狀況下有可能發(fā)生的所有情況進(jìn)行列舉,受到軟件系統(tǒng)本身復(fù)雜性等因素的限制,如果對(duì)全部程序點(diǎn)建模,那么其規(guī)模將會(huì)難以想象。所以,我們往往只是對(duì)一部分程序點(diǎn)建模。近年來,新的模型檢測(cè)技術(shù)逐漸誕生,原理在于通過內(nèi)存建模來檢測(cè)時(shí)序漏洞,再以定理證明的方式來進(jìn)行漏洞檢測(cè)。此檢測(cè)方式通過多重判定方式來判斷程序漏洞,比模型檢驗(yàn)更加嚴(yán)密。在程序檢驗(yàn)的過程中,模式檢驗(yàn)的可靠性與實(shí)用性都能夠在實(shí)踐中得到驗(yàn)證。具體應(yīng)用時(shí),使用者必須具備較高的綜合素養(yǎng)以及專業(yè)技術(shù),因此,該技術(shù)的應(yīng)用并沒有得到普及。
由于計(jì)算機(jī)軟件中安全漏洞的靜態(tài)檢測(cè)缺乏普通漏洞的描述標(biāo)準(zhǔn),而且只能對(duì)當(dāng)前已經(jīng)出現(xiàn)的漏洞進(jìn)行檢測(cè),也無法對(duì)現(xiàn)有的漏洞進(jìn)行全面覆蓋,要想提升靜態(tài)檢測(cè)的質(zhì)量,一定的運(yùn)行成本資金投入是必不可少的。
2.2 安全動(dòng)態(tài)檢測(cè)
2.2.1 內(nèi)存映射
在一些攻擊程序中,設(shè)計(jì)者們往往通過“NULL”結(jié)尾的字符串對(duì)內(nèi)存進(jìn)行覆蓋。通過代碼頁映射技術(shù)的使用,能夠?qū)⒐粽叩囊陨闲袨樽兊卯惓@щy。因此,我們可以看出將代碼頁隨機(jī)映射到各內(nèi)存地址,能夠有效減小通過猜測(cè)地址進(jìn)行頁面攻擊的概率。
2.2.2 非執(zhí)行棧
通過對(duì)近年來計(jì)算機(jī)軟件安全問題進(jìn)行研究發(fā)現(xiàn),基于棧攻擊軟件的問題經(jīng)常出現(xiàn),這與操作系統(tǒng)中棧自身的能寫與執(zhí)行密不可分。我們知道,內(nèi)部變量,特別是數(shù)組變量是包含在棧中的,攻擊者通過向棧中植入部分代碼,然后找到代碼執(zhí)行的方法。要想有效防止棧被攻擊,最有效的途徑便是將其轉(zhuǎn)變成為無法執(zhí)行代碼的形式。只有通過這種形式,攻擊者以不良目的植入棧中的代碼才不能執(zhí)行,大大減小了棧被攻擊的可能性。
2.2.3 安全共享庫(kù)
在計(jì)算機(jī)軟件的安全漏洞中,有相當(dāng)一部分產(chǎn)生的原因是使用了不安全的共享庫(kù)。通過安全共享庫(kù)的使用,攻擊者對(duì)計(jì)算機(jī)軟件安全漏洞的攻擊行為能夠得到有效預(yù)防。所謂安全共享庫(kù)是指通過動(dòng)態(tài)鏈接形式來阻止軟件運(yùn)行中沒有安全性的函數(shù),同時(shí)對(duì)這些函數(shù)進(jìn)行檢測(cè),通過這種形式來保障計(jì)算機(jī)軟件的安全性。安全共享庫(kù)的廣泛應(yīng)用與Windows和Unix操作系統(tǒng)中。
2.2.4 沙箱
該方法主要是指通過對(duì)某程序的資源訪問作出限制避免惡意攻擊的侵害。例如,我們知道,C語言中具有一些調(diào)動(dòng)函數(shù),但是正常的軟件中并沒有這種函數(shù),假設(shè)發(fā)現(xiàn)正在運(yùn)行的軟件中有調(diào)動(dòng)函數(shù),那么它受到攻擊的可能性很大。倘若我們?cè)谲浖还糁笆褂昧松诚?,可以有效限定軟件,如果受到攻擊也不?huì)影響其正常運(yùn)行。
3 計(jì)算機(jī)軟件中安全漏洞檢測(cè)技術(shù)的應(yīng)用
3.1 預(yù)防競(jìng)爭(zhēng)條件的漏洞
針對(duì)由于競(jìng)爭(zhēng)條件而產(chǎn)生的安全漏洞,通常所使用的預(yù)防措施是使用原子化的方式對(duì)形成競(jìng)爭(zhēng)的編碼進(jìn)行操作。在程序運(yùn)行時(shí),編碼可謂是最小單位,它不受到任何情況的干擾。而在原子化操作中,通過鎖定技術(shù),間接調(diào)用使用文件名系統(tǒng),然后把使用的文件或者句柄表達(dá)出來[4]。
3.2 預(yù)防緩沖區(qū)漏洞
通過對(duì)軟件中危險(xiǎn)系數(shù)高的函數(shù)進(jìn)行檢查,充分避免緩沖區(qū)漏洞的溢出,這一過程的軟件版本使用中,可以安全版本代替不安全版本。
3.3 預(yù)防隨機(jī)出現(xiàn)的漏洞
對(duì)隨機(jī)漏洞的預(yù)防中,采用隨機(jī)發(fā)生設(shè)備比較合適。這種設(shè)備具備了密碼算法,可以在很大程度上確保隨機(jī)數(shù)流的安全。
3.4 預(yù)防格式化字符串的漏洞
通常情況下,不定參數(shù)的個(gè)數(shù)函數(shù)中格式化字符串出現(xiàn)的可能性較大,因此,在該類函數(shù)的應(yīng)用中,要確保每項(xiàng)參數(shù)的個(gè)數(shù)和均衡性能。
參考文獻(xiàn)
[1]張林,曾慶凱.軟件安全漏洞的靜態(tài)檢測(cè)技術(shù)[J].計(jì)算機(jī)工程,2008,34(12):157-159.
[2]呂云芳.計(jì)算機(jī)安全漏洞動(dòng)態(tài)檢測(cè)技術(shù)研究[J].電腦編程技巧與維護(hù),2012(22):100-101,114.
[3]張 .基于Windows平臺(tái)的軟件安全漏洞發(fā)掘技術(shù)研究[D].電子科技大學(xué),2010.
[4]劉志建.芻議計(jì)算機(jī)軟件安全檢測(cè)技術(shù)的應(yīng)用[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2013(2):13-15.