每一個漏洞都有多個特征,而根據不同的特征可以將漏洞按照不同的方式分類。一般情況下,漏洞信息應包括漏洞名稱、漏洞成因、漏洞級別、漏洞影響、受影響的系統、漏洞解決方案、漏洞利用類型和漏洞利用方法等。
二進制比對技術又可稱為補丁比對技術,它主要是被用以挖掘已經發現的漏洞,因此在一定意義上也可被認為是一種漏洞分析技術。由于安全公告中一般都不指明漏洞的確切位置和成因,使得漏洞的有效利用比較困難。但漏洞一般都有相應的補丁,所以可以通過比較補丁前后的二進制文件,確定漏洞的位置和成因。補丁比較主要包括源碼補丁比較和二進制補丁比較兩種。
白盒測試
白盒測試是基于源碼的測試技術,直接面對程序中的數據和算法,進行控制流分析和數據流分析。在此需要說明的是,很多漏洞都是數據和算法共同造成的,并非單是數據或者算法的原因。控制流分析一般要得出程序的控制流圖,就是程序的調用、跳轉結構,是程序從入口到出口的路徑圖。數據流分析一般是跟蹤數據的產生、傳輸、處理和存儲等。在安全性測試的應用中,這兩種分析方法應該結合。下面以針對數組越界的測試進行分析。
黑盒測試
在軟件的設計和開發過程中,無論是設計者還是開發者都會作一個隱含假設,即軟件存在輸入域,用戶的輸入會限定在該輸入域中。然而在軟件的實際應用中,沒有可以將用戶的輸入限制在一定范圍內的機制,特別是一些惡意用戶,他們會通過各種方法尋找輸入域之外值,以期發現軟件的漏洞。黑盒測試就是利用各種輸入對程序進行探測,并對運行程序進行分析,以期發現系統漏洞的測試技術。這種測試技術僅僅需要運行的程序而不需要分析任何源代碼,測試者對軟件內部一無所知,但是清楚地知道軟件能做什么,能夠對程序基于輸入和輸出的關聯性進行分析。黑盒測試最關鍵的問題是測試數據的選取。既然知道軟件能做什么,那么也就大概知道該軟件的安全輸入域的范圍。所以測試最好是選擇軟件安全輸入域之外的數據。當然這還是不夠的,測試人員必須有知識和經驗的積累,例如,溢出漏洞在漏洞總量中占了很大比例,并且這類漏洞多是由特殊字符或者超長字符串導致的,如果分析總結以往溢出漏洞的利用方法,研究這些超長字符或者特殊字符串的構造方式,同樣有利于測試數據的選取。
灰盒測試
灰盒測試綜合了白盒測試和黑盒測試的優點。灰盒測試表現為與黑盒測試相似的形式,然而測試者具有程序的先驗知識,它對于程序的結構和數據流都有一定的認識。這種測試可以直接針對數據流中感興趣的邊界情況進行測試,從而比黑盒測試更高效。典型的灰盒測試有二進制分析,二進制分析往往首先通過逆向過程(ReversEngineering,RE )來獲得程序的先驗知識,然后通過反編譯器、反匯編器等輔助工具確定有可能出現漏洞的行,反向追蹤以確定是否有利用的可能性。常用的反匯編器有IDA Pro,反編譯器有Boomerang,調試器有OllyDbg、WinDbg等。灰盒測試具有比黑盒測試更好的覆蓋性,然而逆向工程非常復雜, 要求熟悉匯編語言、可執行文件格式、編譯器操作、操作系統內部原理以及其他各種各樣的底層技巧。
回答所涉及的環境:聯想天逸510S、Windows 10。
每一個漏洞都有多個特征,而根據不同的特征可以將漏洞按照不同的方式分類。一般情況下,漏洞信息應包括漏洞名稱、漏洞成因、漏洞級別、漏洞影響、受影響的系統、漏洞解決方案、漏洞利用類型和漏洞利用方法等。
1.二進制比對技術
二進制比對技術又可稱為補丁比對技術,它主要是被用以挖掘已經發現的漏洞,因此在一定意義上也可被認為是一種漏洞分析技術。由于安全公告中一般都不指明漏洞的確切位置和成因,使得漏洞的有效利用比較困難。但漏洞一般都有相應的補丁,所以可以通過比較補丁前后的二進制文件,確定漏洞的位置和成因。補丁比較主要包括源碼補丁比較和二進制補丁比較兩種。
2.測試技術
白盒測試
白盒測試是基于源碼的測試技術,直接面對程序中的數據和算法,進行控制流分析和數據流分析。在此需要說明的是,很多漏洞都是數據和算法共同造成的,并非單是數據或者算法的原因。控制流分析一般要得出程序的控制流圖,就是程序的調用、跳轉結構,是程序從入口到出口的路徑圖。數據流分析一般是跟蹤數據的產生、傳輸、處理和存儲等。在安全性測試的應用中,這兩種分析方法應該結合。下面以針對數組越界的測試進行分析。
黑盒測試
在軟件的設計和開發過程中,無論是設計者還是開發者都會作一個隱含假設,即軟件存在輸入域,用戶的輸入會限定在該輸入域中。然而在軟件的實際應用中,沒有可以將用戶的輸入限制在一定范圍內的機制,特別是一些惡意用戶,他們會通過各種方法尋找輸入域之外值,以期發現軟件的漏洞。黑盒測試就是利用各種輸入對程序進行探測,并對運行程序進行分析,以期發現系統漏洞的測試技術。這種測試技術僅僅需要運行的程序而不需要分析任何源代碼,測試者對軟件內部一無所知,但是清楚地知道軟件能做什么,能夠對程序基于輸入和輸出的關聯性進行分析。
黑盒測試最關鍵的問題是測試數據的選取。既然知道軟件能做什么,那么也就大概知道該軟件的安全輸入域的范圍。所以測試最好是選擇軟件安全輸入域之外的數據。當然這還是不夠的,測試人員必須有知識和經驗的積累,例如,溢出漏洞在漏洞總量中占了很大比例,并且這類漏洞多是由特殊字符或者超長字符串導致的,如果分析總結以往溢出漏洞的利用方法,研究這些超長字符或者特殊字符串的構造方式,同樣有利于測試數據的選取。
灰盒測試
灰盒測試綜合了白盒測試和黑盒測試的優點。灰盒測試表現為與黑盒測試相似的形式,然而測試者具有程序的先驗知識,它對于程序的結構和數據流都有一定的認識。這種測試可以直接針對數據流中感興趣的邊界情況進行測試,從而比黑盒測試更高效。典型的灰盒測試有二進制分析,二進制分析往往首先通過逆向過程(ReversEngineering,RE )來獲得程序的先驗知識,然后通過反編譯器、反匯編器等輔助工具確定有可能出現漏洞的行,反向追蹤以確定是否有利用的可能性。常用的反匯編器有IDA Pro,反編譯器有Boomerang,調試器有OllyDbg、WinDbg等。灰盒測試具有比黑盒測試更好的覆蓋性,然而逆向工程非常復雜, 要求熟悉匯編語言、可執行文件格式、編譯器操作、操作系統內部原理以及其他各種各樣的底層技巧。
回答所涉及的環境:聯想天逸510S、Windows 10。