如何使用ThreadingTest提升軟件安全性檢測效率(中)html
經過ThreadingTest運行測試用例,採用TT百萬圖元級別的超高速圖形繪製技術展現圖,對各類大、中、小型軟件進行功能邏輯實現分析,實現測試用例與被測源碼間相互追溯。該追溯技術方便了用戶查看和設計測試用例,經過基於雙向追溯的實測用例分析,測試人員能夠快速追蹤修改代碼的波及範圍,針對已修改的模塊和波及到的模塊有針對性的補充測試用例,把迴歸測試的成本降至最低。數據庫
經過點擊某個測試用例,追溯到該用例所對應的函數控制圖,並展現其測試的邏輯和結構,點擊其中某個函數,能夠進行該函數的覆蓋率、複雜度、代碼、控制流程圖等信息查看,幫助測試人員經過簡單查看發現測試遺漏,而且有利於開發人員直接定位測試發現的缺陷,測試和開發之間的高效互動。想象下,當一個核心工程師離職時,他所帶走的是對整個程序的理解及開發思路,交接的工程師須要花費大量的時間去理解,TT經過正向追溯,可使交接的工程師能經過測試用例所展示的程序邏輯和結構等信息,快速的掌握和理解程序的開發思路。安全
經過點擊函數列表的某個函數,追溯到該函數所對應的函數調用圖、控制流程圖以及源碼,點擊其中的源碼,反向追溯到該源碼所執行過的測試用例列表。想象下當一個程序須要進行頻繁更改升級時,這時對測試人員的壓力是無比巨大的,測試人員沒法精確到開發人員所更改的代碼是否影響到其它的功能,只能對程序進行從新的測試,但經過逆向追溯,測試人員很明確的看到更改的代碼所影響到的測試用例表,經過累積覆蓋率技術,大大縮短了迴歸測試的時間。ide
大部分軟件的安全測試都是依據缺陷空間反向設計原則來進行的,即事先檢查哪些地方可能在安全隱患,而後針對這些可能的隱患進行測試。所以,反向測試過程是從缺陷空間出發,創建缺陷威脅模型,經過威脅模型來尋找***點,對***點進行已知漏洞的掃描測試。好處是能夠對已知的缺陷進行分析,避免軟件裏存在已知類型的缺陷,可是對未知的***手段和方法一般會無能爲力。TT的可以追蹤和分析在正反向安全測試過程當中,直接給出安全測試過程當中程序的執行邏輯分析,結合正常的功能執行邏輯,能夠給出詳盡的被測試程序對於測試過程當中的模擬***的免疫和感染程度。當有***行爲時候,一般程序的執行路徑和方式會變得異常詭異,即便在實驗室的測試環境,可能所以對暴露在***手段下的程序詭異行爲也很難分析出更好的防範手段,須要具有必定的漏洞分析能力來研究漏洞,TT會記錄暴露在******行爲下的被測程序的執行細節,包括方法執行次序,條件真假,以及程序段執行序列信息,這樣就能夠幫助安全測試和開發人員快速理解程序存在的***弱點是如何被***利用的,並輔助快速的修復該安全問題。函數
代碼審覈是一種實現安全的軟件的必要而不充分的方法。安全缺陷(特別是在C和C++中的安全缺陷)是顯而易見的,而體系結構瑕疵則是真正棘手的問題。ThreadingTest 針對代碼級別的編譯分析和運行插樁後的程序,經過一靜一動的代碼分析,TT提供了豐富的可視化界面包括函數調用圖、控制流程圖、覆蓋率可視化視圖、累計覆蓋率視圖、多版本對比視圖、版本測試數據報表視圖等。經過每種視圖進行有針對性的信息挖掘,達到問題快速定位。工具
單獨進行代碼審覈是一種特別有用的方法,可是,因爲這種類型的審覈只能肯定缺陷,所以,即便是最好的代碼審覈也只能發現大約50%的安全問題。僅僅盯着代碼是很難(而且幾乎是不可能)發現體繫結構問題的。現代的系統都由數百萬行代碼構成,這種方法就更不能奏效了。在測試用例和代碼的雙向追溯技術出現以前,大型應用的代碼走查,只能經過人工靜態的過程,人工靜態的檢查和分析,因爲程序邏輯自己的複雜性以及錯綜複雜的邏輯,以及人工理解和真正的在運行環境下的執行會存在較大的差別。TT的功能到代碼執行海量對應數據的生成和追溯,都是基於動態運行的,能夠簡單的理解爲它是一種高級的、系統的Debug技術,是基於程序動態運行的實際結果的。它可以區分每一個功能點的執行路徑,而不是把全部功能點的邏輯混合後在一塊兒分析,大型的軟件一般具備上百萬行的代碼,做爲專業的安全性測試團隊而非軟件開發方,是沒法短期內掌握的,而TT可以大大將帶代碼審查以及安全性測試的難度,使得獨立的第三方安全測試團隊可以迅速的展開基於源代碼的分析。ThreadingTest的雙向追溯專利其實是對軟件功能實現進行結構化、可視化分析的利器,同時也是對於軟件功能安全性分析最好用的輔助性分析工具。測試
TT的基於程序動態運行的追溯功能,能夠快速定位特定功能真實執行的代碼邏輯,經過正向追溯功能,TT可以很是清楚的記錄和分析各類狀況下對應的程序內部的代碼執行序列,對於一些安全專項檢查過程當中,TT能夠直接給出各個安全測試用例對應的代碼的執行路徑,這樣能夠快速的對相關的代碼段進行分析,相比於通常的靜態分析,TT的功能點(測試用例)到代碼的追隨,是真實的記錄了用例運行過程當中程序的執行狀況,相比一些靜態分析方法,TT的數據是很是精確的,所以能夠對安全性測試提供強大的輔助分析,TT可以爲安全功能測試方法,提供不少的支持,正向追溯功能如下安全性測試場景中使用:網站
1. 在上傳文件場景中,一般從安全性角度要求對文件類型進行過濾,那麼當用黑盒測試方法模擬各類文件類型的上傳過程當中,經過TT咱們能夠記錄對於各類類型的文件上傳過程當中,程序對應的處理邏輯,直接抽取出相關代碼後,安全測試人員能夠對記錄了真實執行過程的代碼進行安全行爲檢查。能夠分析出來,對應代碼中是否檢查上傳文件的類型、名稱等,並使用正確表達式等對文件名作嚴格的檢查,限定文件名只能包括字母和數字,同時限制文件的操做權限,並對文件的訪問路徑進行驗證。阿里雲
2. 對於軟件權限的檢測,一般不一樣權限的用戶權限程序內部都會有不一樣的邏輯與之對應,經過TT的雙向追溯功能,測試人員能夠直接拿到各類不一樣權限的用戶在軟件內部的真實的權限判斷代碼,而且進行分析。這樣能夠避免人爲靜態分析大量代碼而產生差錯以及與實際執行不符合的狀況。spa
3. TT能夠用來驗證各類外部輸入的驗證代碼邏輯,判斷,各類業務數據輸入、藉口數據輸入過程當中,程序是否都有對應的正確的代碼邏輯進行了檢查和校驗。經過正向追溯快速提取出來程序在各類特殊字符輸入狀況下對應的程序處理邏輯,以便供開發和安全測試人員進行審查。
4. 對於關鍵功能,TT經過提取運行邏輯代碼以及周圍的相關代碼,TT能夠展現各類主要邏輯是否存在異常處理機制。而且在程序真正發生錯誤的狀況下,TT會完整記錄異常發生後的整個執行過程,是否有合理的異常處理保護機制,以便於進行代碼異常處理相關的分析和安全檢測。
利用正向追溯,當測試執行完畢,經過正向追溯所得到的程序執行邏輯以及程序模塊的關聯關係,來分析程序邏輯是否與詳細設計一致,若是發現設計不一致的狀況,即便功能實現自己沒有問題,但由於實現違背了設計的原則,那麼則實現頗有可能存在潛在的安全風險。
利用逆向功能,一樣能夠很是有效的比對設計與實現是否一致,通常詳細設計文檔中都會說明某一模塊從設計角度,爲哪些功能提供服務,TT提供的逆向追溯功能,在記錄了功能點(測試用例)和執行代碼的邏輯關係之後,能夠反向追溯出來關鍵模塊被功能點(測試用例)使用的狀況,當出現有和設計不同的狀況,就能夠認爲是實現和設計出現不一致,須要進行安全性的審查。
使用TT能夠記錄在功能正常邏輯下的執行序列而且記錄進入數據庫,當使用***工具和各類人工的具備模擬***性質的測試用例對被測試程序進行測試的過程當中,若是程序的行爲發生改變,經過對在***模式下的執行序列的記錄和正常模式下進行比對和分析,能夠評估被測試程序是否存在安全性風險以及輔助肯定軟件是否被攻破而執行了很是規動做。例如常見的緩衝區溢出,它會將程序的正常執行序列打斷,去執行其它的代碼; SQL注入類的安全問題在程序內部執行路徑表現上,一樣也能夠用TT的代碼執行邏輯追蹤功能來進行分析。
目前ThreadingTest我的版是無償使用的,能夠在技術網站了解詳情,網址:www.threadingtest.com,也能夠在阿里雲下載:下載地址http://market.aliyun.com/product/12-122326004-cmgj000252.html?spm=0.0.0.0.VqYFd7,若是您在安裝與試用過程當中有任何疑問,您能夠加入QQ技術羣-"符號執行-白盒測試「,QQ號爲:「339834199"