- 相關(guān)推薦
簡要分析計算機軟件中安全漏洞檢測技術(shù)及其應(yīng)用論文
1 前言
隨著科學技術(shù)的不斷發(fā)展,計算機軟件發(fā)揮著強大的作用,數(shù)量越來越多的計算機源代碼也使得們更容易侵襲計算機軟件系統(tǒng),出現(xiàn)安全漏洞影響系統(tǒng)的穩(wěn)定性。如今們?nèi)肭窒到y(tǒng)產(chǎn)生的安全漏洞的形式正趨向多樣化,而計算機軟件中的安全漏洞檢測技術(shù)則顯得尤為重要。
2 計算機軟件中存在的漏洞簡述
2. 1 計算機軟件中存在的漏洞概述和類型
就計算機軟件而言,安全漏洞又稱為計算機的脆弱性,是指能夠?qū)τ嬎銠C系統(tǒng)的運行造成安全問題的一些弱點或缺點,也可以說是計算機系統(tǒng)中能夠被利用來攻擊計算機系統(tǒng)從而影響計算機正常運行的問題。計算機設(shè)計人員在研制和開發(fā)計算機軟件時,如果在操作過程中產(chǎn)生技術(shù)失誤也可以稱之為計算機安全漏洞。很多計算機在安裝主體時往往會安裝防火墻和反防毒軟件等避免計算機安全漏洞造成的損失和危害。一般而言,在良好的運行環(huán)境下,通過對防火墻與反防毒軟件的應(yīng)用,可以使安全漏洞得到有效防止。但是在實際生活中,反防毒軟件和防火墻并不能完全避免安全漏洞的發(fā)生,真正有能力的在入侵計算機系統(tǒng)時會自動進行攻擊,這樣不僅會損失重要的系統(tǒng)信息,也會對計算機造成損害甚至無法開機。安全漏洞可以根據(jù)性質(zhì)將其分為兩類:安全性漏洞和功能性漏洞。安全性漏洞是指一般情況下不會對計算機軟件的正常運行造成影響,但是漏洞一旦被利用發(fā)起攻擊就會造成計算機軟件運行發(fā)生錯誤,從而對計算機軟件的正常運行造成嚴重的影響。功能性漏洞是指會對計算機的正常運行造成影響的計算機軟件的漏洞,例如運行流程發(fā)生錯誤,運行結(jié)果發(fā)生錯誤。
2. 2 計算機軟件中存在的漏洞的主要特點
2. 2. 1 由人為素質(zhì)造成
計算機軟件的安全漏洞很多都是在研制和開發(fā)過程中因為設(shè)計人員的疏忽大意造成的。比如常見的編程的邏輯錯誤,計算機軟件在編程過程中,邏輯錯誤是一個比較普遍的問題,開發(fā)人員的一個小失誤很可能就會造成安全漏洞。
2. 2. 2 比數(shù)值計算邏輯錯誤
在處理計算機軟件數(shù)據(jù)時,最常發(fā)生的就是比數(shù)值計算的邏輯錯誤,一般會發(fā)生在過小或者過大等不合理的模塊,中等程度的模塊會發(fā)生錯誤的概率是比較小的。
2. 2. 3 長時間存在的安全漏洞
計算機軟件一旦出現(xiàn)安全漏洞,就會使得病毒和侵入計算機系統(tǒng),嚴重影響計算機的安全,而在計算機軟件系統(tǒng)當中,一個舊的安全漏洞被修復的同時,可能還會產(chǎn)生新的安全漏洞,總而言之,安全漏洞是長時間存在于計算機軟件系統(tǒng)當中的。因此,對安全漏洞進行有效地監(jiān)測和預防,及時對安全漏洞進行修復,能夠有效地保證計算機信息系統(tǒng)的安全性和穩(wěn)定性。
2. 2. 4 與系統(tǒng)環(huán)境密切相關(guān)
在計算機軟件當中,安全漏洞的發(fā)生與系統(tǒng)環(huán)境密切相關(guān),運行系統(tǒng)的不同也會對安全漏洞產(chǎn)生影響,此外軟件設(shè)備和版本的差別也會使得出現(xiàn)的安全漏洞的類型有所區(qū)別。
3 常用的安全漏洞檢測技術(shù)
3. 1 靜態(tài)檢測技術(shù)
靜態(tài)分析檢測技術(shù)是最初的計算機軟件安全漏洞靜態(tài)監(jiān)測技術(shù),這種檢測方法偏向于表面,近年來,隨著計算機技術(shù)的創(chuàng)新與發(fā)展,靜態(tài)監(jiān)測逐漸演變?yōu)閮煞N檢測方法: 即靜態(tài)分析和程序檢驗。靜態(tài)監(jiān)測指的是在檢測計算機軟件系統(tǒng)程序過程中進行源代碼的掃描,先直接分析被檢測的計算機軟件系統(tǒng)的程序本身的特點,再全面分析源代碼的語法和語義,這樣就可以檢測出計算機存在的安全漏洞。程序監(jiān)測是指計算機軟件系統(tǒng)內(nèi)抽象化的程序源代碼,檢測其是否符合計算機所需要完成的工作要求,尤其是安全要求,然后判斷并檢驗計算機軟件系統(tǒng)是否存在安全漏洞。
就計算機軟件安全漏洞檢測技術(shù)中的靜態(tài)監(jiān)測技術(shù)而言,計算機軟件系統(tǒng)內(nèi)部的特點會更受關(guān)注,安全漏洞本身特點的檢測和靜態(tài)方法的特點的監(jiān)測之間密切相關(guān)。我們可以根據(jù)不同的方法劃分漏洞的種類,根據(jù)最常用的方法,可以將漏洞劃分為很多小的部分,而一般的檢測方法也只能處理比較分散的漏洞。因此,從漏洞的種類下手尋找共同點是比較困難的。所以,在進行檢測時,可以對比性地將漏洞分為內(nèi)存性的漏洞和安全性的漏洞。內(nèi)存性的漏洞比較關(guān)注類別和自身的數(shù)據(jù)是否更具有準確性; 而安全性的漏洞則更關(guān)注數(shù)據(jù)流是否存在錯誤以及誤差的大小等方面,這種情況往往是由于內(nèi)存的形態(tài)存在錯誤而形成的。因此,對于這種漏洞而言,在進行靜態(tài)檢測時,最有效的方法就是將模型建立在漏洞的儲存空間內(nèi)。此外,在解讀和處理漏洞時也要根據(jù)靜態(tài)檢測技術(shù)的不同特點對其進行區(qū)分,因此,個別技術(shù)只能檢測特定的漏洞,而要處理兩方面的漏洞還要借助其他的方法。
3. 1. 1 靜態(tài)分析
靜態(tài)分析主要是直接、全面地計算機軟件系統(tǒng)中的程序的源代碼進行掃描,對程序代碼中的語法和關(guān)鍵詞、句進行提煉,根據(jù)解讀的具體含義對程序的行為進行分析,之后再根據(jù)事先設(shè)置的漏洞的特點結(jié)合計算機軟件系統(tǒng)自身的安全標準進行檢測,對系統(tǒng)整體進行判斷和處理。在進行檢測的過程中,有以下幾點需要特別注意: 第一,分析語法和關(guān)鍵詞、句,這也是最早的靜態(tài)分析的方法。但是,僅僅對語法和詞句進行分析是通過檢查語法和計算機軟件系統(tǒng)中的程序分為語句片段來實現(xiàn)的,之后再將一個個語句片段比標準的“疑問數(shù)據(jù)庫”,自動對存在的漏洞和問題進行判定和評估。這樣的情況下檢測出的有效漏洞的數(shù)量十分有限,而且只能檢測出“疑問數(shù)據(jù)庫”中已知的漏洞,而不能檢測出未知的漏洞。第二,在進行檢測時要嚴格遵循相關(guān)的標準條件。一般而言,安全標準是用來描述計算機軟件系統(tǒng)中的程序運行的基本情況的,然而,程序本身也是一種標準化的編程,即我們研究的漏洞模式也是一般的安全標準。在進行檢測時,要嚴格依照程序應(yīng)用的規(guī)則進行,結(jié)合相應(yīng)的語法模式描述這些所謂的標準,再利用規(guī)則處理器接收這些標準化的語法,處理器在進行轉(zhuǎn)變后會自動接收到內(nèi)部表述的程序,最后在系統(tǒng)運行的過程中進行最終的整體檢測。
相較于動態(tài)分析檢測技術(shù)而言,靜態(tài)分析檢測技術(shù)在進行檢測時,計算機處于停止運行的狀態(tài),操作更加方便和快捷,雖然能夠?qū)τ嬎銠C軟件系統(tǒng)的相關(guān)程序的狀況最初最真實的反饋,但是不能確定這些程序本身以及運行過程中的重要屬性。一般而言,靜態(tài)分析檢測技術(shù)可以分為以下幾種: 詞法檢測、推斷檢測和評注計算機軟件程序等三種。詞法檢測在執(zhí)行時要先分析和識別計算機軟件接口的預言,定義相應(yīng)的語法,再生成并檢測形成的語法例子,這個過程主要的工作是分析C 語言函數(shù)和程序中的源代碼是否有危險性,也是我們所說的最基本也最原始的靜態(tài)分析檢測技術(shù)。推斷檢測是指自動對程序中存在的函數(shù)、變量等進行分析,再結(jié)合他們規(guī)范化的類型和方式進行分析來判斷是否存在安全漏洞的方法。評注計算機軟件程序是指利用“tainted”標記計算機軟件的外部數(shù)據(jù),技術(shù)人員再根據(jù)排查和分析的結(jié)果進行評注。
3. 1. 2 程序檢驗
程序檢測是根據(jù)抽象化的計算機軟件系統(tǒng)來建立一個具體形式的程序或者模型,再結(jié)合形式化和正確性的檢驗方式來檢測計算機軟件的安全漏洞問題。在進行程序檢驗時,主要是通過建立模型來進行檢測,具體是指計算機軟件程序在有限狀態(tài)下建立一個合適的模型,建立的模型往往是抽象化的片段或者執(zhí)行點,再和計算機軟件本身的特點進行對比和驗證。在檢測時建立合適的模型也會起到檢測的作用,建立的模型也會和軟件的用途相關(guān),因此,一個模型也可以運用到許多相似的軟件當中來檢測安全漏洞。一般而言,模型檢驗有兩種檢驗方式,分別是模型自動轉(zhuǎn)化法和符號化檢驗法。模型自動轉(zhuǎn)化法是指將檢測軟件程序進一步轉(zhuǎn)化成等價的自動檢測機,兩個自動機相互結(jié)合可以實現(xiàn)替換和補充的作用,從而達到新的自動機的效果,同時通過軟件系統(tǒng)轉(zhuǎn)變成能夠識別的語言模式。符號化檢驗是指通過公式描述的形式將抽象化模型以語法樹的形式表達出來,根據(jù)公式來判斷是否符合檢驗的要求。模型檢驗應(yīng)該先列舉出可能會發(fā)生的各種狀況,結(jié)合軟件系統(tǒng)本身的復雜性對所有的程序都創(chuàng)建不同形式的模型,這也是一項規(guī)模龐大的任務(wù)。因此,在實際操作中,可能會選擇一部分程序和相關(guān)屬性來建立抽象的模型。但是,近年來,隨著模型檢測技術(shù)的改革和創(chuàng)新,現(xiàn)在主要是運用內(nèi)存來建立模型的方式檢驗往常的時序漏洞,在結(jié)合定理和證明的形式來檢測安全漏洞。與模型檢驗相比,這種方式更加嚴密,具體的檢驗過程是對程序進行多重判定,尤其是判定抽象化的公式的真假性,當然,公式本身的形式也會決定判斷的方式。例如,不等式的合取作為一個關(guān)鍵因素就是一個典型的例子,先根據(jù)合取式制作圖表,在圖中要真實地反映每個提到的條件,再利用公式合并各個條件。同時,對其中的不等式進行檢測,等式如果不成立的話,也就無法滿足合取式。在程序檢驗過程中,可以通過實踐來證明模式檢驗是否可靠以及是否具有實用性。軟件系統(tǒng)的種類業(yè)余時序性密切相關(guān),證明定理也是一項比較復雜的任務(wù),因此,這種方法并沒有廣泛地應(yīng)用于實際操作當中。
對于計算機軟件而言,靜態(tài)檢測技術(shù)只能檢測出當前存在的安全漏洞的種類,而無法判斷那些未知的漏洞。由于靜態(tài)檢測空間、精確度和時間等因素限制了其性能的改進,在一定程度上降低了靜態(tài)檢測的質(zhì)量,因此,必須在后期加大資金投入。
3. 2 動態(tài)分析檢測技術(shù)
3. 2. 1 非執(zhí)行棧
近幾年來,計算機軟件系統(tǒng)常常會發(fā)生被棧攻擊的事件,主要是因為軟件操作系統(tǒng)中的棧本身的讀寫能力不足、執(zhí)行力不夠的問題。棧之中包含了數(shù)組變量等內(nèi)部變量,因此,個別不懷好意的人員能夠在棧中隨意篡改一些重要的代碼,再利用特殊的方式執(zhí)行代碼。而只有將棧轉(zhuǎn)變?yōu)椴荒軌螂S意進行代碼執(zhí)行的模式才能有效地防止棧被攻擊和侵略。這樣,軟件系統(tǒng)無法執(zhí)行攻擊軟件的人員隨意篡改寫在棧上的代碼,從而降低了計算機軟件被侵入的機率,減少了安全漏洞的發(fā)生率。實現(xiàn)非執(zhí)行棧的具體過程是通過修改計算機操作系統(tǒng)的內(nèi)核,將棧的頁標標記為不可執(zhí)行,借助棧溢出將程序跳轉(zhuǎn)想攻擊的代碼,因為執(zhí)行代碼是位于堆生而非正在執(zhí)行的棧上,因此非執(zhí)行棧并不具有完整性,存在一定的局限性,當棧中出現(xiàn)攻擊代碼時檢測就無法發(fā)揮效用。
3. 2. 2 安全性的共享庫
很多計算機軟件會在無意中是用來一些不安全的共享庫從而導致了安全漏洞,在一定程度上,安全的共享庫可以避免攻擊人員的侵入行為。安全共享庫是指運用動態(tài)鏈接攔截非安全性的函數(shù)應(yīng)用程序的實際運行,檢測其操作的過程。與此同時,安全共享庫也會評估內(nèi)存的上限來防止內(nèi)存中出現(xiàn)惡意破壞的數(shù)據(jù),保證計算機軟件系統(tǒng)的安全性,windows 的操作系統(tǒng)一般會運用這種方式。雖然安全共享庫不會修改計算機的內(nèi)核,兼容性較好,但是其局限性也是十分明顯的,即安全共享庫檢測不到本地變量是否存在安全漏洞,當代碼數(shù)據(jù)溢出受到攻擊時也無法起到很好的防護作用,也無法保護標準化的函數(shù)庫。
3. 2. 3 沙箱
沙箱是指限定一個程序的訪問量來防止惡意的入侵。例如,對于計算機軟件而言,如果C 語言中含有一類調(diào)動函數(shù),但是軟件在運行過程中又出現(xiàn)了相似但不同的調(diào)動函數(shù),就說明有漏洞在攻擊計算機軟件。而使用沙箱就會限定被攻擊前的軟件,保證其不會受到惡意軟件的影響。
3. 2. 4 映射內(nèi)存
個別惡意攻擊的人員可能常常利用以“NULL”結(jié)尾的字符串來覆蓋內(nèi)存,利用內(nèi)存映射技術(shù)可以使得攻擊人員難以實現(xiàn)把復雜的內(nèi)存覆蓋字符串轉(zhuǎn)變?yōu)楹唵蔚膬?nèi)存操作。就這個角度而言,隨機地將代碼頁映射到各類內(nèi)存地址上也可以在一定程度上降低隨意篡改頁面的可能性。
3. 2. 5 非執(zhí)行堆和數(shù)據(jù)
在檢測非執(zhí)行堆和數(shù)據(jù)時,需要大量修改計算機內(nèi)核的數(shù)據(jù),同時將數(shù)據(jù)段的代碼和堆的動態(tài)聲場全部進行修改才可以實現(xiàn),在此過程中可能會出現(xiàn)不兼容的情況發(fā)生。一般而言,在進行非執(zhí)行堆檢測時往往需要借助非執(zhí)行棧的配合使用
4 計算機軟件中安全漏洞檢測技術(shù)的具體應(yīng)用
4. 1 檢測并避免出現(xiàn)競爭性的安全漏洞
很多安全漏洞往往是因為競爭條件的存在而產(chǎn)生的,解決的辦法就是將競爭性的編碼進行原子化實現(xiàn)操作。編碼作為最小的執(zhí)行單位不會受到正在運行的軟件程序的惡意干擾,將編碼進行原子化就是通過鎖定編碼的方式再改變特定狀態(tài)下的程序間接性地調(diào)動各個軟件系統(tǒng),最后描述運行的文件或者句柄來檢測TOCTOU 等問題來預防安全漏洞的發(fā)生。
4. 2 檢測并避免緩沖區(qū)出現(xiàn)安全漏洞
檢測并避免緩沖區(qū)出現(xiàn)安全漏洞就是通過判斷和分析計算機軟件程序中不安全的函數(shù)來避免緩沖區(qū)出現(xiàn)安全漏洞,例如不安全的strcat 版本可以全部替換為安全的strncat 版本。
4. 3 檢測并避免格式化字符串的安全漏洞出現(xiàn)
格式化字符串的出現(xiàn)很容易造成安全漏洞的發(fā)生,唯一的解決措施就是從根本上進行預防,在數(shù)據(jù)代碼中直接使用格式化的常量,防止惡意攻擊人員可能會創(chuàng)建格式化字符串的機會。一般而言,格式化字符串往往會出現(xiàn)在參數(shù)不確定的個數(shù)函數(shù)當中。因此,在運用這種函數(shù)時,應(yīng)該控制每個參數(shù)的個數(shù)、平衡參數(shù)的性能。此外,在進行輸出數(shù)據(jù)時,運用Windows 操作系統(tǒng)下的窗口或者運用串口輸入系統(tǒng)數(shù)據(jù)可以預防格式化的安全漏洞的危害。
4. 4 檢測并避免出現(xiàn)的隨機安全漏洞
在檢查和預防隨機出現(xiàn)的安全漏洞時,使用的隨機發(fā)生設(shè)備一定要保證良好的性能,因此在選擇隨機發(fā)生設(shè)備時一定要慎重考慮。為了確保隨機數(shù)流的安全性,隨機發(fā)生設(shè)備需要自身設(shè)置密碼算法,這樣在軟件遭到攻擊時,就可以根據(jù)掌握的算法的整體細節(jié)來獲得完整的數(shù)據(jù)流,提高隨機數(shù)據(jù)在遭遇入侵時運行的穩(wěn)定性和安全性。
5 結(jié)語
隨著社會的進步和科學技術(shù)的發(fā)展,計算機軟件在設(shè)計和開發(fā)時也無法避免地會出現(xiàn)安全漏洞的問題,因此,為了保證計算機軟件的安全運行,安全漏洞檢測技術(shù)是十分重要的。在不斷的發(fā)展和創(chuàng)新中,計算機軟件安全漏洞檢測技術(shù)也需要與時俱進,通過改善靜態(tài)檢測和動態(tài)檢測技術(shù)來預防安全漏洞的發(fā)生。
【簡要分析計算機軟件中安全漏洞檢測技術(shù)及其應(yīng)用論文】相關(guān)文章:
計算機軟件安全漏洞檢測技術(shù)的應(yīng)用論文07-02
安全漏洞檢測技術(shù)在計算機軟件中的合理應(yīng)用論文07-04
簡要分析項目教學法在計算機軟件教學中的應(yīng)用論文07-04
計算機軟件安全檢測技術(shù)分析論文07-03