【摘要】 基于移動設(shè)備集成的各類傳感器,眾多功能豐富的移動應(yīng)用被開發(fā)出來,聚集了大量高價(jià)值用戶隱私數(shù)據(jù),包括用戶身份信息、地理位置信息、賬戶資料信息等。用戶在享受移動應(yīng)用帶來便利的同時(shí),其隱私安全也受到了重大威脅。在這樣的背景下,移動應(yīng)用隱私合規(guī)檢測應(yīng)運(yùn)而生。本文簡要介紹Sechunter移動應(yīng)用隱私合規(guī)檢測的方法步驟,以及目標(biāo)檢測技術(shù)在其中的應(yīng)用。
概述:
受益于移動設(shè)備的廣泛普及,移動應(yīng)用近年來得到了蓬勃發(fā)展?;谝苿釉O(shè)備集成的各類傳感器,眾多功能豐富的移動應(yīng)用被開發(fā)出來,聚集了大量高價(jià)值用戶隱私數(shù)據(jù),包括用戶身份信息、地理位置信息、賬戶資料信息等。用戶在享受移動應(yīng)用帶來便利的同時(shí),其隱私安全也受到了重大威脅。在這樣的背景下,移動應(yīng)用隱私合規(guī)檢測應(yīng)運(yùn)而生。本文簡要介紹Sechunter移動應(yīng)用隱私合規(guī)檢測的方法步驟,以及目標(biāo)檢測技術(shù)在其中的應(yīng)用。
1 移動應(yīng)用隱私合規(guī)檢測背景簡介
移動應(yīng)用的隱私合規(guī)檢測,從技術(shù)形態(tài)上可以分為靜態(tài)檢測方案與動態(tài)檢測方案。以下分別作簡要介紹。
1.1 靜態(tài)檢測
靜態(tài)檢測方案通過對移動應(yīng)用的安裝包進(jìn)行反編譯,進(jìn)而通過靜態(tài)數(shù)據(jù)流、控制流分析等技術(shù),檢測移動應(yīng)用中可能存在的隱私泄露問題。在該領(lǐng)域中,常用到以下工具:
? Apktool [1]: 反編譯安卓Apk,可以反編譯資源,并在進(jìn)行修改之后重新打包Apk
? dex2jar [2]: 將Apk反編譯成Java源碼(classes.dex轉(zhuǎn)化成jar文件)
? Soot [3]:Soot最初是Java優(yōu)化框架,發(fā)展至今已廣泛應(yīng)用于分析優(yōu)化和可視化Java和Android應(yīng)用程序。
? Flowdroid [4]: 基于IFDS算法實(shí)現(xiàn)的針對Android的靜態(tài)污點(diǎn)分析框架
利用上述工具,開發(fā)者可以制定相應(yīng)的規(guī)范檢測項(xiàng),從而檢測到應(yīng)用中存在的隱私泄露隱患。
1.2 動態(tài)檢測
動態(tài)檢測方案通過運(yùn)行待檢測應(yīng)用于真實(shí)手機(jī)或者模擬器沙箱,通過監(jiān)控移動應(yīng)用對系統(tǒng)內(nèi)敏感資源的訪問,結(jié)合移動應(yīng)用的隱私政策聲明分析,檢測移動應(yīng)用是否包含隱私違規(guī)行為。應(yīng)用運(yùn)行則可以由人工進(jìn)行或者UI 自動化 。
1.2.1 敏感行為監(jiān)測
運(yùn)行時(shí)敏感行監(jiān)測實(shí)時(shí)監(jiān)控應(yīng)用對用戶隱私敏感數(shù)據(jù)的訪問。在實(shí)現(xiàn)上分為兩種:一種是直接在源碼中添加監(jiān)控代碼。如在AOSP代碼中的getLastLocation中直接添加代碼,記錄API訪問行為。另一種則是通過hook方案,不直接修改源碼,而是在系統(tǒng)運(yùn)行APP時(shí)添加邏輯鉤子,在APP調(diào)用特定敏感API時(shí),先跳轉(zhuǎn)至hook函數(shù),最后再返回調(diào)用原敏感API。其中,hook函數(shù)負(fù)責(zé)記錄應(yīng)用的API訪問行為。
1.2.2 UI自動化
移動應(yīng)用自動化即通過程序控制移動應(yīng)用UI交互。該領(lǐng)域典型的工具有: monkey [5],進(jìn)行UI界面隨機(jī)點(diǎn)擊以及系統(tǒng)級事件。第三方UI自動化工具:uiautomator2 [6]和AndroidViewClient [7], 基于系統(tǒng)工具uiautomator實(shí)現(xiàn),能夠?qū)崿F(xiàn)基本的自動化UI測試功能編程。
2 目標(biāo)檢測技術(shù)在隱私合規(guī)檢測領(lǐng)域的應(yīng)用
深度學(xué)習(xí)中的目標(biāo)檢測,主要用于在視圖中檢測出物體的類別和位置,如下圖所示。目前業(yè)界主要有YOLO [7],SSD [8]和RCNN [9]三類深度學(xué)習(xí)算法。

以Faster RCNN為例,該算法是RCNN算法的演進(jìn)。在結(jié)構(gòu)上,F(xiàn)aster RCNN將特征抽取(feature extraction),proposal提取,bounding box regression(rect refine),classification都整合在了一個(gè)網(wǎng)絡(luò)中,使得綜合性能有較大提高,在檢測速度方面尤為明顯。Faster RCNN主要分為4個(gè)主要內(nèi)容:
1. Conv layers。作為一種CNN網(wǎng)絡(luò)目標(biāo)檢測方法,F(xiàn)aster RCNN首先使用一組基礎(chǔ)的conv+relu+pooling層提取image的feature maps。該feature maps被共享用于后續(xù)RPN層和全連接層。
2. Region Proposal Networks。RPN網(wǎng)絡(luò)用于生成region proposals。該層通過softmax判斷anchors屬于positive或者negative,再利用bounding box regression修正anchors獲得精確的proposals。
3. Roi Pooling。該層收集輸入的feature maps和proposals,綜合這些信息后提取proposal feature maps,送入后續(xù)全連接層判定目標(biāo)類別。
4. Classification。利用proposal feature maps計(jì)算proposal的類別,同時(shí)再次bounding box regression獲得檢測框最終的精確位置。

2.1 應(yīng)用點(diǎn)
在UI自動化中,常常存在基于uiautomator的工具無法識別的UI布局。主要有兩種原因?qū)е逻@種情況:1、UI內(nèi)容由整張圖片渲染而成;2、UI控件原因,某些用戶編寫的UI控件沒有支持無障礙服務(wù),導(dǎo)致uiautomator無法獲取UI布局。此時(shí),使用UI圖片目標(biāo)識別,可以判斷可點(diǎn)擊的有效區(qū)域。

如上圖所示,在Sechunter的UI自動化中,我們需要獲取應(yīng)用的隱私聲明文件鏈接,以及相應(yīng)的“同意”、“不同意”的位置。在uiautomator無法獲得UI布局的情況下,可以進(jìn)行目標(biāo)識別,通過圖像獲得可點(diǎn)擊位置,從而推進(jìn)UI自動化測試的繼續(xù)執(zhí)行。
2.2 目標(biāo)檢測技術(shù)的應(yīng)用
在模型訓(xùn)練中,主要困難在于 數(shù)據(jù)集 收集。Sechunter的解決方案是,先通過傳統(tǒng)的圖片處理方案獲取初步的數(shù)據(jù)集,這里我們使用了圖片處理領(lǐng)域的顯著區(qū)域識別。這個(gè)過程的關(guān)鍵是要有一個(gè)驗(yàn)證模塊,對隱私聲明鏈接而言,即驗(yàn)證該區(qū)域點(diǎn)擊跳轉(zhuǎn)后內(nèi)容的確是隱私聲明。我們使用了LDA主題模型來判斷文本內(nèi)容是否是隱私政策。通過驗(yàn)證的樣本都收納到數(shù)據(jù)集中,然后用這些標(biāo)注數(shù)據(jù)進(jìn)行第一版的目標(biāo)識別模型訓(xùn)練。
訓(xùn)練出來的模型只是利用傳統(tǒng)圖像處理能夠識別成功的圖片進(jìn)行學(xué)習(xí)。對于不成功的圖片,我們進(jìn)一步使用OCR。OCR能夠識別出圖像中的文字內(nèi)容及其位置。結(jié)合第一階段的目標(biāo)識別模型進(jìn)行結(jié)果融合,可以得到更為精確的可點(diǎn)擊區(qū)域結(jié)果,并且這個(gè)時(shí)候的融合方案已經(jīng)初步可以使用了。隨著數(shù)據(jù)集的積累,目標(biāo)檢測模型的檢測結(jié)果也變得更精確。最終能夠只使用目標(biāo)識別方案。
3 小結(jié)
移動應(yīng)用隱私合規(guī)檢測對保護(hù)個(gè)人信息安全有著重要作用。但目前市場上的工具自動化檢測能力普遍都還比較有限。Sechunter在自動化隱私合規(guī)檢測領(lǐng)域做了一些積極探索,進(jìn)行了眾多跨領(lǐng)域技術(shù)調(diào)研,本文介紹的目標(biāo)識別技術(shù)能夠幫助自動化工具更快更準(zhǔn)地識別UI可點(diǎn)擊區(qū)域。
文末福利:華為云 漏洞掃描服務(wù) VSS 基礎(chǔ)版限時(shí) 免費(fèi)體驗(yàn) >>>
引用:
【1】 Apktool:https://ibotpeaches.github.io/Apktool/
【2】 Dex2jar:https://github.com/pxb1988/dex2jar
【3】 Soot:http://soot-oss.github.io/soot/
【4】 Flowdroid: https://blogs.uni-paderborn.de/sse/tools/flowdroid/
【5】 Monkey:https://developer.android.com/studio/test/monkey?hl=zh-cn
【6】 uiautomator2:https://github.com/openatx/uiautomator2
【7】 AndroidViewClient:https://github.com/dtmilano/AndroidViewClient
【8】 YOLO3:https://github.com/ultralytics/yolov3
【9】 SSD:https://github.com/amdegroot/ssd.pytorch
【10】 Faster R-CNN:https://arxiv.org/abs/1506.01497