安全漏洞

安全漏洞

硬件軟件的缺陷
漏洞是在硬件、軟件、協議的具體實現或系統安全策略上存在的缺陷,從而可以使攻擊者能夠在未授權的情況下訪問或破壞系統。安全漏洞是指限制的計算機、組件、應用程序或其他聯機資源的無意中留下的不受保護的入口點。[1]
    中文名:安全漏洞 外文名:security hole 适用領域: 所屬學科: 特性:會影響到很大範圍的軟硬件設備 産生原因:黑客利益的驅使等

定義

安全漏洞是指受限制的計算機、組件、應用程序或其他聯機資源的無意中留下的不受保護的入口點。漏洞是硬件軟件或使用策略上的缺陷,他們會使計算機遭受病毒和黑客攻擊。

特性

具體舉例來說,比如在Intel Pentium芯片中存在的邏輯錯誤,在Sendmail早期版本中的編程錯誤,在NFS協議中認證方式上的弱點,在Unix系統管理員設置匿名Ftp服務時配置不當的問題都可能被攻擊者使用,威脅到系統的安全。因而這些都可以認為是系統中存在的安全漏洞。

漏洞與具體系統環境之間的關系及其時間相關特性

漏洞會影響到很大範圍的軟硬件設備,包括作系統本身及其支撐軟件,網絡客戶和服務器軟件,網絡路由器和安全防火牆等。換而言之,在這些不同的軟硬件設備中都可能存在不同的安全漏洞問題。在不同種類的軟、硬件設備,同種設備的不同版本之間,由不同設備構成的不同系統之間,以及同種系統在不同的設置條件下,都會存在各自不同的安全漏洞問題。

漏洞問題是與時間緊密相關的。一個系統從發布的那一天起,随着用戶的深入使用,系統中存在的漏洞會被不斷暴露出來,這些早先被發現的漏洞也會不斷被系統供應商發布的補丁軟件修補,或在以後發布的新版系統中得以糾正。而在新版系統糾正了舊版本中具有漏洞的同時,也會引入一些新的漏洞和錯誤。因而随着時間的推移,舊的漏洞會不斷消失,新的漏洞會不斷出現。漏洞問題也會長期存在。

因而脫離具體的時間和具體的系統環境來讨論漏洞問題是毫無意義的。隻能針對目标系統的作系統版本、其上運行的軟件版本以及服務運行設置等實際環境來具體談論其中可能存在的漏洞及其可行的解決辦法。

同時應該看到,對漏洞問題的研究必須要跟蹤當前最新的計算機系統及其安全問題的最新發展動态。這一點如同對計算機病毒發展問題的研究相似。如果在工作中不能保持對新技術的跟蹤,就沒有談論系統安全漏洞問題的發言權,即使是以前所作的工作也會逐漸失去價值。

系統關系

漏洞與計算機系統的關系

漏洞問題與不同安全級别計算機系統之間的關系

計算機系統安全的分級标準一般都是依據“橘皮書”中的定義。橘皮書正式名稱是“受信任計算機系統評量基準”(Trusted Computer System Evaluation Criteria)。橘皮書中對可信任系統的定義是這樣的:一個由完整的硬件及軟件所組成的系統,在不違反訪問權限的情況下,它能同時服務于不限定個數的用戶,并處理從一般機密到最高機密等不同範圍的信息。

橘皮書将一個計算機系統可接受的信任程度加以分級,凡符合某些安全條件、基準規則的系統即可歸類為某種安全等級。橘皮書将計算機系統的安全性能由高而低劃分為A、B、C、D四大等級。其中:

D級——最低保護(Minimal Protection),凡沒有通過其他安全等級測試項目的系統,如Dos,Windows個人計算機系統。

C級——自主訪問控制(Discretionary Protection),安全特點在于系統的客體(如文件、目錄)可由系統主體(如系統管理員、用戶、應用程序)自主定義訪問權。例如:管理員可以決定系統中任意文件的權限。當前Unix、Linux、Windows NT等作系統都為此安全等級。

B級——強制訪問控制(Mandatory Protection),安全特點在于由系統強制對客體進行安全保護,在安全系統中,每個系統客體(如文件、目錄等資源)及主體(如系統管理員、用戶、應用程序)都有自己的安全标簽(Security Label),系統依據用戶的安全等級賦予其對各個對象的訪問權限。

A級——可驗證訪問控制(Verified Protection),而其特點在于等級的系統擁有正式的分析及數學式方法可完全證明系統的安全策略及安全規格的完整性與一緻性。'

可見,根據定義,系統的安全級别越高,理論上系統也越安全。可以說,系統安全級别是一種理論上的安全保證機制。是指在正常情況下,在某個系統根據理論得以正确實現時,系統應該可以達到的安全程度。

系統安全漏洞是指可以用來對系統安全造成危害,系統本身具有的,或設置上存在的缺陷。總之,漏洞是系統在具體實現中的錯誤。比如在建立安全機制中規劃考慮上的缺陷,作系統和其他軟件編程中的錯誤,以及在使用系統提供的安全機制時人為的配置錯誤等。

安全漏洞的出現,是因為人們在對安全機制理論的具體實現中發生了錯誤,是意外出現的非正常情況。而在一切由人類實現的系統中都會不同程度的存在實現和設置上的各種潛在錯誤。因而在所有系統中必定存在某些安全漏洞,無論這些漏洞是否已被發現,也無論系統的理論安全級别如何。

所以可以認為,在一定程度上,安全漏洞問題是獨立于作系統本身的理論安全級别而存在的。并不是說,系統所屬的安全級别越高,系統中存在的安全漏洞就越少。

可以這麼理解,當系統中存在的某些漏洞被入侵者利用,使入侵者得以繞過系統中的一部分安全機制并獲得對系統一定程度的訪問權限後,在安全性較高的系統當中,入侵者如果希望進一步獲得特權或對系統造成較大的破壞,必須要克服更大的障礙。

安全漏洞與系統攻擊的關系

安全漏洞與系統攻擊之間的關系

系統安全漏洞是在系統具體實現和具體使用中産生的錯誤,但并不是系統中存在的錯誤都是安全漏洞。隻有能威脅到系統安全的錯誤才是漏洞。許多錯誤在通常情況下并不會對系統安全造成危害,隻有被人在某些條件下故意使用時才會影響系統安全。

漏洞雖然可能最初就存在于系統當中,但一個漏洞并不是自己出現的,必須要有人發現。在實際使用中,用戶會發現系統中存在錯誤,而入侵者會有意利用其中的某些錯誤并使其成為威脅系統安全的工具,這時人們會認識到這個錯誤是一個系統安全漏洞。系統供應商會盡快發布針對這個漏洞的補丁程序,糾正這個錯誤。這就是系統安全漏洞從被發現到被糾正的一般過程。

系統攻擊者往往是安全漏洞的發現者和使用者,要對于一個系統進行攻擊,如果不能發現和使用系統中存在的安全漏洞是不可能成功的。對于安全級别較高的系統尤其如此。

系統安全漏洞與系統攻擊活動之間有緊密的關系。因而不該脫離系統攻擊活動來談論安全漏洞問題。了解常見的系統攻擊方法,對于有針對性的理解系統漏洞問題,以及找到相應的補救方法是十分必要的。

漏洞利用

如果一個缺陷不能被利用來幹“原本”不能幹的事(安全相關的),那麼就不能被稱為安全漏洞,所以安全漏洞必然和漏洞利用緊密聯系在一起。

漏洞利用的視角有:

數據視角:訪問本來不可訪問的數據,包括讀和寫。這一條通常是攻擊者的核心目的,而且可造成非常嚴重的災難(如銀行數據可被人寫)。

權限視角:主要為權限繞過或權限提升。通常權限提升都是為了獲得期望的數據操作能力。

可用性視角:獲得對系統某些服務的控制權限,這可能導緻某些重要服務被攻擊者停止而導緻拒絕服務攻擊。

認證繞過:通常利用認證系統的漏洞而不用受權就能進入系統。通常認證繞過都是為權限提升或直接的數據訪問服務的。

代碼執行角度:主要是讓程序将輸入的内容作為代碼來執行,從而獲得遠程系統的訪問權限或本地系統的更高權限。這個角度是SQL注入、内存指針遊戲類漏洞(緩沖區溢出、格式串、整形溢出等等)等的主要驅動。這個角度通常為繞過系統認證、權限提升、數據讀取作準備的。

發掘方法

首先必須清楚安全漏洞是軟件BUG的一個子集,一切軟件測試的手段都對安全漏洞發掘實用。現在”黑客“用的各種漏洞發掘手段裡有模式可循的有:

fuzz測試(黑盒測試),通過構造可能導緻程序出現問題的方式構造輸入數據進行自動測試。

動态跟蹤分析,就是記錄程序在不同條件下執行的全部和安全問題相關的操作(如文件操作),然後分析這些操作序列是否存在問題,這是競争條件類漏洞發現的主要途徑之一,其他的污點傳播跟蹤也屬于這類。

補丁比較,廠商的軟件出了問題通常都會在補丁中解決,通過對比補丁前後文件的源碼(或反彙編碼)就能了解到漏洞的具體細節。

以上手段中無論是用哪種都涉及到一個關鍵點:需要通過人工分析來找到全面的流程覆蓋路徑。分析手法多種多樣,有分析設計文檔、分析源碼、分析反彙編代碼、動态調試程序等。

等級評定

考察漏洞的危害性應緊密的和利用漏洞帶來的危害相關,并不是通常大家認識的所有緩沖區溢出漏洞都是高危漏洞。以遠程漏洞為例,比較好的劃分方法為:

可遠程獲取OS、應用程序版本信息。

開放了不必要或危險得服務,可遠程獲取系統敏感信息。

可遠程進行受限的文件、數據讀取。

可遠程進行重要或不受限文件、數據讀取。

可遠程進行受限文件、數據修改。

可遠程進行受限重要文件、數據修改。

可遠程進行不受限得重要文件、數據修改,或對普通服務進行拒絕服務攻擊。

可遠程以普通用戶身份執行命令或進行系統、網絡級的拒絕服務攻擊。

可遠程以管理用戶身份執行命令(受限、不太容易利用)。

可遠程以管理用戶身份執行命令(不受限、容易利用)。

相關詞條

相關搜索

其它詞條