1. 程式人生 > 其它 >論文閱讀 汙點分析技術的原理和實踐應用 | 汙點分析綜述

論文閱讀 汙點分析技術的原理和實踐應用 | 汙點分析綜述

1.汙點分析的基本原理

汙點分析可以抽象成一個三元組<sources, sinks, sanitizers>的形式。sources:汙點源,代表直接引入不受信任的資料或者機密資料到系統中。sink:汙點匯聚點,代表直接產生安全敏感操作或者洩露隱私資料到外界。sanitizer:無害處理,代表通過資料加密或者移除危害操作等手段使資料傳播不再對軟體系統的資訊保安產生危害。

汙點分析就是分析程式中由汙點源引入的資料是否能夠不經無害處理,而直接傳播到汙點匯聚點.如果不能,說明系統是資訊流安全的;否則,說明系統產生了隱私資料洩露或危險資料操作等安全問題。

汙點分析的處理過程可以分成 3 個階段: (1) 識別汙點源和匯聚點; (2) 汙點傳播分析; (3) 無害處理.

識別汙點源和匯聚點:(1)使用啟發式的策略進行標記,例如把來自程式外部輸入的資料統稱為“汙點”資料,保守地認為這些資料有可能包含惡意的攻擊資料(2)根據具體應用程式呼叫的 API 或者重要的資料型別,手工標記源和匯聚點(3)使用統計或機器學習技術自動地識別和標記汙點源及匯聚點

汙點傳播分析:顯示流分析:分析汙點標記如何隨程式中變數之間的資料依賴關係傳播。即資料流傳播。隱式流分析:分析汙點標記如何隨程式中變數之間的控制依賴關係傳播,也就是分析汙點標記如何從條件指令傳播到其所控制的語句。即控制流傳播。

無害處理:汙點資料經過該模組的處理後,資料本身不再攜帶敏感資訊或者針對該資料的操作不會再對系統產生危害。 正確地使用無害處理可以降低系統中汙點標記的數量,提高汙點分析的效率,並且避免由於汙點擴散導致的分析結果不精確的問題。例如,加密庫函式應該被識別成無害處理模組。

2.汙點傳播分析的關鍵技術

2.1 顯示流分析

靜態分析技術: 分析物件一般是原始碼或者中間表示。 首先根據函式呼叫關係構建呼叫圖(call graph);然後在函式內部或者函式間根據不同的程式特性進行具體的資料流傳播分析。常見的汙點傳播方式包括:直接賦值傳播、通過函式調(過程)用傳播以及通過別名(指標)傳播。

動態分析技術:首先需要為汙點資料擴充套件一個汙點標記(tainted tag)的標籤並將其儲存在儲存單元(記憶體、暫存器、快取等)中,然後根據指令型別和指令運算元設計相應的傳播邏輯傳播汙點標記。動態汙點傳播分析按照實現層次被分為基於硬體、基於軟體以及混合型的汙點傳播分析3類.

2.2 隱式流分析

靜態隱式流分析:路徑敏感的資料流分析往往會產生路徑爆炸問題。為了降低開銷,一種簡單的靜態傳播(標記)分支語句的汙點標記方法是將控制依賴於它的語句全部進行汙點標記,但該方法會導致過汙染。

動態隱式流分析:首要問題是如何確定汙點控制條件下需要標記的語句的範圍;第2個問題是由於部分洩漏(partially leaked)導致的漏報;第3個問題是如何選擇合適的汙點標記分支進行汙點傳播。

2.3

目前通用汙點傳播分析技術面臨的主要問題和代表性技術:

3 實際應用

如分析Android的隱私洩露問題。

4 參考資料:

王蕾, 李豐, 李煉,等. 汙點分析技術的原理和實踐應用[J]. 軟體學報, 2017, 28(004):860-882.

CMU汙點分析課程PDF,Taint Analysis

南京大學軟體分析 視訊課件

北京大學軟體分析 課件

部落格:

簡述汙點分析

簡單理解汙點分析技術

汙點分析

汙點分析技術的原理和實踐應用