背景
APP中存在比較嚴重的安全風險有:數據泄露問題、第三方庫漏洞問題、隱私合規問題、組件間通信問題。
當用戶在不知情或沒有授權的情況下,APP進行收集用戶的隱私數據(包括IMEI ID、位置信息、視頻與音頻信息、Web瀏覽記錄等), 并將其收集的信息推送或轉賣給廣告推薦商,那么該APP就存在隱私合規的問題。
合規場景下APP污點分析幾個高頻關注點:組件內污點傳播、組件間污點傳播、組件與庫函數之間的污點傳播、加密算法是否使用常量密鑰、靜態初始化的向量、加密模式是否使用ECB模式。
污點分析技術是APP隱私數據安全、病毒分析(基于常用的API分析)和實現漏洞檢測的重要技術手段,也是信息安全研究的熱點領域,靜態污點分析方法是目前APP應用中檢測隱私泄露的主流方法之一。
理論基礎
污點分析(taint analysis):是一項跟蹤并分析污點信息在程序中流動的技術,該技術通過對系統中的敏感數據進行標記, 繼而跟蹤標記數據在程序中的傳播, 檢測系統安全問題。
它可以抽象為一個三元組
source即為污染源,代表程序的敏感數據或引入的不受信任的數據;
sink為污點匯聚點,代表直接產生安全敏感操作,或向外發送隱私數據;
sanitizer即無害化處理,表示污染源數據通過一些操作解除了其危害性,如對發送出去的數據做了加密處理或對引入的數據做了安全校驗。
污點分析技術可分為動態分析、靜態分析和混合分析,但在APP應用中污點分析技術主要應用到靜態污點分析技術。
APP靜態污點分析它是在靜態分析的基礎上加入污點分析原理,使其結果為該分析方法所期望的可疑數據流。靜態分析是指在不運行應用的前提下,對APK包中的代碼進行掃描從而生成程序的反匯編代碼來掌握程序功能,提取其中的詞法、語法和語義,進一步實現控制流分析和數據流分析,以幫助開發者發現程序中存在的結構性錯誤和安全漏洞等問題。
動態分析是通過在真實或虛擬處理機上執行程序,監控程序執行,并在執行過程中使用插樁的方式獲取程序的控制流和數據流,發現程序運行時錯誤或者潛在漏洞攻擊。
Android中由于動態特性代碼(反射,動態加載、代碼生成,外部代碼執行等)只有在運行時才能獲得具體信息,常規的靜態污點分析無法精確地分析出APP中可能存在的安全問題,也就導致了漏報率的上升。
如果對APP用戶隱私泄露監測加入靜態污點分析,那么污點源可以是能夠獲取隱私信息的函數,如讀取最新位置信息的getLastKnownLocation()函數,污點庫可以是具有短信發送功能的函數等具有引發危險問題的庫函數。污點源中的函數在獲取污點數據之后,可能會依次通過不同的變量將污點數據傳遞到污點庫函數中,在此過程中,所有存儲了該污點數據的變量都應該被標記為污點狀態,這樣就可以追蹤過程,即追蹤標記為污點狀態的變量的數據流過程。
淺析污點分析
污點分析4個關鍵點:污點產生位置、目標觸發位置、污點傳遞規則、程序入口。
Android應用的入口是各個組件,它一般從AndrroidManifest.xml文件中進行解析,以及registerReceiver 的動態注冊。
由于APP組件的生命周期是由Android系統維護的,污點追蹤可能因為生命周期回調函數的結束而中斷。
所以APP之間或內部的數據傳遞也是基于組件的。組件之間通訊是通過發送Intent組件傳遞信息來實現的,追蹤污點的數據流就是追蹤各個組件之間Intent的傳播數據流。因為Intent有兩種類型,一種是明確發送目的地的顯式Intent,一種是沒有明確發送目的地的隱式Intent。
(圖片來源網絡)
APP靜態污點分析:通過解析dex 文件并根據 APP的生命周期建立函數調用的模型,使用靜態數據流分析的方法,靜態模擬代碼數據的傳播,實現靜態數據的跟蹤,以達到精準定位漏洞的目的。
(圖片來源網絡)
App靜態污點分析技術主要包括如下步驟:
1、解析應用AndroidManifest.xml,Layout配置文件和相關Dex字節碼,根據預先建模的Android LifeCycle Model生成超調用圖 ,又稱過程間控制流圖(Inter-procedural control flow graph, ICFG);
2、根據定義的污點源和錨點(Source and Sink),將其轉換為基于ICFG的后向或前向數據流問題進行求解;
3、根據求解結果,回答是否存在從某輸入到輸出的數據流流動路徑,以顯式Intent問題為例,FlowDroid會檢測到一個以發送intent的sink方法到最后接收intent的source的路徑存在。
可參考源碼
1、FlowDroid是一款靜態污點分析框架,它是基于Soot開發對Android應用進行污點分析的框架。
Soot是一款強大的Java代碼優化分析框架,通過將Java字節碼轉換為其獨有的中間表示,進行控制流分析、調用圖分析。主要它目前還有在維護更新
2、MobSF 是一個自動化的、一體化的移動應用程序(Android/iOS/Windows)惡意軟件分析和安全評估框架,能夠執行靜態和動態分析。
目前市場上很多合規掃描檢測都是基于它去做定制開發的。
3、AppShark它是一款針對Android應用程序的安全測試框架
它本質上是一個靜態污點分析平臺,可以用于掃描Android應用程序中的漏洞,也還有在維護更新。
4、PATDroid是用于分析Android應用程序和系統本身的工具和數據結構的集合
它通過解析smali語句,分析程序控制流等,也具備APP污點分析的能力,不過它已經沒更新了,可以學習下它的思路。
審核編輯:劉清
-
Android系統
+關注
關注
0文章
56瀏覽量
13492 -
Web瀏覽器
+關注
關注
0文章
14瀏覽量
9279
原文標題:淺談APP的污點分析
文章出處:【微信號:哆啦安全,微信公眾號:哆啦安全】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論