安全漏洞

安全漏洞

漏洞是在硬體、軟體、協定的具體實現或系統安全策略上存在的缺陷,從而可以使攻擊者能夠在未授權的情況下訪問或破壞系統。是受限製的電腦、組件、應用程式或其他在線上資源的無意中留下的不受保護的入口點。

  • 中文名稱
    安全漏洞
  • 外文名稱
    security hole
  • 特    性
    會影響到很大範圍的軟硬體設備
  • 產生原因
    黑客利益的驅使等

基本簡介

安全漏洞(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),而其特點在于該等級的系統擁有正式的分析及數學式方法可完全證明該系統的安全策略及安全規格的完整性與一致性。 '

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

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

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

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

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

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

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

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

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

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

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

常見方法

常見攻擊方法與攻擊過程的簡單描述

系統攻擊是指某人非法使用或破壞某一信息系統中的資源,以及非授權使系統喪失部分或全部服務功能的行為。

通常可以把攻擊活動大致分為遠程攻擊和內部攻擊兩種。隨著網際網路絡的進步,其中的遠程攻擊技術得到很大發展,威脅也越來越大,而其中涉及的系統漏洞以及相關的知識也較多,因此有重要的研究價值。

尋找客戶端漏洞

目標:客戶端的漏洞?

客戶端易受攻擊:IE,Outlook,Firefox,MSN,Yahoo etc.

黑客利益的驅使:Botnet,Visa,CD-Key,DDOS etc.

發現漏洞較容易(More 0day?):較容易發現,新的領域

為什麽挖掘圖像格式中的漏洞?

Windows,Linux等作業系統支持多種圖像格式:Bmp, GIF, JPG, ANI, PNG etc.檔案格式眾多,代碼復雜易找到漏洞

Windows中很多圖像格式解析的實現方式與開原始碼及其相似,經常發現同一bug;(Why?)

黑客們並沒有在每種格式中發現漏洞,沒有足夠的"eyes"關註

從安全人員的角度:

格式眾多,演算法復雜容易出現漏洞

影響範圍極廣跨套用跨平台,例如:

Windows 平台上任何解析jpg 的套用,office,outlook,IE...GDIPLUS.dll

Windows 核心實現對Ani 的支持,通過ie 不需要使用者互動操作。誰會懷疑網頁上的指針檔案?

PNG Msn, libpng 很多開源軟體

隱蔽性嚴重威脅使用者安全

從黑客的角度:

如果利用圖像格式觸發的漏洞,會降低了受害者的警覺性,易利用社會工程學。蠕蟲傳播可能利用一些非常容易讓人警惕的檔案格式,但我們討論的是圖片格式jgp, png, ani...不容易讓人引起懷疑

多種攻擊媒介,利于黑客攻擊:通過網頁,郵件可以穿越防火牆的保護,IDS不易檢查,需要對各種格式,協定進行解析才能檢查出漏洞攻擊。

圖像的基本格式

流格式由很多段構成,段裏面又由標記,參數(漏洞點),資料段構成

還可能有段裏面再嵌套段(漏洞點)

Gif,Ani可能包含很多幀,重新整理率,幀的索引(漏洞點)

可能會有標記圖形模式的bit-map,可能會有邏輯上的錯誤png

JPG格式中的漏洞

先來一個實際的例子:

GDIPlus.DLL漏洞MS04-028 Nick DeBaggis

影響巨大,攻擊很多

漏洞產生原因:

JPEG格式中的注解段(COM)由0xFFFE開始(標記)+2位元組得注解段位元組數(參數) +注解(資料)構成。因為位元組數這個參數值包含了本身所佔的2位元組,所以GDIPLUS.dll在解析jpg格式檔案中的注解段時會把這個值減去2,如果這個值設定成0,1就會產生整數溢出。

JPG格式中的漏洞

是不是覺得很相似?

2000 Solar Designer 發現了Netscape 流覽器的JPEG 解析漏洞,與Nick DeBaggis 發現的漏洞原理是相同的。

另一個相似的例子

Stefan Esser發現的XBOX Dashboard local vulnerability,該漏洞存在于XBOX Dashboard對.wav格式和.xtf格式檔案的解析上,雖然說不是圖形格式但漏洞原理卻相同。

細節:同樣存在一個size參數這次是它本身的大小是4位元組,所以當size值為0-3時就會發生整數溢出。

疑問:為什麽有些人從偶blog轉文章就不寫出處呢 也算是我翻來搜去搞來的文章呀bY FIRef0x

疑問:為什麽會一再出現同類型的漏洞?

是否程式員們從概念上忽略了某些問題?

為什麽都是整數溢出漏洞?

此類漏洞的本質是什麽?

是否還有這種漏洞?

問題的本質

這些檔案格式是由很多"段"構成的資料流,而每個段由:標記,參數,資料等結構構成,在程式解析這些檔案格式的時候會依據"標記"來確認段,並讀勸參數" 進行一定的運算,再依據這些參數來處理隨後緊跟的"資料"。以上提到的幾個漏洞的產生原因就是在對參數進行運算的時候相信了檔案輸入的參數沒有進行確認而導致的。

思維擴展

不要相額度戶的輸入,同樣不要相信檔案的輸入;

包括標記,錯誤的標記也會導致問題

包括參數,詳細檢查輸入參數

包括資料,資料裏面可能還嵌套著另一個"段"

思維擴展的結果

Venustech AD-Lab:Windows LoadImage API Integer Buffer overflow

影響極為廣泛: bmp,cur,ico,ani格式的檔案都受影響。

描述:

WINDOWS的USER32庫的LoadImage系統API 存在著整數溢出觸發的緩沖區溢出漏洞,這個API允許載入一個bmp,cur,ico,ani格式的圖示來進行顯示,並根據圖片格式裏說明的大小加4來進行資料的拷貝,如果將圖片格式裏說明的大小設定為0xfffffffc-0xffffffff,則將觸發整數溢出導致堆緩沖區被覆蓋。攻擊者可以構造惡意的bmp,cur,ico,ani格式的檔案,嵌入到HTML頁面,郵件中,傳送給被攻擊者,成功利用該漏洞則可以獲得系統的許可權。

LoadImage API 整數溢出漏洞分析

代碼:

.text:77D56178 mov eax, [ebx+8] //Direct read our size here:P

.text:77D5617B mov [ebp+dwResSize], eax

.text:77D5617E jnz short loc_77D56184

.text:77D56180 add [ebp+dwResSize], 4 //add 4 int overflow...

.text:77D56184

.text:77D56184 loc_77D56184: ; CODE XREF: sub_77D5608F+EF_j

.text:77D56184 push [ebp+dwResSize] //allocate a wrong size

.text:77D56187 push 0

.text:77D56189 push dword_77D5F1A0

.text:77D5618F call ds:RtlAllocateHeap

總結:轉換思路後找到這個加4的漏洞,同樣的類型,信任"檔案"輸入。

思維擴展的結果

EEYE 2004:Windows ANI File Parsing Buffer Overflow

堆疊漏洞極易利用,攻擊方法隱蔽。

原理:

相信" 檔案" 輸入參數,沒做檢查直接用作memcpy 的參數。

PNG漏洞,不同的模式

邏輯問題1:

EEYE PNG (Portable Network Graphics) Deflate Heap Corruption Vulnerability

原因:對 Length 碼 #286 and #287沒有做正確的處理,導致解壓程式認為長度是0

do { *dest = *src; ++dest; ++src; } while (--len);

邏輯問題2:libPNG 1.2.5堆疊溢出

代碼:

if (!(png_ptr->mode & PNG_HAVE_PLTE)) {

/* Should be an error, but we can cope with it */

g_warning(png_ptr, "Missing PLTE before tRNS"); }

else if (length > (png_uint_32)png_ptr->num_palette) {

g_warning(png_ptr, "Incorrect tRNS chunk length");

g_crc_finish(png_ptr, length);

return;

}

分析:代碼編寫的邏輯錯誤,錯誤的使用了else if.

相似漏洞:MSN png 漏洞,Media player png 漏洞

邏輯問題的總結

非常容易出現在復雜的檔案格式處理中

容易出現在壓縮,解壓代碼中:需要處理很多長度,大小相關的參數。

這種漏洞不一定是緩沖區溢出,也可能是越界訪問等等

想象漏洞

發現漏洞有時候是一種想象的過程

例子1:

Venustech ADLab:Microsoft Windows Kernel ANI File Parsing Crash Vulnerability

介紹:ANI是WINDOWS 支持的動畫游標格式,在ANI是由多個普通的游標檔案組成一個動畫,其中ANI檔案的頭處會標記是幾個圖示frame,WINDOWS 的核心在顯示游標的時候並未對該值進行檢查,如果將這個數位設定為0,會導致受影響的WINDOWS系統計算出錯誤的游標的地址並加以訪問,觸發了核心的藍屏崩潰。不僅僅是套用使用ANI檔案時會觸發,隻要在EXPLORER下開啟ANI檔案存在的目錄就會觸發。攻擊者也可以傳送游標的檔案,引誘使用者訪問含有惡意游標顯示的頁面,以及傳送嵌入游標的HTML郵件,導致被攻擊者系統藍屏崩潰。

原理:在計算frame地址的時候失敗。

例子2:

Venustech ADLab:Microsoft Windows Kernel ANI File Parsing DOS Vulnerability

介紹:ANI是WINDOWS 2000支持的動畫游標格式,在ANI是由多個普通的游標件組成一個動畫,其中ANI檔案的頭處會標記每FRAME切換的頻率,該值越小切換的速度越快,WINDOWS 的核心在切換游標FRAME的時候並未對該值進行檢查,如果將這個數位設定為0,受影響的WINDOWS的核心會陷入核心的死鎖,不再回響任何使用者介面的操作。該漏洞觸發必須要在使用ANI檔案的套用中才能觸發,攻擊者引誘使用者訪問含有惡意游標顯示的頁面,以及傳送嵌入游標的HTML郵件,導致被攻擊者系統核心死瑣

原因:沒有考慮重新整理頻率是0的情況。

總結

下溢:Size參數小于自身所佔大小

上溢:Size加上一個正整數值產生上溢

直接作為參數輸入memcpy類函式

非法參數導致地址訪問越界

多種邏輯上的錯誤

充分發揮想象:重新整理率?

總結

安全提示:

檔案格式是攻擊者的另一種輸入渠道,同樣不要信任從檔案讀取的資料

解析檔案格式時應該對參數進行充分的檢查

同樣需要想象力,需要考慮到每種可能的情況

檢查方法

前期準備

建立安全模型

1、熟悉軟體功能、功能實現,配置等;

如:IIS的虛擬目錄、腳本對應;

2、根據功能,分析安全需求,建立安全模型;

IIS外掛,檔案類型識別,目錄正確識別;目錄限製;

外掛的特點;許可權不是在檔案對象上,需要自己識別檔案,所以需要識別出同一個檔案的所有檔案名稱;

3、根據安全需求,分析編程應註意的地方,重點檢查。

IIS要對"../"進行檢測,連線檔案的處理,識別出正確的目錄、檔案名稱;編程接口完全按接口實現;

代碼分析

1、通讀原代碼;

2、安全需求裏面重點需要檢測的地方;

3、搜尋容易有問題的函式調用,如strcpy、strcat、*printf、free、strncpy等;

4、常見一些編程問題;一些變數類型,如長度變數用int,註意一些函式非直接返回賦值問題等,一些邊界條件,記數從0開始還是從1開始。

5、分析緩沖區使用的代碼;

6、輸入輸出合法檢測;

7、編程接口調用;了解作業系統、基本檔案、進程調用等的特徵;

8、資料結構;

9、安全領域的最小原則;

二進分析

1、測試;

(1)、熟悉輸入輸出;

(2)、根據需要編寫測試程式;

(3)、輸入輸出各種特殊情況測試,特殊字元、長串;

(4)、安全需求需要檢測的一些條件測試;

2、反匯編分析;

(1)、閱讀理解反匯編代碼;

(2)、安全需求檢測的代碼分析;

(3)、調用接口代碼分析;

(4)、sub esp,xxx 代碼分析緩沖;

(5)、strcpy、strcat、*printf、free、strncpy等調用分析;

(6)、輸入輸出檢測;

3、跟蹤調試;

(1)、異常的攔截分析;

(2)、一些字元串的流向,讀寫斷點;

總結提高

1、分析總結各種漏洞、漏洞原因、編程問題,補丁修補方法,編程怎麽避免。

2、對漏洞歸納分類,全面考慮;

分類

使用者群體

大眾類軟體的漏洞。如Windows的漏洞、IE的漏洞等等。

專用軟體的漏洞。如Oracle漏洞、Apache漏洞等等。

資料角度

能讀按理不能讀的資料,包括記憶體中的資料、檔案中的資料、使用者輸入的資料、資料庫中的資料、網路上載輸的資料等等。

能把指定的內容寫入指定的地方(這個地方包括檔案、記憶體、資料庫等)

輸入的資料能被執行(包括按機器碼執行、按Shell代碼執行、按SQL代碼執行等等)

作用範圍

遠程漏洞,攻擊者可以利用並直接通過網路發起攻擊的漏洞。這類漏洞危害極大,攻擊者能隨心所欲的通過此漏洞操作他人的電腦。並且此類漏洞很容易導致蠕蟲攻擊,在Windows。

在地漏洞,攻擊者必須在本機擁有訪問許可權前提下才能發起攻擊的漏洞。比較典型的是在地許可權提升漏洞,這類漏洞在Unix系統中廣泛存在,能讓普通使用者獲得最高管理員許可權。

觸發條件上看可以分為:

主動觸發漏洞,攻擊者可以主動利用該漏洞進行攻擊,如直接訪問他人電腦。

被動觸發漏洞,必須要電腦的操作人員配合才能進行攻擊利用的漏洞。比如攻擊者給管理員發一封郵件,帶了一個特殊的jpg圖片檔案,如果管理員開啟圖片檔案就會導致看圖軟體的某個漏洞被觸發,從而系統被攻擊,但如果管理員不看這個圖片則不會受攻擊。

操作角度

檔案操作類型,主要為操作的目標檔案路徑可被控製(如通過參數、配置檔案、環境變數、符號連結燈),這樣就可能導致下面兩個問題:

寫入內容可被控製,從而可偽造檔案內容,導致許可權提升或直接修改重要資料(如修改存貸資料),這類漏洞有很多,如歷史上Oracle TNS LOG檔案可指定漏洞,可導致任何人可控製運行Oracle服務的電腦;

內容信息可被輸出,包含內容被列印到螢幕、記錄到可讀的日志檔案、產生可被使用者讀的core檔案等等,這類漏洞在歷史上Unix系統中的crontab子系統中出現過很多次,普通使用者能讀受保護的shadow檔案;

記憶體覆蓋,主要為記憶體單元可指定,寫入內容可指定,這樣就能執行攻擊者想執行的代碼(緩沖區溢出、格式串漏洞、PTrace漏洞、歷史上Windows2000的硬體調試暫存器使用者可寫漏洞)或直接修改記憶體中的機密資料。

邏輯錯誤,這類漏洞廣泛存在,但很少有範式,所以難以查覺,可細分為:

條件競爭漏洞(通常為設計問題,典型的有Ptrace漏洞、廣泛存在的檔案操作時序競爭)

策略錯誤,通常為設計問題,如歷史上FreeBSD的Smart IO漏洞。

演算法問題(通常為設計問題或代碼實現問題),如歷史上微軟的Windows 95/98的共享口令可輕易獲取漏洞。

設計的不完善,如TCP/IP協定中的3步握手導致了SYN FLOOD拒絕服務攻擊

實現中的錯誤(通常為設計沒有問題,但編碼人員出現了邏輯錯誤,如歷史上博彩系統的偽隨機演算法實現問題)

外部命令執行問題,典型的有外部命令可被控製(通過PATH變數,輸入中的SHELL特殊字元等等)和SQL註入問題。

時序

已發現很久的漏洞:廠商已經發布補丁或修補方法,很多人都已經知道。這類漏洞通常很多人已經進行了修補,巨觀上看危害比較小。

剛發現的漏洞:廠商剛發補丁或修補方法,知道的人還不多。相對于上一種漏洞其危害性較大,如果此時出現了蠕蟲或傻瓜化的利用程式,那麽會導致大批系統受到攻擊。

0day:還沒有公開的漏洞,在私下交易中的。這類漏洞通常對大眾不會有什麽影響,但會導致攻擊者瞄準的目標受到精確攻擊,危害也是非常之大。

漏洞利用

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

漏洞利用的視角有:

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

許可權視角:主要為許可權繞過或許可權提升。通常許可權提升都是為了獲得期望的資料操作能力。

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

識別繞過:通常利用識別系統的漏洞而不用受權就能進入系統。通常識別繞過都是為許可權提升或直接的資料訪問服務的。

代碼執行角度:主要是讓程式將輸入的內容作為代碼來執行,從而獲得遠程系統的訪問許可權或在地系統的更高許可權。這個角度是SQL註入、記憶體指針遊戲類漏洞(緩沖區溢出、格式串、整形溢出等等)等的主要驅動。這個角度通常為繞過系統識別、許可權提升、資料讀取作準備的。

發掘方法

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

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

源碼審計(白盒測試),現在有了一系列的工具都能協助發現程式中的安全BUG,最簡單的就是你手上最新版本的C語言編譯器。

IDA反匯編審計(灰盒測試),這和上面的源碼審計非常類似,唯一不同的是很多時候你能獲得軟體,但你無法拿到源碼來審計,但IDA是一個非常強大的反匯編平台,能讓你基于匯編碼(其實也是源碼的等價物)進行安全審計

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

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

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

等級評定

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

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

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

3 可遠程進行受限的檔案、資料讀取。

4 可遠程進行重要或不受限檔案、資料讀取。

5 可遠程進行受限檔案、資料修改

6 可遠程進行受限重要檔案、資料修改

7 可遠程進行不受限得重要檔案、資料修改,或對普通服務進行拒絕服務攻擊

8 可遠程以普通使用者身份執行命令或進行系統、網路級的拒絕服務攻擊

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

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

在地漏洞幾乎都是導致代碼執行,歸入上面的10分製可以為:

遠程主動觸發代碼執行(如IE的漏洞).

遠程被動觸發代碼執行(如Word漏洞/看圖軟體漏洞).

過程分析

一個防火牆隔離(隻允許運維部的人訪問)的網路裏運行一台Unix伺服器;作業系統中隻有root使用者和oracle使用者可登入,作業系統中運行了Apache(nobody許可權)、Oracle(oracle使用者許可權)等服務。

一個攻擊者的目的是修改Oracle資料庫中的帳單表的資料。

其可能的攻擊步驟為:

1.接入運維部的網路,獲得一個運維部的IP地址從而能通過防火牆訪問被保護的Unix伺服器。

2.利用Apache服務的某遠程緩沖區溢出漏洞直接獲得一個nobody許可權的shell訪問。

3.利用作業系統某suid程式的漏洞將自己的許可權提升到root許可權。

4.用Oracle的sysdba登入進入資料庫(在地登入不需要密碼)。

5.修改目標表的資料。

以上5個過程分析下來為:

第1步:識別繞過

第2步:遠程漏洞、代碼執行(機器碼)、識別繞過

第3步:許可權提升、識別繞過

第4步:識別繞過

第5步:資料寫

最新新聞

IE流覽器曝安全漏洞 黑客可竊取密碼

電腦安全研究者日前表示,微軟廣泛流行的IE流覽器存在漏洞,黑客可以通過竊取證書,從而進入Facebook、Twitter和其它網站。研究者將這種技術叫做"cookiejacking"。義大利獨立網際網路安全研究者羅薩裏奧·瓦羅塔(Rosario Valotta)說:"任何網站,任何Cookie,範圍之廣隻能想像。"黑客可以利用漏洞進入到流覽器儲存的資料中,也就是"Cookie",它儲存了登錄名和密碼。

一旦黑客竊取到Cookie,就可以進入到相同的網站,專家將這種技術叫"cookiejacking"。

漏洞在所有IE版本上都存在,包括最新的IE 9,也存在于所有Windows作業系統中。

要利用該漏洞,黑客必須先使受害者在PC顯示屏上拖放一個目標,然後才能黑使用者的電腦。聽起來這個任務比較難,但是瓦羅塔說他能相當容易做到。他建立了一個程式放在Facebook上,使用者來挑戰:讓一個美女裸體。

瓦羅塔說:"我在Facebook上發布遊戲,不到三天,超過80個Cookies就傳回我的伺服器。我隻有150個朋友。"

微軟表示,在真正的cookiejacking騙局中成功幾乎不可能。微軟新聞發言人傑瑞·布萊恩特(Jerry Bryant)說:"考慮到需要使用者互動,我們不認為這個問題有很高的風險。要受到可能的影響,使用者必須先訪問惡意網站,被說服去點擊和拖動網頁上的目標,黑客才能從網上攻擊使用者曾登錄的Cookie。"

相關詞條

相關搜尋

其它詞條