App已深入到用戶(hù)的生活中,各類(lèi)App應(yīng)用程序迅速普及,在促進(jìn)經(jīng)濟(jì)社會(huì)發(fā)展、服務(wù)民生等方面發(fā)揮了重要作用。隨著市場(chǎng)的快速迭代,技術(shù)的不斷創(chuàng)新,App開(kāi)發(fā)者為了提升產(chǎn)品研發(fā)效率、降低成本,經(jīng)常嵌入第三方SDK(Software Development Kit ,軟件開(kāi)發(fā)工具包)以快速實(shí)現(xiàn)某些基礎(chǔ)、特定的功能。
通付盾北斗團(tuán)隊(duì)對(duì)市面上的SDK做了深度分析與統(tǒng)計(jì),SDK主要類(lèi)型有以下幾類(lèi):框架類(lèi)、廣告類(lèi)、推送類(lèi)、統(tǒng)計(jì)類(lèi)、地圖類(lèi)、第三方登陸類(lèi)、社交類(lèi)、支付類(lèi)、客服類(lèi)、測(cè)試類(lèi)、安全風(fēng)控類(lèi)、Crash監(jiān)控類(lèi)、人臉識(shí)別類(lèi)、語(yǔ)音識(shí)別類(lèi)、短信驗(yàn)證類(lèi)、基礎(chǔ)功能類(lèi)等。各類(lèi)App平均使用第三方SDK的數(shù)量在10個(gè)以上。例如,我們檢測(cè)了某款A(yù)pp,其用到的第三方SDK多達(dá)20多款。具體情況見(jiàn)以下圖1。
圖1 某App使用的第三方SDK情況
不難看出,SDK依附于App已滲入到各個(gè)行業(yè)的大量App中,SDK的生命周期取決于App的生命周期。SDK與App的關(guān)系可見(jiàn)圖2。
圖2 SDK使用場(chǎng)景示意圖
SDK本身不具備運(yùn)行能力,必須等待宿主App調(diào)用才能被執(zhí)行,完成特定功能。
第三方SDK無(wú)疑給App開(kāi)發(fā)者帶來(lái)了極大便利,但與此同時(shí)SDK的安全與合規(guī)問(wèn)題也逐漸漏出水面,SDK收集個(gè)人信息和安全問(wèn)題也已得到了各方的關(guān)注。2019 年以來(lái)各監(jiān)管部門(mén)均將SDK違法違規(guī)收集個(gè)人信息作為重點(diǎn)審查對(duì)象之一。涉及SDK安全與合規(guī)的主要標(biāo)準(zhǔn)、規(guī)范見(jiàn)下表1。
《GB/T 35273-2020 信息安全技術(shù)個(gè)人信息安全規(guī)范》
《JR/T 0171-2020 個(gè)人金融信息保護(hù)技術(shù)規(guī)范》
《網(wǎng)絡(luò)安全標(biāo)準(zhǔn)實(shí)踐指南—移 動(dòng)互聯(lián)網(wǎng)應(yīng)用程序(App)收集使用個(gè)人信息自評(píng)估指南》
《移動(dòng)應(yīng)用軟件SDK安全技術(shù)要求和測(cè)試方法》
《移動(dòng)應(yīng)用SDK安全指南》
《網(wǎng)絡(luò)安全標(biāo)準(zhǔn)實(shí)踐指南移動(dòng)互聯(lián)網(wǎng)應(yīng)用程序(App)中的第三方軟件開(kāi)發(fā)工具包(SDK) 安全指引》
《常見(jiàn)類(lèi)型移動(dòng)互聯(lián)網(wǎng)應(yīng)用程序必要個(gè)人信息范圍規(guī)定》
《信息安全技術(shù) 移動(dòng)互聯(lián)網(wǎng)應(yīng)用程序(App)SDK安全指南》
表1涉及SDK安全與合規(guī)的主要標(biāo)準(zhǔn)、規(guī)范
近期RSAC2021落下帷幕,RSAC沙盒大賽冠軍是一家專(zhuān)注于代碼安全的廠(chǎng)商,這說(shuō)明供應(yīng)鏈安全開(kāi)始成為一個(gè)全球關(guān)注的熱門(mén)新興領(lǐng)域,這當(dāng)然和美國(guó)供應(yīng)鏈安全事件的大規(guī)模爆發(fā)是分不開(kāi)的,同時(shí)從整個(gè)安全架構(gòu)層面上來(lái)分析,供應(yīng)鏈確實(shí)是目前安全最脆弱一環(huán),從今年的HW數(shù)據(jù)來(lái)看,有30%左右的攻擊都是來(lái)自供應(yīng)鏈,而供應(yīng)鏈安全里最重要的一環(huán)就是源代碼的安全治理。
下文從SDK自動(dòng)化檢測(cè),以安全性與合規(guī)性?xún)蓚€(gè)層面重點(diǎn)展開(kāi)描述,簡(jiǎn)述相關(guān)檢測(cè)原理。
SDK安全檢測(cè)
被檢測(cè)的SDK可以單獨(dú)以jar、aar、zip、so等形式存在,也可以集成到具體應(yīng)用中,在掌握全面的移動(dòng)安全風(fēng)險(xiǎn)信息前提下,對(duì)SDK進(jìn)行檢測(cè),檢測(cè)流程主要分為待檢測(cè)包的預(yù)處理、特征掃描、數(shù)據(jù)處理三大步驟。
首先,對(duì)應(yīng)用程序安裝包或者SDK包進(jìn)行反編譯,得到代碼文件;
圖3某SDK反編譯后部分代碼
然后,對(duì)反編譯后的代碼文件進(jìn)行特征掃描,查找相應(yīng)的符號(hào)特征信息,并與國(guó)家漏洞信息庫(kù)進(jìn)行完整的特征匹配,記錄漏洞的特征信息、代碼位置及風(fēng)險(xiǎn)信息;
最后,對(duì)特征掃描生成的漏洞信息數(shù)據(jù)集整合處理并生成檢測(cè)報(bào)告,報(bào)告中可展示具體的安全風(fēng)險(xiǎn)問(wèn)題、漏洞位置、修復(fù)建議等。
圖4 SDK安全檢測(cè)流程
SDK在開(kāi)發(fā)時(shí)聚焦于功能實(shí)現(xiàn)而忽視了安全性,導(dǎo)致SDK本身存在安全漏洞。這些漏洞可被惡意攻擊者利用,對(duì)嵌入該SDK的大量App及其最終用戶(hù)的數(shù)據(jù)及隱私安全造成損害。我們對(duì)市場(chǎng)上主流App及SDK做了檢測(cè)分析,第三方SDK相關(guān)的漏洞安全包括:編碼規(guī)范檢測(cè)、發(fā)布規(guī)范檢測(cè)、代碼安全檢測(cè)、環(huán)境安全審計(jì)檢測(cè)、組件安全檢測(cè)、數(shù)據(jù)安全檢測(cè)、安全漏洞檢測(cè)7個(gè)層級(jí),60多項(xiàng)潛在的安全風(fēng)險(xiǎn)。
圖5 某第三方SDK組件漏洞
App中嵌入的第三方SDK越多,安全漏洞涉及的范圍就會(huì)越廣,App開(kāi)發(fā)者應(yīng)當(dāng)謹(jǐn)慎使用第三方SDK。值得一提的是:存在一類(lèi)SDK利用動(dòng)態(tài)加載技術(shù)實(shí)現(xiàn)遠(yuǎn)程控制惡意代碼執(zhí)行,因?yàn)閻阂獯a在本地不存在,執(zhí)行時(shí)才被下載到本地執(zhí)行,逃脫了殺毒類(lèi)軟件的掃描,隱蔽性非常強(qiáng),對(duì)最終用戶(hù)造成了極大傷害。
SDK合規(guī)檢測(cè)
一些常見(jiàn)的SDK,如支付類(lèi)SDK、導(dǎo)航類(lèi)SDK,本身的功能就與個(gè)人信息有密切關(guān)系,SDK常見(jiàn)搜集的信息包括手機(jī)設(shè)備信息(如IMEI、IMSI等設(shè)備唯一識(shí)別碼)、網(wǎng)絡(luò)信息(如IP地址、MAC地址、Wi-Fi熱點(diǎn)等)、手機(jī)狀態(tài)信息(如已安裝/運(yùn)行中的應(yīng)用信息)、用戶(hù)行為信息(如鎖屏、安裝、升級(jí)、卸載應(yīng)用軟件)、用戶(hù)個(gè)人信息(如電話(huà)號(hào)碼、地理位置、通話(huà)記錄)等,其搜集的信息范圍很廣泛。SDK作為App的一部分,App需要對(duì)SDK的行為承擔(dān)法律責(zé)任,《數(shù)據(jù)安全管理辦法(征求意見(jiàn)稿)》、《個(gè)人信息安全規(guī)范》、《移動(dòng)互聯(lián)網(wǎng)應(yīng)用程序(App)收集使用個(gè)人信息自評(píng)估指南》明確指出App應(yīng)如何處理與SDK的關(guān)系。
SDK經(jīng)常在App背后收集用戶(hù)個(gè)人信息,這一類(lèi)行為難以被發(fā)現(xiàn),需要依托自動(dòng)化動(dòng)態(tài)類(lèi)的檢測(cè)幫助識(shí)別,SDK依托于App運(yùn)行,因此可以對(duì)App直接進(jìn)行檢測(cè),找出SDK運(yùn)行部分即可。
主要思路:定制化ROM及真機(jī)設(shè)備,在定制化ROM中加入探針和監(jiān)聽(tīng)器,將App PUSH到定制設(shè)備中運(yùn)行,通過(guò)腳本控制App在定制化ROM自動(dòng)運(yùn)行,遍歷App全部功能,定制化ROM中的探針與監(jiān)聽(tīng)器記錄整個(gè)App運(yùn)行過(guò)程中產(chǎn)生的數(shù)據(jù)、權(quán)限申請(qǐng)行為、數(shù)據(jù)采集行為等,依據(jù)權(quán)限檢測(cè)標(biāo)準(zhǔn),主動(dòng)發(fā)現(xiàn)App及SDK未經(jīng)授權(quán)擅自收集、過(guò)度和非必要收集、頻繁索權(quán)和強(qiáng)制收集、私自共享個(gè)人信息給第三方等違規(guī)問(wèn)題。定制化ROM+動(dòng)態(tài)檢測(cè)可準(zhǔn)確地找出SDK中存在的敏感權(quán)限調(diào)用及過(guò)度收集個(gè)人信息行為。
圖6動(dòng)態(tài)檢測(cè)分析流程示意
下面提供了一組具體實(shí)現(xiàn):
分析第三方SDK信息。通過(guò)逆向工具分析應(yīng)用內(nèi)smali文件、AndroidManifest.xml等關(guān)鍵信息,分析并獲取應(yīng)用包含的第三方SDK信息,如下圖7
圖7 某應(yīng)用內(nèi)包含的SDK列表
通過(guò)定制化ROM+動(dòng)態(tài)檢測(cè)收集運(yùn)行時(shí)的權(quán)限調(diào)用情況、記錄調(diào)用點(diǎn)、記錄個(gè)人信息采集情況及其他運(yùn)行數(shù)據(jù)。在權(quán)限調(diào)用事件分析基礎(chǔ)上,對(duì)檢測(cè)過(guò)程中權(quán)限調(diào)用事件與SDK進(jìn)行匹配,生成關(guān)聯(lián)SDK的調(diào)用分析數(shù)據(jù),可以檢測(cè)到具體權(quán)限調(diào)用時(shí)間點(diǎn)、權(quán)限申請(qǐng)位置、權(quán)限申請(qǐng)目的等信息。如下圖8和圖9。
圖8 運(yùn)行時(shí)權(quán)限調(diào)用事件列表
圖9 某SDK在應(yīng)用運(yùn)行時(shí)權(quán)限調(diào)用情況
從近期的安全事件中以及前期監(jiān)管通報(bào)的案例中能夠看到,多起案例均是App集成的SDK搜集個(gè)人信息,但沒(méi)有在隱私政策提及SDK收集信息的動(dòng)作,最終導(dǎo)致監(jiān)管通報(bào)批評(píng),造成不良輿論,甚至App被直接下架,對(duì)業(yè)務(wù)造成影響。
通付盾北斗團(tuán)隊(duì)?wèi){借自身在移動(dòng)安全領(lǐng)域與隱私保護(hù)領(lǐng)域研發(fā)服務(wù)實(shí)力,已將SDK安全與合規(guī)檢測(cè)完全云服務(wù)化,通付盾云SDK檢測(cè)服務(wù)依托于先進(jìn)的動(dòng)靜雙結(jié)合檢測(cè)引擎技術(shù),結(jié)合云真機(jī)檢測(cè)平臺(tái),自動(dòng)收集與分析市場(chǎng)上出現(xiàn)的SDK,依據(jù)檢測(cè)標(biāo)準(zhǔn),對(duì)各類(lèi)App及SDK進(jìn)行全面檢測(cè),提供專(zhuān)業(yè)的檢測(cè)報(bào)告和修改建議。
團(tuán)隊(duì)介紹
通付盾北斗團(tuán)隊(duì)(負(fù)責(zé)安全合規(guī)產(chǎn)品)于2013年成立,8年來(lái)專(zhuān)注于移動(dòng)應(yīng)用全生命周期的安全研究,積累了豐富的移動(dòng)應(yīng)用安全實(shí)戰(zhàn)經(jīng)驗(yàn),不斷保持技術(shù)研發(fā)與創(chuàng)新,致力于為企業(yè)提供移動(dòng)應(yīng)用全生命周期安全工程解決方案。自研了符號(hào)執(zhí)行、動(dòng)態(tài)沙箱、大數(shù)據(jù)分析、VMP虛擬機(jī)保護(hù)、iPA動(dòng)態(tài)殼保護(hù)等多個(gè)核心技術(shù)。團(tuán)隊(duì)所研發(fā)產(chǎn)品已服務(wù)于上千家各行業(yè)客戶(hù),深入到政府、軍工、能源、金融、運(yùn)營(yíng)商、教育、醫(yī)療、傳媒、交通、互聯(lián)網(wǎng)等行業(yè),為數(shù)十億級(jí)移動(dòng)終端提供了移動(dòng)應(yīng)用安全保障。其中移動(dòng)應(yīng)用安全合規(guī)檢測(cè)成功服務(wù)國(guó)測(cè)、軍測(cè)、公安和工信部,實(shí)現(xiàn)國(guó)家級(jí)測(cè)評(píng)機(jī)構(gòu)全覆蓋。
“技術(shù)、安全、創(chuàng)新”
(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來(lái)自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁(yè)或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書(shū)面權(quán)利通知或不實(shí)情況說(shuō)明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開(kāi)相關(guān)鏈接。 )