SDK的信息安全合规浅议

2022-04-13

作者:秦英、刘玉珠

2020年8月1日,中国互联网金融协会发布《关于防范第三方SDK风险隐患的提示》,指出SDK存在出一些需引起重视的问题,主要包括:隐私政策中未逐一列出第三方SDK收集使用个人信息的目的、方式、范围等内容;第三方SDK使用权限超出用户授权范围;第三方SDK超出业务功能实际需要被高频调用等。


2020年11月17日,网信中国官方微信公众号发布“关于35款App存在个人信息收集使用问题的通告”。其中至少有19款APP,因SDK原因被通报整改,主要原因是,APP未逐一列出SDK收集使用个人信息的目的、类型。


2022年2月18日,“工信微报”发布第三方检测机构对APP进行检查的结果,其中至少13款第三方软件开发工具包(SDK)存在违规收集用户设备信息的行为。这是首次将SDK作为与APP并列的项目进行通报。由此可见,SDK收集使用个人信息问题已进入监管部门的视野,APP提供者与SDK提供者均应注意数据合规问题。


本文将从SDK的性质出发,介绍SDK的性质,接入SDK后APP可能存在的安全问题,APP提供者可以采取的安全措施,SDK提供者可以采取的安全措施,以确保合法合规。


一、什么是SDK


SDK全称是Software Development Kit,其中文名称为“软件开发工具包”,全国信息安全标准化技术委员会于2020年11月27日发布的《网络安全标准实践指南—移动互联网应用程序(App)使用软件开发工具包(SDK)安全指引》(以下简称“《SDK安全指南》”)中对SDK有明确的定义,即“协助软件开发的相关二进制文件、文档、范例和工具的集合,简称SDK。本指南中的SDK,是指对实现App 特定功能的代码进行封装,向外提供简捷的调用接口的二进制文件。”简言之,SDK是一个已经具有特定功能的工具包,为工具包开一个接口,嵌入APP的代码中,APP可以调用SDK的功能,减少APP的开发成本。因此,几乎每个APP中都或多或少嵌入了SDK。



上图来源于《SDK安全指南》


提到SDK,很容易联想到与之关联的另一技术概念——API。在咨询项目当中,我们遇到过有人误以为API与SDK含义相同。实际上,API是“应用程序接口”的简称,上图中的“SDK接口”即为API,通俗理解就是,APP与SDK链接就是通过API完成的。


二、SDK的常见信息安全问题


如上文所述,单独SDK的信息安全问题已受到监管部门的关注,这是必要的。因为,一款SDK可能会被多款APP集成,一旦SDK出现安全问题,将会影响多款APP及众多用户,易对用户的数据及个人信息造成威胁。根据《SDK安全指南》描述,APP集成SDK可能面临三类常见安全问题:


一是SDK自身安全漏洞,即若SDK开发者在开发时仅关注SDK的功能实现,可能忽视SDK的信息安全性,导致SDK本身存在安全漏洞,如源文件安全、内部数据交互安全、通信数据传输安全、本地数据存储安全、防御检测。


二是SDK恶意行为,即嵌入APP中的SDK自身产生的恶意行为,将破坏APP的安全性,对用户权益、数据造成严重威胁。并且,有些SDK嵌入APP初期不具有恶意行为,随着后续的更新实施恶意行为。常见的恶意行为有流量劫持、资费消耗、隐私窃取、静默下载安装、广告刷量、恶意广告、勒索、挖矿、远程控制等。


三是SDK收集使用个人信息问题,即APP使用存在收集使用个人信息问题的SDK时,APP用户个人信息构成安全危险。如SDK超范围收集个人信息,未说明APP嵌入SDK收集使用个人信息的目的、类型、方式,SDK未经用户同意收集、使用或对外提供个人信息,APP对嵌入SDK的安全管理监督不足。


三、关于SDK安全监管的相关规定


SDK安全监管的相关规定分为SDK提供者必须遵守的强制性规定以及SDK提供者可以参考的指引或指南。


毋庸置疑,对于SDK的监管必然适用网络数据安全领域的“三驾马车”——《网络安全法》《数据安全法》《个人信息保护法》,这些属于SDK必须遵守的强制性规定。


全国信息安全标准化技术委员会(以下简称“信安标委”)发布的《SDK安全指南》属于技术文件,旨在提供标准化实践指引,供SDK提供者及APP提供者参考。此外,2021年4月19日信安标委发布了国家标准《信息安全技术 移动互联网应用程序(APP)SDK安全指南》征求意见稿,其中包含了《SDK安全指南》的诸多内容,即信安标委拟将《SDK安全指南》的内容上升为国家标准。


目前尚未出台专门针对SDK安全合规的强制性文件,均为参考性文件,但是SDK的提供者可以根据参考性文件,达到强制性规定所要求的标准。下文中,笔者将结合目前已生效的《SDK安全指南》,梳理APP提供者和SDK提供者可以采取的安全措施。


四、APP嵌入SDK时可采取的安全措施


因SDK可能存在自身安全漏洞、恶意行为、收集使用个人信息问题等,APP提供者在APP中嵌入SDK时,若不采取一定的安全措施,将会给APP用户带来安全风险。那么,APP提供者在APP中嵌入SDK时,为了用户的数据及个人信息安全,应采取一定的安全措施。根据《SDK安全指南》,笔者梳理出以下几种安全措施。


1.来源安全性评估——如评估SDK提供者的基本信息、沟通反馈渠道、安全能力,评估SDK隐私政策链接地址,评估SDK的基本功能、版本号等。


2.代码安全性评估——如评估是否存在已知的恶意代码、已知的安全漏洞,是否申请敏感权限(如短信、通信录、摄像头、麦克风等),是否嵌入其他的SDK等。


3.行为安全性评估——如评估调用的敏感权限、目的和频率,评估收集的个人信息类型、目的和频率,评估传输数据是否加密,评估是否存在单独收集用户个人信息的界面等。


4.SDK的热更新内容校验——SDK的热更新是指,在不重新下载和安装App 的情况下,通过动态加载的方式更新App中的代码或资源文件。因此若APP集成的SDK具有热更新功能,APP需对其热更新内容进行核验,避免SDK借助热更新实施恶意行为。


5.向用户充分告知的义务——APP提供者应向用户告知所接入的涉及个人信息收集的SDK的名称,SDK收集的个人信息类型、目的和方式,申请的敏感权限、申请目的等,并征得用户同意。


6.与SDK提供者签订协议,约定明确——为了权责分明,APP提供者需与SDK提供者签订协议,明确SDK收集的个人信息类型、申请的敏感权限、个人信息的收集目的、保存期限、超期处理方式等,明确双方在个人信息保护方面分别应采取的措施、承担的责任和义务等。当前述内容发生重大变更是,应重新达成协议。


7.持续动态监测、定期安全评估、及时移除已停用SDK代码。


五、sdk提供者可采取的安全措施


APP提供者在集成SDK时应进行安全性和可靠性评估,但SDK提供者也应通过一定的措施确保SDK的安全,《SDK安全指南》中列出以下安全措施,供SDK提供者参考。


SDK提供者可采取的措施具体内容
遵守原则收集使用个人信息应遵循合理、最小、必要原则。收集个人信息的频率应是实现自身业务功能所必需的最低频率。
模块独立对功能独立的模块,应进行拆分,或提供单独的开启关闭选项,不应强制捆绑无关功能并以此为由申请无关权限或收集无关的个人信息。
安全评估SDK提供者可以通过多种方式进行安全评估,如完整性校验、恶意代码检测等,上线后进行持续和定期检测与评估。
告知义务向APP提供者明示SDK热更新机制及SDK的相关信息,如SDK提供者基本信息、沟通反映渠道等。
用户同意作为个人信息共同控制者或独立控制者收集使用用户个人信息的SDK,单独向用户告知收集使用个人信息的行为并征得用户同意。
安全存储优先在本地的App私有存储空间内存储和处理个人信息。在本地存储和处理个人敏感信息,对个人敏感信息内容进行加密。不留存不可变更的设备唯一标识符。APP停止接入SDK后,及时删除从该App共享或收集的个人信息或做匿名化处理。
完善协议SDK提供者宜完善与APP提供者的合作协议,明确收集使用的个人信息类型、使用目的、保存期限、超期处理方式等。


根据我们数据合规的实务经验,几乎所有APP均需接入SDK以实现特定功能,因此,SDK的信息安全合规不仅是SDK开发者需要关注的问题,亦是APP运营者应注意的问题,APP运营者在保证APP自身安全合规的同时,亦应对接入的SDK进行监管,采取安全措施,以行稳致远。


特别声明


本文仅供参考,不构成律师的正式意见,不应被看作是采取任何法律行动或进行法律决策的依据。文中所述仅代表作者个人观点,并不反映作者所服务的任何机构或客户的立场。

专业领域