1、常用第三方SDK收集使用個人信息測評報告南都個人信息保護研究中心中國金融認證中心(CFCA)聯合發布2019年7月前言 在手機App的世界里,法規條文里所謂的“第三方應用或服務”似乎是個看得見摸不著的存在。但事實上,不管是你每天收到的新聞推送,還是促銷活動廣告,甚至短信驗證碼,都有可能出自第三方之手。 這些集成在App里的第三方工具包被稱為SDK(SoftwareDevelopmentKit,軟件開發工具包)。它們可以幫助App高效率、低成本地實現地圖、支付、統計、社交、廣告等一系列功能,同時自身也具備獲取相當一部分設備信息和用戶個人信息的能力。 2018年3月,以色列移動SDK管理平臺公司S
2、afeDK發布的安卓市場中的移動SDK數據趨勢顯示,2018年第一季度,GooglePlay里排名靠前的16萬款App中,平均每個中國開發的App會使用19.3個SDK。 從App使用SDK的普遍性來看,SDK安全無疑已經成為整個移動互聯網生態中極其關鍵的一環。然而,SDK未經允許收集用戶個人信息的行為,以及自身存在的安全漏洞,已經引發了十分嚴重的安全問題。 第三方廣告SDK“有米”“個信”曾被發現未經允許收集用戶的個人信息,使用這兩款SDK的App因此被蘋果應用商店和GooglePlay悉數下架;更甚者,有影響了300多款知名App的SDK“寄生推”通過預留的“后門”,進行惡意廣告行為和應用
3、推廣。 為了進一步厘清目前市場上常用的SDK在收集、使用用戶個人信息方面存在哪些問題,南都個人信息保護研究中心選擇了60款用戶量較大的App,并委托中國金融認證中心(CFCA)對市面上使用率較高的SDK進行了分析,希望了解SDK個獲取個人信息的合規現狀,引起社會對SDK安全風險的重視,促進政府監管和行業自律。目錄1一、測評方法 2(一)測評對象 2(二)樣本采集 21.采集方法22.采集時間2二、測評結果 3(一)總體情況 31.SDK使用個數和類別42.信息收集53.必要性分析7(二)SDK集中分析 91.系統權限92.向服務器上送信息 10三、結論 111.使用最廣泛的SDK多來自頭部互聯
4、網公司 112.多個SDK獲取個人敏感數據,App卻未告知用戶113.有SDK或存在隱瞞收集用戶個人信息的情況11四、聲明與保留 12一、測評方法(一)測評對象 本次測評根據App所提供的服務與人們生活的相關度,綜合用戶量和使用頻率等因素,選取了社交交友、生活服務、休閑娛樂、購物導購、旅游交通、移動金融六大行業的60款App,每個行業10款。 測評對象的選擇主要是通過統計60款App集成的SDK個數和調用次數,并對App使用最廣泛的SDK進行系統權限、實際行為、上送信息等方面的分析。 (二)樣本采集 1.采集方法 本次測評從官方網站、應用寶下載60款App的APK安裝包和SDK官方文檔,采用逆
5、向分析、抓包、函數掛鉤等技術手段進行分析。 值得注意的是,在建立SDK對照庫時,我們刪去了純粹為輔助開發、不涉及用戶個人信息的第三方開發框架代碼。另外,由于有的APK安裝包采用了加固、混淆等手段,SDK對照庫不一定包含了市面上所有SDK,因此本報告中App使用的SDK個數并非精確結果,報告僅對主流的SDK及其官方文檔作出分析和判斷。 2.采集時間 本次測評的采集時間為2019年4月,測試時間為2019年6月至7月。上述取證時間之外的修改不計入本次測評結果。 對于單個App,我們還進行了時間為5-30分鐘不等的逐個檢測,并記錄下對應的SDK行為。2 1.SDK使用個數和類別 經過分析,60款Ap
6、p共使用了至少966個SDK,平均每款App使用19.3個(注:移動金融類未計在內,因為該行業普遍對App進行加固,難以確切檢測出使用的SDK)。圖一:各行業App使用SDK數量 其中生活服務類App平均使用的SDK個數最多,為20.2個,旅游交通類最少,平均使用15.4個SDK。二、測評結果(一)總體情況3在實際使用中,消息推送類SDK被調用得最多60款App一共調用了高達264個,遠遠超過其他任何類別。此外,綜合類、輔助開發類SDK也被調用了上百次。 去掉重復項后,60款App共使用了至少113個不同的SDK。其中微信SDK被最多App使用,共47款App;其次是騰訊Open和小米推送SD
7、K,分別有41款App和40款App使用。 除了上述三個SDK,還有四個SDK被超過半數App使用,分別為華為SDK、支付寶SDK、FacebookSDK和愛彼迎SDK。 不難發現,使用最廣泛的SDK都來自頭部互聯網公司,比如騰訊、小米、華為、阿里、Facebook,涉及社交分享、第三方登錄、消息推送、支付等各種功能種類。 從SDK的功能類別來看,60款App使用的113個SDK中,消息推送類、生活服務類和輔助開發類的較多,分別為18個、14個和12個。4圖二:SDK類別分布2.信息收集 對60款App進行5-30分鐘時長不等的逐一檢測后,我們把SDK實際收集的信息劃分為手機設備信息 (如IM
8、EI、IMSI等設備唯一識別碼)、網絡信息(如IP地址、MAC地址、Wi-Fi熱點等)、手機狀態信息 (如已安裝/運行中的應用信息)、用戶行為信息(如鎖屏、安裝、升級、卸載應用軟件)、用戶個人信息 (如電話號碼、地理位置、通話記錄)等五類。 據統計,在檢測時間內,60款App使用的966個SDK中,有150個獲取了IMEI、IMSI等手機設備信息,在所有類別中最為頻繁;其次是Wi-Fi連接信息(IP地址、MAC地址)、掃描周圍熱點、Wi-Fi熱點信息(SSID)、運營商與基站信息等各類網絡信息,都有35個以上SDK獲??;還有10個SDK獲取了用戶行為信息,比如鎖屏、安裝/升級/卸載App。 此
9、外,用戶的電話號碼、地理位置、手機視頻和相冊等個人信息也被一些SDK獲取,尤其是地理位置信息,被32個SDK獲取。 其中每日優鮮App使用的支付寶SDK獲取了用戶的手機號;Soul和陌陌App使用的聲網SDK、中國銀行手機銀行和蘇寧易購App使用的訊飛SDK獲取了用戶手機對環境或通話的錄音。 值得注意的是,釘釘、鐵路12306、閑魚等App使用的支付寶SDK,派派、陌陌等App使用的聲網SDK,百度貼吧App使用的百度圖三:收集用戶個人信息的SDK5昊天SDK以及鐵路12306App使用的梆梆安全SDK都收集了傳感器信息。很多情況下,步數、心跳等與健康相關的個人信息就是通過“傳感器”權限收集。
10、 上述SDK中,一些收集行為與其功能之間存在較易理解的相關性。 比如陌陌App使用的訊飛SDK會“對環境或通話錄音”,從而實現語音聊天功能;同程旅游App為了基于用戶所在位置進行精準推送,會使用高德地圖SDK獲取“地理位置”信息。 但與此同時,也有一些SDK收集的個人信息難以直接看出與其功能之間的聯系。 以獲取“電話號碼”為例,支付寶屬于支付類SDK,獲取手機號的行為與其支付功能并無直接關系,但在嵌入每日優鮮App時,它卻獲取了用戶的電話號碼,該行為的正當性存疑。 值得注意的是,這種獲取電話號碼的行為只發生在每日優鮮App中,嵌入其他App時,支付寶SDK并未被檢測出獲取用戶電話號碼的情況,但
11、并不排除是因為時間或其他客觀因素限制未能觸發。 假設SDK收集這些信息都有對應的App功能,App作為直接跟用戶交互的一方,是否做到了向用戶告知?我們一一查閱了與收集上述列表中用戶個人信息的SDK相對應的所有App的隱私政策。 我們發現,百度、百度貼吧App嵌入了讀取“手機視頻和相冊”的SDK,而且他們都在隱私政策里明確了收集范圍和目的。 比如百度在隱私政策里寫道:“為了給您提供拍照圖像搜索、二維碼識別、拍照翻譯等服務,我們會向系統申請使用相機權限。 蘇寧易購App嵌入的訊飛SDK,可以實現“對環境或通話錄音”。蘇寧易購隱私政策對此解釋說,這是直播錄制功能所需?!爱斈x擇我們的相關應用進行直播
12、錄制時,我們需要開啟您所使用設備的攝像頭和麥克風使用權限,以完成完整的直播錄制及錄制過程中附帶的功能,并在首次開啟權限時以彈窗告知形式征詢您的同意”。 不過,也有不少App并沒有做到收集前告知。6 我們測評發現,中國銀行手機銀行App的訊飛SDK可以“對環境或通話錄音”,卻沒有提供任何隱私政策;宜人財富App和宜人貸借款App使用的TalkingDataSDK獲取了用戶的地理位置,但兩款App的隱私政策都沒有提及會收集位置信息。也就是說,用戶的隱私很可能在不知情的情況下被SDK收集了。3.必要性分析 6月1日,全國信息安全標準化技術委員會發布網絡安全實踐指南移動互聯網應用基本業務功能必要信息規
13、范(下稱規范),針對16類App常用的基本業務功能界定了必要信息的范圍。 由于SDK在實際行為中能夠獲取的權限和收集的信息通常會受到宿主App的限制,因此,理論上SDK收集用戶個人信息也應達到 規范的要求。因此,下表列出了113個SDK超出規范界定的必要信息之外收集的其他用戶個人信息。 需要特別強調的是,獲取其他信息并不代表違規,根據相關法律法規的要求,獲取這些信息前需要彈窗詢問用戶是否同意,如果7表一:收集其他信息的SDK以及相應App用戶點擊“不同意”,也不能影響App核心功能的使用。 雖然國內對于第三方SDK超出必要范圍收集其他個人信息尚沒有法律法規條文的規定,但依照“知情同意”的原則,
14、本報告認為,從用戶的角度來說,即使這些信息并不是App本身需要,而是SDK需要收集的,也應該進行彈窗獲取用戶同意,以保障用戶知情同意的權利。 (二)SDK集中分析 1.系統權限 綜合考慮60款App以及市面上使用最多的SDK,我們選出了15個SDK進行深度分析。除了官方文檔沒有說明權限的五個SDK外,其余10個SDK中,極光數據分析SDK需要申請的系統權限最多,為148圖四:10個SDK申請的系統權限個數項;百度地圖SDK其次,需要申請10項,其他8個SDK都是10項系統權限以下。 接下來我們把SDK申請獲得的系統權限(通常在“設置-權限管理”功能顯示),和SDK代碼可以獲取的信息(通過逆向分
15、析、抓包、函數掛鉤等技術手段分析)做了對比,如果后者范圍超過前者,就說明該SDK可能存在隱瞞收集用戶個人信息的情況。 10個在官方文檔里提供了申請權限信息的SDK中,三成SDK能夠通過代碼收集的用戶個人信息都超出了聲明的系統權限,包括Ping+、TalkingData、友盟,收集的個人信息不乏支付卡信息、地理位置等個人敏感信息。9圖五:SDK申請系統權限v.s.SDK有能力收集的個人信息2.向服務器上送信息 經分析,SDK明文上傳的內容大部分是設備信息、網絡信息和手機狀態信息,比如操作系統版本、Wi-Fi信息等。但也有少數SDK會向自己的服務器回傳未經加密的用戶個人信息甚至個人敏感信息。 這里
16、的未經加密可能存在兩種情況,一種是未對通信渠道加密(如采用http傳輸),另一種是未對傳輸內容加密(如使用https傳輸但未對數據本身加密) 比如Ping+SDK、TalkingDataSDK、攜程SDK、百度地圖SDK、會向服務器傳輸未經加密的位置信息。這些個人信息在App開發者、單個或多個第三方之間流動,增加了個人信息泄露、濫用的風險。101. 使用最廣泛的SDK多來自頭部互聯網公司 被測的60款常用App平均每個使用19.3個SDK,其中使用最廣泛的是微信SDK,屬于“屬于綜合類SDK”。測評結果顯示,使用最廣泛的SDK基本都來自頭部互聯網公司,比如騰訊、小米、華為、阿里、Faceboo
17、k,涉及的功能種類有社交分享、第三方登錄、消息推送、支付等。在實際使用中,消息推送類SDK被調用的次數最多。2. 多個SDK獲取個人敏感信息,App卻未告知用戶 60款App共使用了113個不同的SDK。這些SDK收集的信息中,手機設備信息和網絡信息被收集得最為頻繁。在用戶個人信息方面,支付寶SDK獲取了用戶的手機號,TalkingDataSDK可以獲取用戶的地理位置,但都未在對應App的隱私政策里明確告知,且這些信息與實現SDK的功能有何關系較難看出。 此外,中國銀行手機銀行App的訊飛SDK可以“對環境或通話錄音”,卻沒有提供任何隱私政策;宜人財富App和宜人貸借款App使用的Talkin
18、gDataSDK獲取了用戶的地理位置,但兩款App的隱私政策都沒有提及會收集位置信息。3. 有SDK或存在隱瞞收集用戶個人信息的情況我們對15個市場上的主流SDK進行深入分析后發現, Ping+、TalkingData、友盟等三個SDK能夠通過代碼收集的用戶個人信息都超出了其官方文檔所聲明的系統權限,其中不乏支付卡信息、地理位置、傳感器數據等個人敏感信息。 此外,還有少數SDK會向自己的服務器傳輸用戶個人信息。比如Ping+、TalkingData、攜程、百度地圖等四個SDK會傳輸未經加密的位置信息。這種行為增加了個人信息泄露、濫用的風險。三、結論11(1)本次測評主要考察60款常用App所使用的以及市面上的主流SDK在固定時間內收集用戶個人信息的行為,不保證覆蓋SDK及其所有行為。(2)采樣時間截止于2019年4月。我們注意到各個企業的隱私政策、App的版本和功能可能不時調整,因此本此抽樣僅對截止日的樣本負責。(3)南都個人信息保護研究中心保留最終解釋權。發布方: 南都個人信息保護研究中心技術支持:中國金融認證中心(CFCA) 2019年,在個人信息保護領域,什么問題最值得關注?歡迎你與我們分享你的觀點。 你可以通過以下方式與我們聯系:ppa-,或者關注我們的微信公眾號【隱私護衛隊】直接留言。四、聲明與保留