文/楊哲慜 楊珉
?
網絡安全研究國際學術論壇移動平臺用戶隱私保護技術綜述
文/楊哲慜 楊珉

以谷歌公司的安卓系統和蘋果公司的iOS系統為代表的移動操作系統正逐漸取代桌面操作系統,成為公眾接入互聯網的主要入口平臺。短短數年內,移動智能終端出現爆發式增長,據權威市場研究機構IDC的數據顯示[1],2013年全球智能手機的出貨量達4.3億臺,比2009年增長了十倍,到2015年第二季度更是單季度出貨量達3.415億臺,其主要增長來自于亞太和中東亞地區。
移動操作系統生態鏈正從智能手機拓展到如平板電腦、智能家居、可穿戴設備、車載控制系統等多種衍生產品中,日益驅動著互聯網的改變和發展。作為移動互聯時代的突出標志之一,移動應用聚集大量高附加值的信息和資源。這些信息和資源不僅包含個人的手機信息、身份信息、地理位置信息,還包含諸多賬號信息以及郵件、文件等信息。
移動應用利用用戶賦予的個人信息為其提供便捷、即時、精確的定制服務。在這一背景下,移動平臺得以取代傳統PC平臺成為人們接入互聯網的首選方式。然而,移動平臺的高度互聯性也是一把雙刃劍,它同時使用戶輕易暴露在攻擊者的威脅之下。受政治、軍事和商業利益驅使,針對移動終端系統的攻擊行為層出不窮,其中針對個人隱私的竊取行為又是其中的重災區。“棱鏡門”以及多項外電資料披露,多個國家在資助移動操作系統安全防護方法的同時,也在研究利用移動操作系統的安全缺陷,通過惡意軟件對我國重要人員以及公眾實施高級持續性的大規模數據搜集。美國政府曾在過去的三年中資助英國政府通信總部(GCHQ)1億英鎊,專門用于研究手機操作系統的攻擊方法。
在過去的2015年中,國內個人信息泄露事件頻發。中國互聯網協會2015年發布的《中國網民權益保護調查報告》[2]稱,2015年中,中國網民因個人信息泄露、垃圾信息、詐騙信息等現象導致總體損失約805億元。其中,78.2%的網民個人身份信息被泄露過,63.4%的網民個人網上活動信息被泄露過。11月份被批露的百度Wormhole漏洞,其影響力覆蓋過億安卓手機用戶,造成大量用戶隱私泄漏風險。
面對移動互聯網用戶隱私保護的嚴峻形勢,隱私泄漏的檢測和保護近年來頗受關注。本文結合團隊的研究成果和正在進行的研究工作,揭示了移動應用隱私泄露檢測和防護的總體進展,并在增強對用戶隱私的識別和保護能力等方面提出值得關注的方向。
自從2008年第一部安卓智能手機面世以來,智能移動終端正在逐漸取代PC成為匯集個人隱私的核心媒介。這在賦予智能移動終端越來越強大功能的同時,也給個人隱私安全防護提出了必須面對的嚴峻挑戰:面對海量的移動應用,種類眾多的隱私數據,復雜的數據流動渠道,如何確保個人隱私不被惡意利用?針對這一問題,早期的隱私泄漏分析的關注點主要集中在敏感數據的傳播上。研究人員通過用戶的隱私數據是否離開移動設備來判斷應用是否存在隱私泄露,并從隱私泄漏的檢測和防護兩個方面展開研究:
1.隱私泄漏檢測
從核心原理來看,隱私泄露檢測技術經歷了靜態分析、動態分析、動靜態分析結合的發展路線。
靜態分析方法通常采用靜態數據流分析的手段分析程序中的靜態敏感數據流向,如加利福尼亞大學戴維斯分校的Androidleaks系統[3]、加利福尼亞大學伯克利分校的ComDroid系統[4]、我們之前提出的LeakMiner系統[5]、喬治亞理工的Chex系統[6]和德國達姆施塔特工業大學的FlowDroid系統[7]。在隱私泄露檢測上,靜態分析方法具有運行速度快,代碼覆蓋率高等特點,但是由于靜態方法無法反映惡意軟件運行時的動態行為,使得這類檢測方法的實際效果受到明顯影響。在攻防持續對抗的過程中,攻擊者如果采用代碼混淆技術也可輕易規避此類方法的檢測。
意識到靜態分析的缺陷,動態分析方法根據應用程序的敏感信息傳輸特征動態監測安卓系統中的惡意隱私泄露應用,其中最有代表性的是賓夕法尼亞大學的William Enck等人提出的TaintDroid系統[8],該系統通過修改安卓內核代碼,利用動態指令插樁的方式實時監控程序中的數據傳播過程,并在發生敏感數據傳播時警告用戶。劍橋大學的Rubin Xu等人提出的Aurasium系統[9]則通過另一種方式實現了類似的功能,他們通過對需要監控的應用程序進行重打包,以此給應用程序插入監控邏輯。相比靜態分析方法,動態數據流跟蹤具有分析精度高的特點,但是由于動態監測技術的局限,其具有代碼覆蓋率不足、檢測結果滯后于數據傳輸發生等問題。
鑒于動、靜態分析在隱私泄露檢測過程中的不足和優點,如果可以結合兩種分析方法,綜合利用其優勢,實現既具有較高覆蓋率和檢測速度,又具有高分析精度的檢測方法就具有了相當大的現實意義。筆者在2013年提出的AppIntent系統[10]對此作了一些嘗試,AppIntent首先利用靜態數據流分析獲取應用程序中敏感數據傳播的候選集,再通過動態符號化執行驗證候選敏感數據流是否會真實發生。通過結合兩種分析方法,可以在較短時間內,在不損失分析覆蓋率的前提下,提高隱私泄露的檢測精度。
2.隱私泄漏防護
在隱私泄漏的防范方面,移動終端系統主動抑制惡意軟件對敏感資源的不合理使用是防范惡意軟件的重要途徑。微軟雷蒙德研究院的Jaeyeon Jung研究員提出AppFence系統[11]在動態檢測隱私泄漏風險的基礎上實時阻止軟件對隱私信息的收集行為。北卡羅來納大學的William Enck教授所在團隊提出的Kirin[12]和Saint[13]系統用于阻止一個應用軟件同時申請多個可疑的敏感資源。此外,雪城大學的Wenliang Du教授所在團隊提出的AFrame系統[14]、伯克利的David Wagner教授所在團隊提出的AdDroid系統[15]、和萊斯大學的Shashi Shekhar 等人提出的AdSplit系統[16]均通過進程隔離的方式限制程序內部不可信組件對敏感資源的使用。此外,劍橋大學的Ross Anderson等人提出的Aurasium系統[9]提供給用戶直接管理程序訪問敏感資源行為的能力。
隨著隱私泄漏研究的深入展開,近年來研究者們逐漸意識到傳統的隱私泄漏定義并不準確。而該定義的不精確和不完整限制了隱私泄漏檢測技術的效率和效果。為了在隱私泄漏檢測和防護過程中獲得更準確更全面的結果,相關研究在以下兩個方面對隱私泄漏定義進行了修正。
1.隱私泄漏的用戶感知問題
基于敏感數據傳播的隱私泄漏檢測技術認為:通過檢測用戶的隱私數據是否離開移動設備就可以判斷應用是否存在隱私泄露。事實上,由于大量手機應用都采用云計算,許多非惡意應用均利用云服務器為終端用戶提供定制化服務。這些應用通常需要收集一些敏感數據(比如位置、聯系人信息等),并將其發送到自身服務器。而一些惡意應用在竊取用戶敏感數據后也表現為類似的行為,也就是將隱私信息傳送到自己的服務器。因此,僅僅依靠應用程序是否傳輸敏感數據不可以真正判別出應用軟件是否存在隱私泄露。
意識到這一問題之后,安全研究人員通過不斷改進隱私泄漏的判斷標準,力圖提高隱私泄漏檢測的精度。美國杜克大學的Peter Gilbert等人提出的Vision系統[17]認為如果應用程序將自身敏感數據傳輸行為加入最終用戶許可協議(EULA)并得到用戶許可,或者應用程序在敏感數據傳輸行為發生時明確的通知告知用戶,則該數據傳輸可以被認為并非隱私泄露。與之類似的是,佐治亞理工學院的Wenke Lee教授所在團隊提出的BLADE系統[18]通過識別應用程序是否得到了用戶許可,來檢測從網絡上動態下載的惡意軟件。然而,手機應用一般不提供最終用戶許可協議(EULA),同時,即使在數據傳輸符合用戶意圖的時候(如轉發短信),應用程序也很少向用戶彈出顯式的用戶提示。伯克利的Dawn Song教授所在團隊提出的Pegasus系統[19]以應用程序使用API和權限的順序為特點來檢測軟件惡意行為。與我們的研究類似的是,它也檢測那些與圖形界面操作不相符的惡意行為。然而,隱私泄露無法通過簡單的權限或者API的使用順序來概括。因此應用程序的隱私泄露行為無法通過這種方法被檢測出來。此外,Pegasus需要分析人員根據應用程序的行為手動指定用戶程序行為驗證的屬性特征。在不了解應用程序代碼的情況下,分析人員很難制定這些屬性特征。這些方法通過歸納隱私泄漏行為的外部表征試圖區分隱私泄漏和應用軟件的正常敏感數據傳輸行為,對隱私泄漏的精確檢測進行了有效嘗試,但是這些方法仍然不能準確判斷隱私泄漏。
筆者所在團隊于2013年發表在CCS會議上的論文[10]中提出了另一種判斷隱私泄漏的方法,即一個更好的隱私泄露判別方法應該是敏感信息傳輸是否出于用戶本身的意圖。
(1)符合用戶意圖的敏感數據傳輸。為了使用應用軟件的一些功能,用戶經常需要容忍自己的隱私數據經過特定渠道被發送出手機。比如,當使用輔助管理短信的應用時,用戶可以通過點擊屏幕上的一些按鈕將特定短信轉發給其它用戶;而在使用一些基于用戶地理位置的服務時,用戶為了得到一些其感興趣的內容,往往要允許將自己的位置信息發送給應用服務器。由于這類功能在使用敏感數據時,用戶已經知情,所以不應該將其歸類為隱私泄露。

表1 檢測到的傳輸敏感數據的應用
(2)不符合用戶意圖的敏感數據傳輸。惡意應用在用戶不知情且與用戶使用的功能無關的情況下非法傳輸敏感數據,我們稱之為用戶不知情的敏感數據傳輸,或者叫隱私泄露。在大部分情況下,惡意應用為了使得用戶很難察覺到其惡意行為,通常都會秘密傳輸敏感數據。
綜上所述,應用程序對敏感數據的傳輸是不是在泄露隱私,取決于它是否滿足用戶的意圖。不幸的是,由于用戶的意圖非常繁雜而且不同的應用采用不同的實現方式,因此通過工具自動化檢測用戶意圖基本不可能實現。相對而言,通過為人工分析人員提供敏感數據傳輸的上下文信息是一種較為可行的方法。通過分析數據傳輸對應的用戶輸入序列,分析人員可以更容易的判斷數據傳輸是否出于用戶意圖。這促使我們設計并實現了AppIntent應用分析框架。
AppIntent從敏感數據的傳播路徑中進一步分析出導致這次數據傳輸的用戶數據輸入和交互輸入。再利用這兩部分用戶輸入控制應用程序的執行。在控制應用程序執行的過程中,AppIntent將對應敏感信息傳輸的圖形界面操作的順序呈現給軟件分析人員。通過觀察這些界面操作,軟件分析人員可以快速做出判斷。
表1中的第一部分是750個惡意軟件樣本的數據,第二部分是1000個Google Play上熱門應用樣本的測試結果。對每個樣本集,第一行的內容是檢測到的敏感數據類型。第二行的數據是AppIntent各個階段發現的敏感數據傳播應用數,第三行是通過AppIntent最終確定的符合用戶意圖和不符合用戶意圖的應用數。
如表 1所示,靜態污點分析從這兩個數據組中檢測出582(442+140)個可能包含敏感數據傳輸的實例。經過分析,我們發現其中有164個為誤報,在我們的AppIntent系統中,我們通過符合化執行去除了這些誤報。隨后,利用符號化執行提取的應用程序輸入,AppIntent成功的對358(288+70)個應用程序生成了演示案例。其中,245(219+26)個應用中發現含有不符合用戶意圖的數據傳輸行為。我們注意到,即使是在熱門免費應用中,用戶隱私泄露的現象依舊存在,這一現象主要發生在一些社交網絡服務或者含有內嵌廣告模塊的應用中。其中,泄露用戶的短信和聯系人信息的行為都發生在社交網絡服務中。此外,我們也發現,由于惡意的數據泄露行為可以隱藏在正常的數據傳輸背后去欺騙軟件安全檢查,因此惡意應用程序中可能既包含符合用戶意圖的數據傳輸,也包含不符合用戶意圖的數據傳輸。例如,我們發現了一個將自己偽裝成短信應用的程序,但在背地里,它偷偷的在未得到用戶允許的情況下將用戶的聯系人信息從手機上傳送出去。
2.隱私泄漏的敏感數據源問題
早在研究人員把敏感數據傳播作為隱私泄漏判斷依據的同時,“何為敏感數據”這個問題就已經存在了。早期的移動平臺隱私泄漏檢測方法把固定格式的API函數作為定義敏感數據的標準,例如,在安卓隱私泄漏檢測方面,研究人員通常將安卓系統管控的隱私數據(如IMEI,地理位置、短信等)作為敏感數據源。但是隨著用戶越來越依賴移動終端管理其隱私數據,敏感數據的邊界正在被不斷拓展,而傳統的隱私泄漏檢測技術中對敏感數據源的定義已經無法覆蓋這些新的敏感數據。
德國達姆施塔特工業大學Siegfried Rasthofe等人在2014年時提出[20],現有方法在確定敏感數據源時采用的API函數列表是不完整的,并提出通過機器學習獲取更詳細的敏感數據訪問API,提高隱私泄漏檢測的覆蓋率。
我們提出的UIPicker系統[21]和普渡大學的SUPOR系統[22]認為,單純檢測系統定義的API是不足以覆蓋所有的隱私泄露源的,其問題主要來源于由應用程序管控的用戶輸入的隱私數據,其中包括但不限于用戶的個人資料信息如賬戶密碼,用戶輸入的地理位置信息,以及銀行卡等支付類信息。
盡管用戶輸入的隱私數據面臨著重大的安全威脅,如何保護這類隱私數據卻具有很大的挑戰性。與系統管控的隱私數據不同,用戶輸入隱私數據無法通過某些特定的API函數進行標注,而是依賴于需要針對界面的語義信息以及上下文進行解析。在TaintDroid等系統中,將所有用戶輸入標記為隱私數據,這樣明顯覆蓋太廣,并且將很多常規數據納入了不必要的保護范疇,增加了系統分析工作量以及性能。
為了保護用戶輸入的敏感數據免于各類情況的泄露,自動化地標識這類數據變得非常必要以及緊迫。然而由于該類數據缺乏固定的結構,使得識別工作非常具有挑戰性。為了解決這個問題,UIPicker和SUPOR發現在應用當中,很多與隱私輸入相關的界面元素均在界面自身,以及界面描述文件當中通過豐富的語義信息有著較為明確的表述。在這樣一個觀察基礎之上,這兩個系統通過結合自然語言處理,機器學習,以及程序分析等技術,利用界面語義信息識別由用戶輸入的敏感信息源。
表2中第二列揭示了包含系統管控隱私的應用個數,第三列為含有敏感屬性標簽的用戶輸入隱私個數。

表2 敏感信息源數量
如表格2所示,通過對Google Play 上17425個應用的分析,我們發現其中有六千多個應用使用了用戶輸入的隱私數據。在傳統使用系統管控隱私API的系統中,受限于隱私數據的識別能力,無法對此類隱私進行有效保護。
在經歷了系統管控隱私數據、用戶輸入隱私數據之后,我們不禁會想,下一個敏感信息源是什么?事實上,能夠推測用戶隱私的敏感信息遠不止上文提到的這些。在移動平臺上,印第安納大學的Xiaofeng Wang教授[23]曾經利用安卓應用的網絡數據統計、應用程序聲音開關等信息,利用旁道攻擊的方式獲取用戶的身份、位置、身體狀況等敏感信息。類似的工作還揭露出用戶的其他敏感信息也可以被惡意工作所捕獲。面對這一類型的攻擊,目前尚沒有成熟的方法可以進行有效檢測和防御。
在移動互聯網飛速發展的背景下,為增強對用戶隱私信息的保護能力,還可以從兩個角度開展研究工作:
第一,用戶隱私的定義范圍還可以做進一步擴展。在傳統系統定義用戶隱私和本文提到的用戶輸入用戶隱私以外還存在眾多用戶數據可以被用于推測用戶隱私。現有工作雖然揭示了相關問題的存在,但是并未達成對此類隱私的有效分析和檢測。因此,需要進一步深化對用戶隱私的分析和保護。
第二,對于隱私泄漏的用戶感知問題,目前已經實現了輔助分析人員判斷敏感數據傳輸的用戶感知度,但是在大規模應用程序分析時,此類方法無法做到自動化判斷。目前仍有大量應用收集各類用戶隱私,其中大部分不經用戶同意。因此,仍需要加強對應用商城運營商與程序開發商(者)的監督管理。同時從技術角度講,也需要研究用戶感知度評估的自動化方法。
(作者單位為復旦大學)
(本文部分內容引用課題組撰寫的相關學術論文和技術報告。)
參考文獻
[1] Smartphone Vendor Market Share, 2015 Q2. http://www. idc.com/prodserv/smartphone-market-share.jsp
[2] 中國網民權益保護調查報告(2015). http://www.cac. gov.cn/2015-07/22/c_1116002040.htm
[3] C. Gibler, J. Crussell, J. Erickson, and H. Chen. Androidleaks: automatically detecting potential privacy leaks in android applications on a large scale. In Proceedings of the 5th international conference on Trust and Trustworthy Computing, TRUST’12, pages 291?307, 2012
[4] Chin, E., Felt, A. P., Greenwood, K., and Wagner, D. Analyzing Inter-Application Communication in Android. In Proc. of the Annual International Conference on Mobile Systems, Applications, and Services (2011).
[5] Z. Yang and M. Yang. Leakminer: Detect information leakage on android with static taint analysis. In Software Engineering (WCSE), 2012 Third World Congress on, pages 101-104, 2012.
[6] L. Lu, Z. Li, Z. Wu, W. Lee, and G. Jiang. Chex: statically vetting android apps for component hijacking vulnerabilities. In CCS 2012, pages 229-240, 2012.
[7] C. Fritz. FlowDroid: A Precise and Scalable Data Flow Analysis for Android. Master’s thesis, TU Darmstadt, July 2013.
[8] W. Enck, P. Gilbert, B. gon Chun, L. P. Cox, J. Jung, P. McDaniel, and A. Sheth. Taintdroid: An information-flow tracking system for realtime privacy monitoring on smartphones. In R. H. Arpaci-Dusseau and B. Chen, editors, OSDI, pages 393?407. USENIX Association, 2010.
[9] R. Xu, H. Sa¨?di, and R. Anderson. Aurasium: practical policy enforcement for android applications. In USENIX Security 2012, Security’12, pages 27?27, Berkeley, CA, USA, 2012. USENIX Association.
[10] Z. Yang, M. Yang, Y. Zhang, G. Gu, P. Ning, and X. S. Wang. Appintent: Analyzing sensitive data transmission in android for privacy leakage detection. In Proc. of ACM CCS’13, 2013.
[11] P. Hornyack, et al., "These aren't the droids you're looking for: retrofitting android to protect data from imperious applications," In Proc. CCS, 2011.
[12] ENCK, W., ONGTANG, M., AND MCDANIEL, P. On Lightweight Mobile Phone Application Certification. In Proceedings of the 16th ACM Conference on Computer and Communications Security (CCS) (November 2009).
[13] ONGTANG, M., MCLAUGHLIN, S., ENCK, W., AND MCDANIEL, P. Semantically Rich Application-Centric Security in Android. In Proceedings of the 25th Annual Computer Security Applications Conference (ACSAC) (2009).
[14] X. Zhang, A. Ahlawat, and W. Du. AFrame: Isolating advertisements from mobile applications in Android. In Proceedings of the 29th Annual Computer Security Applications Conference, 2013.
[15] P. Pearce, A. P. Felt, G. Nunez, and D. Wagner. Addroid: Privilege separation for applications and advertisers in android. In 7th ACM Symposium on Information,
[16] S. Shekhar, M. Dietz, and D. S. Wallach. AdSplit: Separating smartphone advertising from applications. In 21th Usenix Security Symposium, 2012.
[17] P. Gilbert, B.-G. Chun, L. P. Cox, and J. Jung. Vision: automated security validation of mobile apps at app markets. In Proceedings of the second international workshop on Mobile cloud computing and services, MCS ’11, pages 21-26, New York, NY, USA, 2011. ACM.
[18] L. Lu, V. Yegneswaran, P. Porras, and W. Lee. Blade: an attack-agnostic approach for preventing drive-by malware infections. In Proc. CCS, pages 440-450, 2010.
[19] K. Z. Chen, N. Johnson, V. D’Silva, S. Dai, K. MacNamara, T. Magrino, E. X. Wu, M. Rinard, and D. Song. Contextual policy enforcement in android applications with permission event graphs. In Proc. NDSS, 2013.
[20] S. Arzt, S. Rasthofer, and E. Bodden, “Susi: A tool for the fully automated classification and categorization of android sources and sinks,” 2013.
[21] Y Nan, M Yang, Z Yang, et al. Uipicker: User-input privacy identification in mobile applications[C]//USENIX Security. 2015: 993-1008.
[22] J Huang, Z Li, X Xiao, et al. SUPOR: precise and scalable sensitive user input detection for android apps[C]// Proceedings of the 24th USENIX Conference on Security Symposium. USENIX Association, 2015: 977-992.
[23] X Zhou, S Demetriou, D He, et al. Identity, location, disease and more: Inferring your secrets from android public resources[C]// Proceedings of the 2013 ACM SIGSAC conference on Computer & communications security. ACM, 2013: 1017-1028.