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