前言
同符號執(zhí)行一樣导而,污點分析也是我們軟件分析、分析代碼漏洞隔崎、檢測攻擊方式的重要手段今艺,在漏洞自動化掃描或者檢測工具中有著十分廣泛的應用,本文主要是對污點分析進行一些簡單的介紹爵卒。一下資料來于網(wǎng)絡虚缎。
基本原理
定義
污點分析可以抽象成一個三元組<sources,sinks,sanitizers>的形式,其中,source 即污點源,代表直接引入不受信任的數(shù)據(jù)或者機密數(shù)據(jù)到系統(tǒng)中;sink即污點匯聚點,代表直接產(chǎn)生安全敏感操作(違反數(shù)據(jù)完整性)或者泄露隱私數(shù)據(jù)到外界(違反數(shù)據(jù)保密性);sanitizer即無害處理,代表通過數(shù)據(jù)加密或者移除危害操作等手段使數(shù)據(jù)傳播不再對軟件系統(tǒng)的信息安全產(chǎn)生危害.污點分析就是分析程序中由污點源引入的數(shù)據(jù)是否能夠不經(jīng)無害處理,而直接傳播到污點匯聚點.如果不能,說明系統(tǒng)是信息流安全的;否則,說明系統(tǒng)產(chǎn)生了隱私數(shù)據(jù)泄露或危險數(shù)據(jù)操作等安全問題。
識別污點源和匯聚點
現(xiàn)有的識別污點源和匯聚點的方法可以大致分成 3 類:
(1)使用啟發(fā)式的策略進行標記,例如把來自程序外部輸入的數(shù)據(jù)統(tǒng)稱為“污點”數(shù)據(jù),保守地認為這些數(shù)據(jù)有可能包含惡意的攻擊數(shù)據(jù)
(2)根據(jù)具體應用程序調用的 API 或者重要的數(shù)據(jù)類型,手工標記源和匯聚點
(3)使用統(tǒng)計或機器學習技術自動地識別和標記污點源及匯聚點.
污點傳播分析
1:顯示流分析
污點傳播分析中的顯式流分析就是分析污點標記如何隨程序中變量之間的數(shù)據(jù)依賴關系傳播钓株。也就是所謂的數(shù)據(jù)流傳播
2:隱式流分析
污點傳播分析中的隱式流分析是分析污點標記如何隨程序中變量之間的控制依賴關系傳播,也就是分析污點標記如何從條件指令傳播到其所控制的語句.也就是沒有之間的數(shù)據(jù)流傳遞实牡,但是會通過影響控制流而影響到數(shù)據(jù)
無害處理
污點數(shù)據(jù)在傳播的過程中可能會經(jīng)過無害處理模塊,無害處理模塊是指污點數(shù)據(jù)經(jīng)過該模塊的處理后,數(shù)據(jù)本身不再攜帶敏感信息或者針對該數(shù)據(jù)的操作不會再對系統(tǒng)產(chǎn)生危害.換言之,帶污點標記的數(shù)據(jù)在經(jīng)過無害處理模塊后,污點標記可以被移除.正確地使用無害處理可以降低系統(tǒng)中污點標記的數(shù)量,提高污點分析的效率,并且避免由于污點擴散導致的分析結果不精確的問題.例如一個寄存器被標記為污點源,但是有一個立即數(shù)被傳遞到寄存器中轴合,此時這個寄存器就不再是污點源创坞。
關鍵技術
污點傳播分析是當前污點分析領域的研究重點.與程序分析技術相結合,可以獲得更加高效、精確的污點分析結果.根據(jù)分析過程中是否需要運行程序,可以將污點傳播分析分為靜態(tài)污點分析和動態(tài)污點分析.
一受葛、靜態(tài)分析技術
靜態(tài)污點傳播分析(簡稱靜態(tài)污點分析)是指在不運行且不修改代碼的前提下,通過分析程序變量間的數(shù)據(jù)依賴關系來檢測數(shù)據(jù)能否從污點源傳播到污點匯聚點.
靜態(tài)污點分析的對象一般是程序的源碼或中間表示.可以將對污點傳播中顯式流的靜態(tài)分析問題轉化為對程序中靜態(tài)數(shù)據(jù)依賴的分析:
(1)首先,根據(jù)程序中的函數(shù)調用關系構建調用圖(call graph,簡稱CG);
(2)然后,在函數(shù)內或者函數(shù)間根據(jù)不同的程序特性進行具體的數(shù)據(jù)流傳播分析.常見的顯式流污點傳播方式包括直接賦值傳播犯建、通過函數(shù)(過程)調用傳播以及通過別名(指針)傳播.
二糠爬、動態(tài)分析技術
動態(tài)污點傳播分析(簡稱動態(tài)污點分析)是指在程序運行過程中,通過實時監(jiān)控程序的污點數(shù)據(jù)在系統(tǒng)程序中的傳播來檢測數(shù)據(jù)能否從污點源傳播到污點匯聚點.動態(tài)污點傳播分析首先需要為污點數(shù)據(jù)擴展一個污點標記(tainted tag)的標簽并將其存儲在存儲單元(內存、寄存器宾舅、緩存等)中,然后根據(jù)指令類型和指令操作數(shù)設計相應的傳播邏輯傳播污點標記.
動態(tài)污點傳播分析按照實現(xiàn)層次被分為基于硬件茅撞、基于軟件以及混合型的污點傳播分析這3類.
主要參考:https://www.k0rz3n.com/2019/03/01/%E7%AE%80%E5%8D%95%E7%90%86%E8%A7%A3%E6%B1%A1%E7%82%B9%E5%88%86%E6%9E%90%E6%8A%80%E6%9C%AF/