如何使用ThreadingTest提高軟件安全性檢測效率(中)

如何使用ThreadingTest提高軟件安全性檢測效率()

 

方法二:ThreadingTest雙向追溯專利技術--測試用例(功能)與源代碼關係的自動生成

通過ThreadingTest運行測試用例,採用TT百萬圖元級別的超高速圖形繪製技術展示圖,對各種大、中、小型軟件進行功能邏輯實現分析,實現測試用例與被測源碼間相互追溯。該追溯技術方便了用戶查看和設計測試用例通過基於雙向追溯的實測用例分析,測試人員可以快速追蹤修改代碼的波及範圍,針對已修改的模塊和波及到的模塊有針對性的補充測試用例,把迴歸測試的成本降至最低。

正向追溯技術:

通過點擊某個測試用例,追溯到該用例所對應的函數控制圖,並展示其測試的邏輯和結構,點擊其中某個函數,可以進行該函數的覆蓋率、複雜度、代碼、控制流程圖等信息查看,幫助測試人員通過簡單查看發現測試遺漏,並且有利於開發人員直接定位測試發現的缺陷,測試和開發之間的高效互動。想象下,當一個核心工程師離職時,他所帶走的是對整個程序的理解及開發思路,交接的工程師需要花費大量的時間去理解,TT通過正向追溯,可以使交接的工程師能通過測試用例所展現的程序邏輯和結構等信息,快速的掌握和理解程序的開發思路。

逆向追溯技術:

通過點擊函數列表的某個函數,追溯到該函數所對應的函數調用圖、控制流程圖以及源碼,點擊其中的源碼,反向追溯到該源碼所執行過的測試用例列表。想象下當一個程序需要進行頻繁更改升級時,這時對測試人員的壓力是無比巨大的,測試人員無法精確到開發人員所更改的代碼是否影響到其它的功能,只能對程序進行重新的測試,但通過逆向追溯,測試人員很明確的看到更改的代碼所影響到的測試用例表,通過累積覆蓋率技術,大大縮短了迴歸測試的時間。

大部分軟件的安全測試都是依據缺陷空間反向設計原則來進行的,即事先檢查哪些地方可能在安全隱患,然後針對這些可能的隱患進行測試。因此,反向測試過程是從缺陷空間出發,建立缺陷威脅模型,通過威脅模型來尋找***點,對***點進行已知漏洞的掃描測試。好處是可以對已知的缺陷進行分析,避免軟件裏存在已知類型的缺陷,但是對未知的***手段和方法通常會無能爲力。TT的能夠追蹤和分析在正反向安全測試過程中,直接給出安全測試過程中程序的執行邏輯分析,結合正常的功能執行邏輯,可以給出詳盡的被測試程序對於測試過程中的模擬***的免疫和感染程度。當有***行爲時候,通常程序的執行路徑和方式會變得異常詭異,即使在實驗室的測試環境,可能因此對暴露在***手段下的程序詭異行爲也很難分析出更好的防範手段,需要具備一定的漏洞分析能力來研究漏洞,TT會記錄暴露在******行爲下的被測程序的執行細節,包括方法執行次序,條件真假,以及程序段執行序列信息,這樣就可以幫助安全測試和開發人員快速理解程序存在的***弱點是如何被***利用的,並輔助快速的修復該安全問題。

使用雙向追溯,進行可視化的代碼結構安全審查

代碼審覈是一種實現安全的軟件的必要而不充分的方法。安全缺陷(特別是在C和C++中的安全缺陷)是顯而易見的,而體系結構瑕疵則是真正棘手的問題。ThreadingTest 針對代碼級別的編譯分析和運行插樁後的程序,通過一靜一動的代碼分析,TT提供了豐富的可視化界面包括函數調用圖、控制流程圖、覆蓋率可視化視圖、累計覆蓋率視圖、多版本對比視圖、版本測試數據報表視圖等。通過每種視圖進行有針對性的信息挖掘,達到問題快速定位。

單獨進行代碼審覈是一種特別有用的方法,但是,由於這種類型的審覈只能確定缺陷,因此,即使是最好的代碼審覈也只能發現大約50%的安全問題。僅僅盯着代碼是很難(並且幾乎是不可能)發現體繫結構問題的。現代的系統都由數百萬行代碼構成,這種方法就更不能奏效了。在測試用例和代碼的雙向追溯技術出現之前,大型應用的代碼走查,只能通過人工靜態的過程,人工靜態的檢查和分析,由於程序邏輯本身的複雜性以及錯綜複雜的邏輯,以及人工理解和真正的在運行環境下的執行會存在較大的差異。TT的功能到代碼執行海量對應數據的生成和追溯,都是基於動態運行的,可以簡單的理解爲它是一種高級的、系統的Debug技術,是基於程序動態運行的實際結果的。它能夠區分每個功能點的執行路徑,而不是把所有功能點的邏輯混合後在一起分析,大型的軟件通常具有上百萬行的代碼,作爲專業的安全性測試團隊而非軟件開發方,是無法短時間內掌握的,而TT能夠大大將帶代碼審查以及安全性測試的難度,使得獨立的第三方安全測試團隊能夠迅速的展開基於源代碼的分析。ThreadingTest的雙向追溯專利實際上是對軟件功能實現進行結構化、可視化分析的利器,同時也是對於軟件功能安全性分析最好用的輔助性分析工具。

TT的基於程序動態運行的追溯功能,可以快速定位特定功能真實執行的代碼邏輯,通過正向追溯功能,TT能夠非常清楚的記錄和分析各種情況下對應的程序內部的代碼執行序列,對於一些安全專項檢查過程中,TT可以直接給出各個安全測試用例對應的代碼的執行路徑,這樣可以快速的對相關的代碼段進行分析,相比於一般的靜態分析,TT的功能點(測試用例)到代碼的追隨,是真實的記錄了用例運行過程中程序的執行情況,相比一些靜態分析方法,TT的數據是非常精確的,因此可以對安全性測試提供強大的輔助分析,TT能夠爲安全功能測試方法,提供很多的支持,正向追溯功能以下安全性測試場景中使用:

1.    在上傳文件場景中,通常從安全性角度要求對文件類型進行過濾,那麼當用黑盒測試方法模擬各種文件類型的上傳過程中,通過TT我們可以記錄對於各種類型的文件上傳過程中,程序對應的處理邏輯,直接抽取出相關代碼後,安全測試人員可以對記錄了真實執行過程的代碼進行安全行爲檢查。可以分析出來,對應代碼中是否檢查上傳文件的類型、名稱等,並使用正確表達式等對文件名做嚴格的檢查,限定文件名只能包括字母和數字,同時限制文件的操作權限,並對文件的訪問路徑進行驗證。

2.    對於軟件權限的檢測,通常不同權限的用戶權限程序內部都會有不同的邏輯與之對應,通過TT的雙向追溯功能,測試人員可以直接拿到各種不同權限的用戶在軟件內部的真實的權限判斷代碼,並且進行分析。這樣可以避免人爲靜態分析大量代碼而產生差錯以及與實際執行不符合的情況。

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"

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章