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

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

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

?
如上圖所示,在Sechunter的UI自動化中,我們需要獲取應用的隱私聲明文件鏈接,以及相應的“同意”、“不同意”的位置。在uiautomator無法獲得UI布局的情況下,可以進行目標識別,通過圖像獲得可點擊位置,從而推進UI自動化測試的繼續(xù)執(zhí)行。
2.2?目標檢測技術(shù)的應用
在模型訓練中,主要困難在于數(shù)據(jù)集收集。Sechunter的解決方案是,先通過傳統(tǒng)的圖片處理方案獲取初步的數(shù)據(jù)集,這里我們使用了圖片處理領(lǐng)域的顯著區(qū)域識別。這個過程的關(guān)鍵是要有一個驗證模塊,對隱私聲明鏈接而言,即驗證該區(qū)域點擊跳轉(zhuǎn)后內(nèi)容的確是隱私聲明。我們使用了LDA主題模型來判斷文本內(nèi)容是否是隱私政策。通過驗證的樣本都收納到數(shù)據(jù)集中,然后用這些標注數(shù)據(jù)進行第一版的目標識別模型訓練。
訓練出來的模型只是利用傳統(tǒng)圖像處理能夠識別成功的圖片進行學習。對于不成功的圖片,我們進一步使用OCR。OCR能夠識別出圖像中的文字內(nèi)容及其位置。結(jié)合第一階段的目標識別模型進行結(jié)果融合,可以得到更為精確的可點擊區(qū)域結(jié)果,并且這個時候的融合方案已經(jīng)初步可以使用了。隨著數(shù)據(jù)集的積累,目標檢測模型的檢測結(jié)果也變得更精確。最終能夠只使用目標識別方案。
3?小結(jié)
移動應用隱私合規(guī)檢測對保護個人信息安全有著重要作用。但目前市場上的工具自動化檢測能力普遍都還比較有限。Sechunter在自動化隱私合規(guī)檢測領(lǐng)域做了一些積極探索,進行了眾多跨領(lǐng)域技術(shù)調(diào)研,本文介紹的目標識別技術(shù)能夠幫助自動化工具更快更準地識別UI可點擊區(qū)域。
?