您好,登錄后才能下訂單哦!
如何使用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"
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。