複製鏈接
請複製以下鏈接發送給好友

安全漏洞

鎖定
安全漏洞(security hole),指硬件軟件或使用策略上的缺陷,安全漏洞的存在會使計算機易遭受病毒和黑客攻擊。
中文名
安全漏洞
外文名
security hole
特    性
會影響到很大範圍的軟硬件設備
產生原因
黑客利益的驅使等

安全漏洞漏洞特性

安全漏洞 安全漏洞
漏洞是在硬件、軟件、協議的具體實現或系統安全策略上存在的缺陷,從而可以使攻擊者能夠在未授權的情況下訪問或破壞系統。具體舉例來説,比如在Intel Pentium芯片中存在的邏輯錯誤,在Sendmail早期版本中的編程錯誤,在NFS協議中認證方式上的弱點,在Unix系統管理員設置匿名Ftp服務時配置不當的問題都可能被攻擊者使用,威脅到系統的安全。因而這些都可以認為是系統中存在的安全漏洞
漏洞與具體系統環境之間的關係及其時間相關特性
漏洞會影響到很大範圍的軟硬件設備,包括作系統本身及其支撐軟件,網絡客户和服務器軟件網絡路由器和安全防火牆等。換而言之,在這些不同的軟硬件設備中都可能存在不同的安全漏洞問題。在不同種類的軟、硬件設備,同種設備的不同版本之間,由不同設備構成的不同系統之間,以及同種系統在不同的設置條件下,都會存在各自不同的安全漏洞問題。
漏洞問題是與時間緊密相關的。一個系統從發佈的那一天起,隨着用户的深入使用,系統中存在的漏洞會被不斷暴露出來,這些早先被發現的漏洞也會不斷被系統供應商發佈的補丁軟件修補,或在以後發佈的新版系統中得以糾正。而在新版系統糾正了舊版本中具有漏洞的同時,也會引入一些新的漏洞和錯誤。因而隨着時間的推移,舊的漏洞會不斷消失,新的漏洞會不斷出現。漏洞問題也會長期存在。
因而脱離具體的時間和具體的系統環境來討論漏洞問題是毫無意義的。只能針對目標系統的作系統版本、其上運行的軟件版本以及服務運行設置等實際環境來具體談論其中可能存在的漏洞及其可行的解決辦法。
同時應該看到,對漏洞問題的研究必須要跟蹤當前最新的計算機系統及其安全問題的最新發展動態。這一點如同對計算機病毒發展問題的研究相似。如果在工作中不能保持對新技術的跟蹤,就沒有談論系統安全漏洞問題的發言權,即使是以前所作的工作也會逐漸失去價值。

安全漏洞常見安全漏洞

代碼注入。包括SQL注入在內的廣義攻擊,它取決於插入代碼並由應用程序執行。
會話固定。這是一種會話攻擊,通過該漏洞攻擊者可以劫持一個有效的用户會話。會話固定攻擊可以在受害者的瀏覽器上修改一個已經建立好的會話,因此,在用户登錄前可以進行惡意攻擊。
路徑訪問,或者“目錄訪問”。該漏洞旨在訪問儲存在Web根文件外的文件或者目錄。
弱密碼,字符少、數字長度短以及缺少特殊符號。這種密碼相對容易破解。
硬編碼加密密鑰,提供一種虛假的安全感。一些人認為在存儲之前將硬編碼密碼分散可以有助於保護信息免受惡意用户攻擊。但是許多這種分散是可逆的過程。 [1] 

安全漏洞系統關係

漏洞與計算機系統的關係
漏洞問題與不同安全級別計算機系統之間的關係
計算機系統安全的分級標準一般都是依據“橘皮書”中的定義。橘皮書正式名稱是“受信任計算機系統評量基準”(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、編程接口調用;瞭解操作系統、基本文件、進程調用等的特性;
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步:數據寫

安全漏洞最危險漏洞

注入漏洞
在應用程序將不可信的數據發送給解釋器時,就有可能產生注入漏洞。這種漏洞很普遍,會影響到大量方案。最普遍的注入漏洞會影響到SQL、LDAP、XPath、XML解析器和程序參數。
其實,通過分析代碼是可以發現注入漏洞的,但是,如果已經將系統部署到了生產環境中了,在測試期間就很難發現這些漏洞。
利用劫持漏洞的網絡攻擊帶來的後果可能有:敏感數據被泄露、拒絕服務等。
攻擊者可以運行劫持攻擊,從而完全破壞目標系統,並獲得其控制權。
注入漏洞可以影響多種軟件,其影響依賴於有漏洞的應用程序的傳播範圍或傳播水平。注入漏洞可能帶來的一個典型影響就是Bash Bug漏洞。紅帽子的安全團隊在Linux 中的 Bash shell 中發現了一個危險的安全漏洞“Bash Bug”。對於用户的正常訪問,該漏洞允許攻擊者的代碼如同在外殼 中一樣被執行,這就為各種各樣的攻擊打開了方便之門。
這種類型的漏洞可能帶來大規模影響,例如,物聯網設備(例如,智能儀表,路由器,網絡攝像機等設備)就有可能遭受這種漏洞的威脅。
緩衝區溢出
如果應用程序試圖將超過緩衝區容量的數據存放在其中時,就產生了緩衝區溢出漏洞的條件。從外部寫入到緩衝區可以使攻擊者覆蓋鄰近內存塊的內容,從而導致數據遭到破壞,程序崩潰,甚至可以執行任何惡意代碼。
緩衝區溢出攻擊難以發現,但與注入攻擊相比,也更難以利用。攻擊者需要了解目標應用的內存管理,並且知道修改其內容運行攻擊的方法。
在典型的攻擊中,攻擊者將數據發送給一個應用程序,而後者是一個將數據存儲在小容量的堆棧緩衝區的程序,這會導致覆蓋調用堆棧上的信息,其中包括函數的返回指針。通過這種方法,在合法的功能完成之後,攻擊者就可以運行自己的惡意代碼,並且可以將控制交給包含攻擊者數據的漏洞利用代碼。
由於針對SCADA的攻擊日益增多,所以這種緩衝區溢出漏洞被利用的頻率也會越來越高。
敏感數據泄露
數據可以存儲在系統中,或在兩個實體(如服務器或瀏覽器)之間傳輸,如果缺乏足夠的保護,就會發生敏感數據泄露的問題。
敏感數據的泄露可涉及到訪問靜態數據、正在傳輸數據,其中也包括備份和用户正在瀏覽的數據。
攻擊者有多種選擇,例如,如果要竊取或攻擊數據存儲器,他可以使用基於惡意軟件的攻擊,通過中間人攻擊截獲服務器和瀏覽器之間的數據,或者欺騙Web應用程序做出一些動作(例如,改變電子商務應用程序中購物車的內容,或者提升特權)等。
敏感數據泄露主要是由於敏感數據缺少加密造成的,但是即使實施了加密機制,其他事件也會造成信息泄露。密鑰的生成和管理及算法等不夠強健在許多行業和應用中是很普遍的事情。
近一年來發生的有許多事件都表明這種漏洞的嚴重性,特別是在兩方面表面尤為突出:一是實施了錯誤的加密算法,二是移動和雲的方案缺乏加密。
2014年九月,美國計算機緊急事件響應小組協調中心(CERT/CC)的專家對一些沒有能夠正確驗證SSL證書的安卓應用進行了測試,併發布了測試報告。
CERT的報告認為,許多應用正使用有漏洞的庫,如Flurry庫。因此,安卓用户就會暴露在這種攻擊中,並僅有少量公司採取措施保障其產品的安全。
攻擊者往往並不直接破解加密,而是利用敏感數據的泄露缺陷。這就意味着攻擊者會竊取加密密鑰,運行中間人攻擊,從服務器或用户的瀏覽器上竊取正在傳輸的明文數據。
注意,敏感數據泄露往往是攻擊活動第一階段的一個組成部分,也就是説攻擊者隨後會利用其它黑客技術。
管理敏感數據的每家企業都有可能遭受攻擊,特別是那些有大量用户的企業,很多用户都有可能為網絡攻擊打開大門。
認證和會話管理攻擊
如果攻擊者利用了認證或會話管理過程的漏洞或缺陷(例如,賬户、口令、會話ID被泄露等),並假冒其他用户,就會發生認證和會話管理攻擊。
這種攻擊非常常見,許多黑客組織都利用這些漏洞訪問受害者賬户,實施網絡間諜活動,或者竊取信息用於犯罪活動。
一個主要的威脅問題與認證和會話管理機制的自定義實施有關,在多數情況下,這種機制會導致攻擊活動。這種漏洞影響到WEB應用程序,如用户登出、口令管理、超時、網站登錄的“記住我”功能等,而且賬户的更新也受到認證漏洞攻擊影響。
最大的問題是,如果這種漏洞被成功地利用,攻擊者就假冒受害者,用其獲得的特權從事任何活動。
不幸的是,由於大量的認證機制是由每個不同的受害者實施的,所以認證和會話管理的攻擊漏洞是很難對付的。認證和會話管理系統往往並不一致,這就使得大規模地採用最佳方法並非易事。
攻擊者有多種方法可以繞過認證機制,其中包括使用SQL注入攻擊對目標賬户實施蠻力攻擊、從URL中恢復會話標誌、利用會話超時、重新利用已經使用的會話令牌,或者破壞用户的瀏覽器,等等。
最常見的攻擊依靠會話,而認證機制往往基於服務器上與每個會話有關的的令牌。取得會話標誌的攻擊者能夠假冒受害者而無需再次提供登錄憑據。
SQL注入
Hibernate這樣的對象到關係映射(ORM)庫可以提供了一些保護,通過吸引開發人員遠離直接操作的數據庫查詢,來防止SQL注入漏洞。然而,大多數ORM庫允許開發人員創建自由格式的查詢,但這仍給應用程序的開放留下了注入攻擊。
跨站漏洞(XSS)
.NET框架提供了一些開箱即用的XSS的保護,通過ValidateRequest屬性可用。這很有用,但因為它依賴於一個已知的無效負載黑名單,這可能會被繞過。因此,開發人員仍然需要正確地編碼數據,以防止XSS漏洞。
跨站點請求偽造(CSRF)
Tomcatservlet容器的最新版本CSRF保護過濾器,它提供很多保護來防止CSRF攻擊。 [2] 
安全配置錯誤
這種漏洞其實是最常見也是最危險的。錯誤配置的服務器和應用程序在網絡上數量眾多,這為網絡攻擊打開了大門。
下面是一些典型的安全配置錯誤:
· 運行過時的軟件
· 生產環境中的應用程序和產品仍運行在調試模式,或者仍包含調試模塊。
· 在系統中運行不必要的服務。
· 沒有配置對服務器資源和服務的訪問,導致泄露敏感信息,或者導致攻擊者破壞或竊取這些信息。
· 沒有改變出廠設置(例如,默認密鑰和口令)
· 不正確的異常管理,導致將系統信息泄露給攻擊者。
· 使用默認賬户。

安全漏洞最新新聞

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。”

安全漏洞法律法規

2021年7月12日,《工業和信息化部 國家互聯網信息辦公室 公安部關於印發網絡產品安全漏洞管理規定的通知》(工信部聯網安〔2021〕66號),自2021年9月1日起施行。 [3] 
參考資料