厚瑩艷
關(guān)鍵詞 計算機軟件 安全漏洞 動態(tài)分析 靜態(tài)分析
1概述
1.1計算機軟件安全漏洞的定義
在開發(fā)計算機軟件的過程中,安全是最大的前提。計算機軟件的安全性表現(xiàn)為保密性、完整性以及可用性,缺少這三個元素中的任意元素都是計算機軟件漏洞產(chǎn)生的主要原因[1] 。訪問控制、狀態(tài)定義以及概念模糊是三種常見的計算機軟件安全漏洞定義方式。訪問控制主要表現(xiàn)在訪問軟件時控制證據(jù)和計算機發(fā)生沖突;狀態(tài)漏洞主要受計算機系統(tǒng)的影響,包含授權(quán)和非授權(quán)兩種狀態(tài);模糊概念的定義體現(xiàn)在軟硬件設(shè)施以及技術(shù)程序等方面的不足。事實上,無論何種漏洞造成的影響都不可消除,只有對其進行檢測,才能及時發(fā)現(xiàn)問題,避免產(chǎn)生風險。
1.2計算機軟件安全漏洞的特點
1.2.1原發(fā)性
計算機安全漏洞屬于操作系統(tǒng)的邏輯錯誤,錯誤一般存在于系統(tǒng)編寫過程中且有著不易被發(fā)現(xiàn)和不可避免的特點[2] 。在研發(fā)操作系統(tǒng)的過程中,許多漏洞是由于設(shè)計人員的疏忽大意而出現(xiàn),盡管看起來是一個小失誤,但這些漏洞為眾多網(wǎng)絡(luò)黑客提供了可乘之機,他們會編寫相關(guān)異常程序,抓住軟件安全漏洞進而實現(xiàn)病毒植入。一般而言,計算機軟件安全漏洞具備原發(fā)性的特征,即其會隨著軟件的使用而被發(fā)現(xiàn)。而病毒也具備一定的潛伏期,即其會隨著漏洞的顯現(xiàn)而逐漸被發(fā)現(xiàn)。盡管大多數(shù)用戶會通過設(shè)置防火墻攔截病毒或者通過安裝殺毒軟件查殺病毒,但這都不能從根本上阻止病毒的入侵[3] 。
1.2.2延伸性
計算機軟件安全漏洞的延伸性主要體現(xiàn)在日積月累的過程中,因為漏洞是長期存在的,隨著計算機軟件應(yīng)用時間的延長,漏洞也會越來越多。如今,計算機軟件在運行時一旦出現(xiàn)漏洞,大多數(shù)用戶會通過打補丁的方式來處理漏洞。但在舊的漏洞被處理的過程中,也會產(chǎn)生新的漏洞,盡管可以采用系統(tǒng)更新以及升級來實現(xiàn)軟件的優(yōu)化進行漏洞修復(fù),但系統(tǒng)在運行的過程中依舊會出現(xiàn)不同的邏輯錯誤[4] 。所以,這是一個循環(huán)延伸的過程,隨著軟件系統(tǒng)的升級漏洞也在不斷升級,甚至會產(chǎn)生更新的安全漏洞,為此切實避免安全漏洞出現(xiàn)延伸情況,還需從根本下手。
1.2.3差異性
計算機軟件種類繁多,質(zhì)量參差不齊,應(yīng)用領(lǐng)域存在差異。而計算機軟件在運行的過程中,系統(tǒng)環(huán)境的差異與安全漏洞的出現(xiàn)有密切聯(lián)系。如果程序員在程序編寫時未能引起足夠的重視,對內(nèi)部程序不夠了解,可能會在編寫程序時假設(shè)一種環(huán)境來實現(xiàn)模擬運行,可一旦該假設(shè)得不到滿足,就會產(chǎn)生相應(yīng)沖突,出現(xiàn)安全漏洞。比如,軟件設(shè)備和系統(tǒng)版本之間的差別會在某種程度上限制軟件的運行和操作,因而系統(tǒng)在運行的過程中隨著沖突的產(chǎn)生而出現(xiàn)安全漏洞,這種差異性也是不可避免的[5] 。
2計算機軟件安全漏洞技術(shù)分析
計算機軟件安全漏洞技術(shù)包含靜態(tài)檢測技術(shù)、動態(tài)監(jiān)測技術(shù)、沙箱檢測技術(shù)和內(nèi)存映射技術(shù)( 見圖1)。
2.1靜態(tài)檢測技術(shù)
靜態(tài)檢測一般由程序分析完成,即通過對程序的二進制代碼以及源代碼進行掃描分析,使用驗證技術(shù)來檢驗軟件程序是否符合實際需要。對計算機軟件的安全漏洞進行靜態(tài)分析,可以實現(xiàn)對不同監(jiān)控環(huán)境的分別檢測,能夠大幅減少漏洞檢測時間,準確發(fā)現(xiàn)源代碼的泄漏問題。但計算機軟件安全漏洞靜態(tài)分析流程(圖2)比較復(fù)雜,需要精準計算且在檢測的過程當中只能對已知漏洞進行檢測,對未知漏洞難以實現(xiàn)有效描述[6] 。
2.1.1靜態(tài)分析
靜態(tài)分析圍繞軟件程序的源代碼進行掃描,可以提煉語法、關(guān)鍵詞以及關(guān)鍵句,并根據(jù)具體含義進行具體分析。為了檢驗出疑問數(shù)據(jù)庫中的已知漏洞,在檢查時需要按照標準并結(jié)合語法模型加以說明,即通過規(guī)則處理器接收相關(guān)消息,并將接收方式轉(zhuǎn)變?yōu)樽詣咏邮?。在計算機停止運行的狀態(tài)下,可以進行靜態(tài)分析,優(yōu)點是操作方便、反饋真實。
2.1.2程序驗證
以計算機系統(tǒng)編程或者模塊構(gòu)建來對程序進行驗證,采用了形式化和正確性檢測方法的組合完成漏洞檢驗[7] 。模型檢驗的方式大致分為自動轉(zhuǎn)換法和符號化檢驗法。其中,自動轉(zhuǎn)換法反映的是從一個軟件程序向等價于自動檢測機器轉(zhuǎn)化的過程,而符號化檢驗的基礎(chǔ)就是語言公式的形式表達,并通過語言公式的形式判定結(jié)論,以此滿足檢驗要求。
2.1.3定理證明
通過程序判定來實現(xiàn)對系統(tǒng)代碼的分析和比較,需要以公式和曲式構(gòu)造圖為參考,且圖中的每個條件對應(yīng)相應(yīng)節(jié)點。整個定理證明的過程比較復(fù)雜,因為其和曲式構(gòu)造圖的每一個等式都有不同的對應(yīng)點,如果等式不成立,那么該軟件程序難以滿足曲式構(gòu)造圖的要求。
2.2動態(tài)檢測技術(shù)
動態(tài)檢測技術(shù)可以對程序運行時的變量參數(shù)以及資源空間進行監(jiān)視跟蹤,一旦在跟蹤的過程中發(fā)現(xiàn)程序運行異常,進而確定漏洞存在。不過,在修復(fù)漏洞的過程中,可能會產(chǎn)生新的安全隱患,再次對系統(tǒng)構(gòu)成威脅,因此動態(tài)檢測要在軟件運行的過程中實時占用相應(yīng)的內(nèi)存。
2.3沙箱檢測技術(shù)
沙箱檢測技術(shù)通過訪問資源的限制來限定惡意攻擊的來源或者鏈接,從而預(yù)防攻擊行為。而且在應(yīng)用沙箱檢測技術(shù)的過程中,不需要改變操作系統(tǒng)的內(nèi)核和應(yīng)用程序,只需要預(yù)設(shè)針對性的鏈接訪問,從而創(chuàng)建潛在的隔離環(huán)境[8] 。
2.4內(nèi)存映射技術(shù)
內(nèi)存映射技術(shù)可以使用NULL 結(jié)尾符字串覆蓋內(nèi)存,并給攻擊者造成障礙使之無法使用NULL 末尾字符串轉(zhuǎn)換低端的內(nèi)存區(qū)域,或者只能將代碼頁映射在隨機位置中。內(nèi)存映射技術(shù)需要經(jīng)常對操作系統(tǒng)進行修改,可以檢查錯誤和防止地址跳轉(zhuǎn),但對新的代碼攻擊失效。
3計算機軟件中安全漏洞的修復(fù)措施
(1)利用第三方軟件定期升級系統(tǒng)
為了修復(fù)計算機系統(tǒng)漏洞,官方網(wǎng)站會及時發(fā)布相應(yīng)的補丁程序。同時,我們也可以通過第三方軟件,如360 安全衛(wèi)士、金山殺毒軟件等對系統(tǒng)進行掃描并實現(xiàn)補丁程序的自動安裝。在日常使用過程中,無論在程序下載還是收發(fā)軟件時都應(yīng)當盡量避免錯誤程序植入軟件,因此需要加強檢測或者進行系統(tǒng)防火墻設(shè)置,防火墻能夠限制外界用戶對計算機進行不安全的訪問和管理,同時阻止不明黑客的入侵以及時避免計算機開放性帶來的影響[9] 。
(2)針對設(shè)計缺陷,實現(xiàn)安全保障
作為軟件運行中最小的執(zhí)行單位,編碼可以通過原子化鎖定方式預(yù)防漏洞。在指定的狀態(tài)下,差額式可以調(diào)動各個軟件的子系統(tǒng),或者利用已運行文件和句柄描述的方式描述檢測TOCTOU,從而阻止安全漏洞[10] 。而針對緩沖區(qū)安全漏洞,我們不僅可以通過對危險函數(shù)的檢查判斷來分析不安全函數(shù)來源,也可以選用安全版本替代漏洞,如strcat 版本可以全部替換為strncat 版本。當然,利用函數(shù)中的參數(shù)的個數(shù)以及控制平衡參數(shù)性能,也可以實現(xiàn)安全保障。
(3)提高安全使用意識,降低計算機風險
由于計算機軟件漏洞具備原發(fā)性,所以在使用計算機的過程中無法避免出現(xiàn)漏洞。因此,我們只能夠保護系統(tǒng)來降低漏洞帶來的損失,在此過程中應(yīng)該注意提高安全意識,加強日常使用維護,從而減小遭受攻擊的可能性。
4結(jié)語