2021年上半年網(wǎng)信辦,、工信部等部門總共發(fā)布了近10批次關(guān)于侵害用戶權(quán)益App名單的通報(bào)。App合法合規(guī)收集個(gè)人信息成為了前提條件,,但是,,隨著低代碼概念的興起,App的研發(fā)越來越趨向于結(jié)構(gòu)化,、模塊化,、低耦合化。現(xiàn)在App的研發(fā)工作更像是搭積木,,使用現(xiàn)成的SDK,、開源框架、開源代碼,,像搭積木一樣搭出一個(gè)App,。不難看出,App中的很多代碼并不是自己研發(fā)的了,,而是由無數(shù)第三方形成單一業(yè)務(wù)功能模塊,,自己將這些模塊整合起來實(shí)現(xiàn)自己的業(yè)務(wù)功能。通過模塊整合方式開發(fā)的App帶來的最大問題就是無法控制各個(gè)模塊對(duì)個(gè)人信息收集的行為,。
SDK對(duì)App主體來說就是相對(duì)獨(dú)立的,,SDK的接口一旦初始化后,理論上App主體就無法控制它了,,SDK能夠通過多線程等技術(shù)方式在后臺(tái)持續(xù)運(yùn)行,,從而給App主體帶來很大的合規(guī)性風(fēng)險(xiǎn)。App開發(fā)者可以通過以下三個(gè)方面來提高自己的合規(guī)技術(shù)能力,。
1,、對(duì)開源框架,、開源代碼進(jìn)行代碼審查
代碼審查屬于靜態(tài)檢測技術(shù)的一種,合規(guī)性代碼審查不必使用專業(yè)的代碼審查工具,,只需擁有對(duì)應(yīng)模塊的完整源代碼,,使用普通的文本檢索工具,對(duì)所有源代碼進(jìn)行文本檢索即可,。
這項(xiàng)代碼審查工作的關(guān)鍵在于檢索關(guān)鍵詞的豐富性,。檢索關(guān)鍵詞包括:getDeviceId、getSimSerialNumber,、getMacAddress,、getLongitude、getLatitude等與個(gè)人信息相關(guān)的API,,通過關(guān)鍵詞檢索的方式檢測出開源框架,、開源源代碼中是否可能存在獲取個(gè)人信息的代碼。如果檢測到源代碼中包含這些關(guān)鍵詞信息,,還需要對(duì)包含代碼進(jìn)行業(yè)務(wù)流程的梳理,,查看這段代碼是否被真正運(yùn)行,而非不運(yùn)行的測試代碼,、臨時(shí)代碼或冗余代碼,,最后再根據(jù)實(shí)際的業(yè)務(wù)場景確定這個(gè)個(gè)人信息的收集是否為違法違規(guī)行為。
通過靜態(tài)代碼合規(guī)性審查的方式,,在App開發(fā)過程中集成開源框架,、開源代碼之前,判斷出待集成的開源框架,、開源代碼是否存在合規(guī)性風(fēng)險(xiǎn),,從而達(dá)到,讓App合規(guī)的目的,。
2,、對(duì)SDK進(jìn)行黑盒安全性行為檢測
上面一種方法是能夠?qū)τ性创a的模塊進(jìn)行審查,對(duì)于沒有源代碼的模塊,,比如SDK,,代碼審查技術(shù)就難以施展了。
SDK一般來說是已封裝完成的開發(fā)工具包,,它能通過API的形式給App主體提供相應(yīng)的功能(比如導(dǎo)航等),。SDK能夠給App研發(fā)工作帶來很大的便利性,以Android為例,,現(xiàn)在比較成熟和知名的SDK包括推送,、導(dǎo)航、數(shù)據(jù)統(tǒng)計(jì)分析等,。
SDK是沒有源代碼的,,所以無法采用代碼審查的方式進(jìn)行合規(guī)性審查,。目前最好的合規(guī)性審查的方式是將SDK打包為App,通過動(dòng)態(tài)行為檢測的技術(shù)對(duì)已完成打包的App進(jìn)行檢測,,間接達(dá)到SDK檢測的目的,。這個(gè)App的殼需要完成對(duì)SDK所有API的調(diào)用,通過遍歷所有的API觸發(fā)SDK中所有的行為,,讓動(dòng)態(tài)行為檢測系統(tǒng)能夠最大化的發(fā)現(xiàn)SDK的行為并記錄下來,,為進(jìn)行合規(guī)性判定提供技術(shù)支撐。
通過動(dòng)態(tài)行為檢測技術(shù)完成對(duì)SDK的檢測,,研判出SDK的合規(guī)安全性,,App在集成SDK功能的時(shí)候進(jìn)行判定,不要集成有風(fēng)險(xiǎn)的SDK,,讓App自身的合規(guī)性問題得到提升,。
3、采用動(dòng)態(tài)行為攔截技術(shù)
動(dòng)態(tài)行為攔截技術(shù)是目前已知的最能夠解決App合規(guī)性問題的一種技術(shù),。它能實(shí)現(xiàn),,運(yùn)行時(shí)對(duì)App中未知權(quán)限使用的攔截和App中未知個(gè)人信息收集行為的攔截,攔截率為100%,。前兩項(xiàng)技術(shù)主要是通過技術(shù)審查的方式,,完成App收集個(gè)人信息的合規(guī)性提升,此項(xiàng)技術(shù)的最大特點(diǎn)是通過攔截的方式完成合規(guī)性能力提升,。
應(yīng)用了動(dòng)態(tài)行為攔截技術(shù)以后,對(duì)開源模塊和SDK的集成之前,,無須進(jìn)行繁瑣的代碼審查和檢測,,通過在觸發(fā)業(yè)務(wù)場景之前進(jìn)行動(dòng)態(tài)的策略配置,實(shí)現(xiàn)在業(yè)務(wù)場景過程中收集個(gè)人信息行為的可控,。比如:購物下單業(yè)務(wù)場景中,,按照最小必要的原則,只需要收集手機(jī)號(hào),、收貨人姓名,、收貨地址,從技術(shù)層面,,為了方便用戶輸入地址信息,,可以采用獲取GPS信息來幫助用戶填寫地址,此場景就需要用到1次GPS定位功能,。我們可以在購物下單業(yè)務(wù)場景進(jìn)入時(shí),,采用配置策略的方式,實(shí)現(xiàn)業(yè)務(wù)場景只能獲取1次GPS信息,,這個(gè)業(yè)務(wù)場景下,,無論是SDK還是其他代碼,,均不能實(shí)現(xiàn)對(duì)其他個(gè)人信息的獲取(如IMEI等),,從而實(shí)現(xiàn)了單一業(yè)務(wù)場景只獲取對(duì)應(yīng)的最小個(gè)人信息的目的,,達(dá)到對(duì)個(gè)人信息合法合規(guī)的收集。
最后,,App合規(guī)技術(shù)能力主要體現(xiàn)為,,集成之前的事前審查和運(yùn)行時(shí)刻的動(dòng)態(tài)行為攔截。事前審查除了技術(shù)需要完善以外,,還需要配合管理制度才能很好地發(fā)揮審查的作用,。運(yùn)行時(shí)刻的動(dòng)態(tài)行為攔截技術(shù),更能夠從業(yè)務(wù)場景的角度來規(guī)劃個(gè)人信息的收集,,更有效和可控的掌握個(gè)人信息收集的時(shí)機(jī),、頻率,能夠讓App合理合法的收集個(gè)人信息,。