您好,登錄后才能下訂單哦!
如何使用ThreadingTest提高軟件安全性檢測效率(中)
通過ThreadingTest運行測試用例,采用TT百萬圖元級別的超高速圖形繪制技術展示圖,對各種大、中、小型軟件進行功能邏輯實現(xiàn)分析,實現(xiàn)測試用例與被測源碼間相互追溯。該追溯技術方便了用戶查看和設計測試用例,通過基于雙向追溯的實測用例分析,測試人員可以快速追蹤修改代碼的波及范圍,針對已修改的模塊和波及到的模塊有針對性的補充測試用例,把回歸測試的成本降至最低。
通過點擊某個測試用例,追溯到該用例所對應的函數(shù)控制圖,并展示其測試的邏輯和結構,點擊其中某個函數(shù),可以進行該函數(shù)的覆蓋率、復雜度、代碼、控制流程圖等信息查看,幫助測試人員通過簡單查看發(fā)現(xiàn)測試遺漏,并且有利于開發(fā)人員直接定位測試發(fā)現(xiàn)的缺陷,測試和開發(fā)之間的高效互動。想象下,當一個核心工程師離職時,他所帶走的是對整個程序的理解及開發(fā)思路,交接的工程師需要花費大量的時間去理解,TT通過正向追溯,可以使交接的工程師能通過測試用例所展現(xiàn)的程序邏輯和結構等信息,快速的掌握和理解程序的開發(fā)思路。
通過點擊函數(shù)列表的某個函數(shù),追溯到該函數(shù)所對應的函數(shù)調用圖、控制流程圖以及源碼,點擊其中的源碼,反向追溯到該源碼所執(zhí)行過的測試用例列表。想象下當一個程序需要進行頻繁更改升級時,這時對測試人員的壓力是無比巨大的,測試人員無法精確到開發(fā)人員所更改的代碼是否影響到其它的功能,只能對程序進行重新的測試,但通過逆向追溯,測試人員很明確的看到更改的代碼所影響到的測試用例表,通過累積覆蓋率技術,大大縮短了回歸測試的時間。
大部分軟件的安全測試都是依據(jù)缺陷空間反向設計原則來進行的,即事先檢查哪些地方可能在安全隱患,然后針對這些可能的隱患進行測試。因此,反向測試過程是從缺陷空間出發(fā),建立缺陷威脅模型,通過威脅模型來尋找***點,對***點進行已知漏洞的掃描測試。好處是可以對已知的缺陷進行分析,避免軟件里存在已知類型的缺陷,但是對未知的***手段和方法通常會無能為力。TT的能夠追蹤和分析在正反向安全測試過程中,直接給出安全測試過程中程序的執(zhí)行邏輯分析,結合正常的功能執(zhí)行邏輯,可以給出詳盡的被測試程序對于測試過程中的模擬***的免疫和感染程度。當有***行為時候,通常程序的執(zhí)行路徑和方式會變得異常詭異,即使在實驗室的測試環(huán)境,可能因此對暴露在***手段下的程序詭異行為也很難分析出更好的防范手段,需要具備一定的漏洞分析能力來研究漏洞,TT會記錄暴露在******行為下的被測程序的執(zhí)行細節(jié),包括方法執(zhí)行次序,條件真假,以及程序段執(zhí)行序列信息,這樣就可以幫助安全測試和開發(fā)人員快速理解程序存在的***弱點是如何被***利用的,并輔助快速的修復該安全問題。
代碼審核是一種實現(xiàn)安全的軟件的必要而不充分的方法。安全缺陷(特別是在C和C++中的安全缺陷)是顯而易見的,而體系結構瑕疵則是真正棘手的問題。ThreadingTest 針對代碼級別的編譯分析和運行插樁后的程序,通過一靜一動的代碼分析,TT提供了豐富的可視化界面包括函數(shù)調用圖、控制流程圖、覆蓋率可視化視圖、累計覆蓋率視圖、多版本對比視圖、版本測試數(shù)據(jù)報表視圖等。通過每種視圖進行有針對性的信息挖掘,達到問題快速定位。
單獨進行代碼審核是一種特別有用的方法,但是,由于這種類型的審核只能確定缺陷,因此,即使是最好的代碼審核也只能發(fā)現(xiàn)大約50%的安全問題。僅僅盯著代碼是很難(并且?guī)缀跏遣豢赡埽┌l(fā)現(xiàn)體系結構問題的。現(xiàn)代的系統(tǒng)都由數(shù)百萬行代碼構成,這種方法就更不能奏效了。在測試用例和代碼的雙向追溯技術出現(xiàn)之前,大型應用的代碼走查,只能通過人工靜態(tài)的過程,人工靜態(tài)的檢查和分析,由于程序邏輯本身的復雜性以及錯綜復雜的邏輯,以及人工理解和真正的在運行環(huán)境下的執(zhí)行會存在較大的差異。TT的功能到代碼執(zhí)行海量對應數(shù)據(jù)的生成和追溯,都是基于動態(tài)運行的,可以簡單的理解為它是一種高級的、系統(tǒng)的Debug技術,是基于程序動態(tài)運行的實際結果的。它能夠區(qū)分每個功能點的執(zhí)行路徑,而不是把所有功能點的邏輯混合后在一起分析,大型的軟件通常具有上百萬行的代碼,作為專業(yè)的安全性測試團隊而非軟件開發(fā)方,是無法短時間內掌握的,而TT能夠大大將帶代碼審查以及安全性測試的難度,使得獨立的第三方安全測試團隊能夠迅速的展開基于源代碼的分析。ThreadingTest的雙向追溯專利實際上是對軟件功能實現(xiàn)進行結構化、可視化分析的利器,同時也是對于軟件功能安全性分析最好用的輔助性分析工具。
TT的基于程序動態(tài)運行的追溯功能,可以快速定位特定功能真實執(zhí)行的代碼邏輯,通過正向追溯功能,TT能夠非常清楚的記錄和分析各種情況下對應的程序內部的代碼執(zhí)行序列,對于一些安全專項檢查過程中,TT可以直接給出各個安全測試用例對應的代碼的執(zhí)行路徑,這樣可以快速的對相關的代碼段進行分析,相比于一般的靜態(tài)分析,TT的功能點(測試用例)到代碼的追隨,是真實的記錄了用例運行過程中程序的執(zhí)行情況,相比一些靜態(tài)分析方法,TT的數(shù)據(jù)是非常精確的,因此可以對安全性測試提供強大的輔助分析,TT能夠為安全功能測試方法,提供很多的支持,正向追溯功能以下安全性測試場景中使用:
1. 在上傳文件場景中,通常從安全性角度要求對文件類型進行過濾,那么當用黑盒測試方法模擬各種文件類型的上傳過程中,通過TT我們可以記錄對于各種類型的文件上傳過程中,程序對應的處理邏輯,直接抽取出相關代碼后,安全測試人員可以對記錄了真實執(zhí)行過程的代碼進行安全行為檢查??梢苑治龀鰜?,對應代碼中是否檢查上傳文件的類型、名稱等,并使用正確表達式等對文件名做嚴格的檢查,限定文件名只能包括字母和數(shù)字,同時限制文件的操作權限,并對文件的訪問路徑進行驗證。
2. 對于軟件權限的檢測,通常不同權限的用戶權限程序內部都會有不同的邏輯與之對應,通過TT的雙向追溯功能,測試人員可以直接拿到各種不同權限的用戶在軟件內部的真實的權限判斷代碼,并且進行分析。這樣可以避免人為靜態(tài)分析大量代碼而產(chǎn)生差錯以及與實際執(zhí)行不符合的情況。
3. TT可以用來驗證各種外部輸入的驗證代碼邏輯,判斷,各種業(yè)務數(shù)據(jù)輸入、借口數(shù)據(jù)輸入過程中,程序是否都有對應的正確的代碼邏輯進行了檢查和校驗。通過正向追溯快速提取出來程序在各種特殊字符輸入情況下對應的程序處理邏輯,以便供開發(fā)和安全測試人員進行審查。
4. 對于關鍵功能,TT通過提取運行邏輯代碼以及周圍的相關代碼,TT可以展示各種主要邏輯是否存在異常處理機制。并且在程序真正發(fā)生錯誤的情況下,TT會完整記錄異常發(fā)生后的整個執(zhí)行過程,是否有合理的異常處理保護機制,以便于進行代碼異常處理相關的分析和安全檢測。
利用正向追溯,當測試執(zhí)行完畢,通過正向追溯所獲得的程序執(zhí)行邏輯以及程序模塊的關聯(lián)關系,來分析程序邏輯是否與詳細設計一致,如果發(fā)現(xiàn)設計不一致的情況,即使功能實現(xiàn)本身沒有問題,但因為實現(xiàn)違背了設計的原則,那么則實現(xiàn)很有可能存在潛在的安全風險。
利用逆向功能,同樣可以非常有效的比對設計與實現(xiàn)是否一致,一般詳細設計文檔中都會說明某一模塊從設計角度,為哪些功能提供服務,TT提供的逆向追溯功能,在記錄了功能點(測試用例)和執(zhí)行代碼的邏輯關系以后,可以反向追溯出來關鍵模塊被功能點(測試用例)使用的情況,當出現(xiàn)有和設計不一樣的情況,就可以認為是實現(xiàn)和設計出現(xiàn)不一致,需要進行安全性的審查。
使用TT可以記錄在功能正常邏輯下的執(zhí)行序列并且記錄進入數(shù)據(jù)庫,當使用***工具和各種人工的具有模擬***性質的測試用例對被測試程序進行測試的過程中,如果程序的行為發(fā)生改變,通過對在***模式下的執(zhí)行序列的記錄和正常模式下進行比對和分析,可以評估被測試程序是否存在安全性風險以及輔助確定軟件是否被攻破而執(zhí)行了非常規(guī)動作。例如常見的緩沖區(qū)溢出,它會將程序的正常執(zhí)行序列打斷,去執(zhí)行其它的代碼; SQL注入類的安全問題在程序內部執(zhí)行路徑表現(xiàn)上,同樣也可以用TT的代碼執(zhí)行邏輯追蹤功能來進行分析。
目前ThreadingTest個人版是免費使用的,可以在技術網(wǎng)站了解詳情,網(wǎng)址:www.threadingtest.com,也可以在阿里云下載:下載地址http://market.aliyun.com/product/12-122326004-cmgj000252.html?spm=0.0.0.0.VqYFd7,如果您在安裝與試用過程中有任何疑問,您可以加入QQ技術群-"符號執(zhí)行-白盒測試“,QQ號為:“339834199"
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。