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