Compiler-based Library Privilege Separation on Stock Android · Week 11

導語

本篇為第11周的論文分享回顧,本周為大家帶來的是周四由吳一雄同學分享的一篇文章:《The ART of App Compartmentalization: Compiler-based Library Privilege Separation on Stock Android》,該論文是發表在CCS2017上的一篇文章。本文版權歸 吳一雄 所有,未經授權不得轉載。


The ART of App Compartmentalization: Compiler-based Library Privilege Separation on Stock Android

0x01 問題來源

在傳統的 Android APP 中,開發者為了簡化開發流程常常使用第三方庫來實現APP 的一些功能,如廣告服務等。Android 在編譯的時候會將開發者引用的第三庫和開發者編寫的代碼編譯到同一個 APP 中。由於在 Android 上大部分的許可權管理是針對應用層面進行管理,而第三方庫跟 Host APP 處於同一個 APP中。對於系統來講,兩者的身份是等同的。

所以,在目前 Android 上,第三方庫往往和 Host APP 擁有相同的許可權,即第三方庫擁有用戶授予該應用的所有許可權。這也就用戶的隱私造成威脅,因為第三方庫中可能存在惡意的行為,如信息收集。所以 ,對 Android 應用中的第三方庫進行許可權控制目前是一個亟待解決的問題。

0x02 解決方案

針對這一問題,作者提出了一種新的針對原生 Android 系統的第三方庫的許可權分離方案—— CompARTist :在編譯時將 Android 應用程序分離成 Host APP 和包含第三方庫的 APP,從而實現許可權的控制。

作者選取廣告庫作為研究對象,在原生系統中實現對廣告庫的許可權隔離。(如圖1所示)

Figure 1: System overview of CompARTist

0x03 具體實現

作者首先分析了Android 市場上常見廣告提供商提供給開發者的 SDK 中所使用的技術(如圖2所示)。

Figure 2: Techniques used to integrate advertising libraries with host application

作者首先通過遍歷 IR Graph,找出所有對廣告庫的函數調用將其 Hook 以執行預定義的代碼來實現,將廣告庫的代碼從Host APP 中分離出來。其次,作者基於 IPC 協議開發一套適合 CompARTist 方案的進程間通信的方案(如圖3所示)。

作者在 Host APP 和 Ad APP 之間建立一個 IPC 信道,並建立一套 API。API 主要類別為:

  1. Ad Invocation API;
  2. Sync API;
  3. Callback API。

再藉助該 API 在 Host APP 和 AD APP 之間進行通信從而保證廣告的正常顯示。

作者利用Android 4.4 引入的 Android runtime 技術,在應用安裝編譯成 oat 文件的過程中,通過插樁技術完成上述所說的過程,主要實現兩步:

  1. 對廣告庫函數調用的 Hook;
  2. 在Host APP 中注入對API 調用處理的組件 AdHelper。至於專門提供廣告庫服務的 APP 是作者自己提供並安裝到用戶 Android 系統。

Figure 3: Inter-application Communication Channel

作者針對廣告服務商 Google Play Service Ads 提供的 library 進行分離,並在 Google Play Store 上選取適合的 APP 進行測試,測試結果如圖4所示。

在選取的3861個應用程序中有325個應用程序因為不符合測試標準而被刪除。在3536個應用程序中,有3257個被成功檢查,安裝,測試,測試和重新測試,成功率為92.11%。但是,在3257中測試程序中僅有2416(74.18%)個達到了在測試期間實際顯示了廣告。但是,在這裡沒有顯示廣告的測試應用中有相當一部分成功建立了 IPC 通信信道,所以作者推測這是由於測試工具的覆蓋面不夠導致展示廣告的代碼沒有被觸發。

而對性能影響方面,作者測試結果如圖5所示。除了在程序啟動時由於方案要求導致的100多 ms 的延遲外,其他基本的性能影響對用戶而言是不可察覺的。

Figure 4: Breakdown of our robustness evaluation on applications using Google Play Services Ads Library.

Figure 5: Performance evaluation results for the app compartmentalization transformation (averaged over 50 runs)

0x04 貢獻

作者的貢獻主要有以下方面的內容:

  1. 對 Android 市場上常見廣告服務提供商提供的 SDK 中採用的整合 Ad Library 到應用的技術的研究;
  2. 對第三方庫的許可權分離的解決方案:CompARTist,一個基於編譯器的在 Android 原生系統實現對廣告庫的許可權分離和故障隔離的應用分離系統。

推薦閱讀:

TAG:信息安全 | 学术论文 | Android |