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

面向應(yīng)用程序安全問題的污點(diǎn)分析技術(shù)

簡析電動(dòng)汽車充電樁檢測技術(shù)應(yīng)用及分析

評論