厚瑩艷


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