软件开发工具包(SDK)是对实现 APP特定功能的代码进行封装,向外提供简捷的调用接口的二进制文件。通常情况下,SDK是由第三方提供的在APP中提供某种功能或服务的插件。例如外卖APP需显示配送进度、广告推广、数据统计、第三方登录、网上支付等功能,均可嵌入相应SDK予以实现,无需APP一方再自行开发。因此,通过利用SDK,便捷地集成第三方服务,无疑是APP运营者降本增效的一项策略。与此同时,APP运营者也必须正视SDK可能带来的合规挑战。2022年2月18日,工信部就开始将SDK作为与 APP并列的项目进行通报。迄今为止,诸多SDK因违规收集和传输个人信息、欺骗误导用户使用产品或服务、公示信息不完整等原因被列入通报。
本篇将以APP运营者为视角,揭示APP在嵌入第三方SDK过程中存在的潜在风险,梳理需要关注的监管要点,并为APP嵌入第三方SDK提供合规指引。
01、APP嵌入第三方SDK的潜在风险
1、SDK的安全隐患
APP使用第三方SDK通常涉及APP用户、APP运营者和SDK提供方三方角色。APP运营者与SDK提供方之间多为合同关系,通过开放平台在线签署开发者服务协议来约定权利义务,而开发者服务协议很少有专门约束数据安全的规定。鉴于SDK提供方常倾向于隐藏特定功能的实现细节,使得APP运营者在进行技术检测时面临不小的挑战。因此,APP所嵌入的第三方SDK可能会潜藏以下不容忽视的安全隐患:
1.SDK自身安全漏洞。SDK在开发时聚焦于功能实现而忽视了安全性,可能导致SDK本身存在安全漏洞。这些漏洞可被恶意攻击者利用,对嵌入该SDK的大量APP及其终端用户的数据及隐私安全造成严重威胁。
2.SDK恶意行为。典型的恶意行为如流量劫持、资费消耗、隐私窃取等,这些恶意行为将破坏使用SDK的APP的安全性,对用户权益、数据等方面造成严重威胁。
3.SDK收集使用个人信息问题。如SDK可能未经用户同意收集、使用或对外提供个人信息,收集了与提供服务无关的个人信息,自动收集个人信息的频度和时机不合理等。又如SDK因无法独立展示常需通过APP告知用户,但部分SDK未完整告知个人信息收集情况,造成用户对SDK收集使用个人信息无感知。如果SDK收集使用个人信息方面存在安全问题,APP使用SDK时将对APP用户个人信息构成安全风险。
2、App运营者的法律风险
从APP运营者的角度,如与SDK提供方合作,也容易面临一系列法律风险:
1. 民事责任
APP运营者与SDK提供方可以通过合同等形式共同约定双方在防止恶意行为、安全漏洞响应、数据安全防护、个人信息安全保护方面各自应承担的责任和义务。但APP运营者原则上是保护用户个人信息安全的首要责任人,需要整体把控SDK的使用和配置,对接入的第三方SDK有审查义务。因此无论内部如何约定,SDK处理个人信息的违规行为均可能使APP运营者承担一定的民事责任。最典型的如APP内嵌的SDK侵犯用户个人信息,用户可以要求APP运营者对此承担相应民事责任。
APP运营者与SDK提供方之间可能存在共同处理、委托处理、独立处理等不同的法律关系,不同法律关系下双方的责任分配也存在不同形态。具体而言:
2.行政责任
使用违规SDK不仅会让企业面临监管部门的通报批评、限期整改、罚款,一旦触及底线,可能会导致APP被强制下架、情节严重的采取禁入措施。整改期间企业也需要投入大量的资源与资金来修复缺陷,这无疑会严重影响相关业务的收入,企业辛勤积累的商誉也会因此遭受重创。
3.刑事责任
当恶意使用SDK进行非法行为时,也会触犯刑法中的相关罪名。最常见的是通过使用广告SDK在APP中展示广告商投放的广告,进而根据用户的点击赚取收益,可能涉及非法获取计算机信息系统数据、非法控制计算机信息系统罪/提供侵入、非法控制计算机信息系统程序、工具罪。
02、APP嵌入第三方SDK的监管要点
目前国家网信部门、工业和信息化部等部门已陆续制定并发布了多项规范性文件。经梳理如下:
| 文件名称 | 发布层级/部门/文号 | 发布/实施时间 | 内容 |
| 《工业和信息化部关于进一步提升移动互联网应用服务能力的通知》 | 部门其他文件/工业和信息化部/工信部信管函〔2023〕26号 | 2023.02.06发布 2023.02.06实施 | APP一方:使用SDK前对其进行个人信息保护能力评估,通过合同等形式明确约定各方权利和义务,确保个人信息处理依法合规。 集中展示并及时更新嵌入的SDK名称、功能及其处理个人信息的规则。 共同处理用户个人信息,侵害用户权益造成损害的,依法承担相应责任。 |
| SDK一方:公开明示SDK名称、开发者、版本号、主要功能、使用说明等基本信息,以及个人信息处理规则。 SDK独立采集、传输、存储个人信息的,应当单独作出说明。 鼓励发挥SDK管理服务平台作用,引导APP开发运营者使用合规的SDK。 遵循最小必要原则,根据不同应用场景或用途,明确SDK功能和对应的个人信息收集范围,并向APP开发运营者提供功能模块及个人信息收集的配置选项,不得一揽子过度收集个人信息。 | |||
| 《关于开展信息通信服务感知提升行动的通知》 | 部门其他文件/工业和信息化部/工信部信管函〔2021〕292号 | 2021.11.01发布 2021.11.01实施 | APP一方:各相关企业应建立已收集个人信息清单和与第三方共享个人信息清单,并在APP二级菜单中展示,方便用户查询。 已收集个人信息清单应简洁、清晰列出APP(包括内嵌第三方软件工具开发包SDK)已经收集到的用户个人信息基本情况,包括信息种类、使用目的、使用场景等。 与第三方共享个人信息清单应简洁、清晰列出APP与第三方共享的用户个人信息基本情况,包括与第三方共享的个人信息种类、使用目的、使用场景和共享方式等。 |
| SDK一方:内嵌SDK在非服务所必须或无合理应用场景下,不得自启动或关联启动。 | |||
| APP与SDK:APP开发者、内嵌SDK应提供相应功能,由用户自主选择是否开启关联启动。 | |||
| 《移动互联网应用程序个人信息保护管理暂行规定(征求意见稿)》 | 部门其他文件/工业和信息化部 | 2021.04.26发布 | APP一方:需要向本App以外的第三方提供个人信息的,应当向用户告知其身份信息、联系方式、处理目的、处理方式和个人信息的种类等事项,并取得用户同意。 使用第三方服务的,应当制定管理规则,明示App第三方服务提供方的名称、功能、个人信息处理规则等内容。 应与第三方服务提供方签订个人信息处理协议,明确双方相关权利义务,并对第三方服务提供方的个人信息处理活动和信息安全风险进行管理监督。 App开发运营者未尽到监督义务的,应当依法与第三方服务提供方承担连带责任。 |
| SDK一方:APP第三方服务提供方应当履行以下个人信息保护义务: (一)制定并公开个人信息处理规则; (二)以明确、易懂、合理的方式向App开发运营者公开其个人信息处理目的、处理方式、处理类型、保存期限等内容,其个人信息处理活动应当与公开的个人信息处理规则保持一致; (三)未经用户同意或者在无合理业务场景下,不得自行进行唤醒、调用、更新等行为; (四)采取足够的管理措施和技术手段保护个人信息,发现安全风险或者个人信息处理规则变更时应当及时进行更新并告知App开发运营者; (五)未经用户同意,不得将收集到的用户个人信息共享转让; (六)国家规定的其他个人信息保护义务。 | |||
| 《工业和信息化部关于开展纵深推进APP侵害用户权益专项整治行动的通知》 | 部门其他文件/工业和信息化部/工信部信管函〔2020〕164号 | 2020.07.22发布 2020.07.22实施 | APP与SDK:APP、SDK违规处理用户个人信息方面: 1.违规收集个人信息。重点整治APP、SDK未告知用户收集个人信息的目的、方式、范围且未经用户同意,私自收集用户个人信息的行为。 2.超范围收集个人信息。重点整治APP、SDK非服务所必需或无合理应用场景,特别是在静默状态下或在后台运行时,超范围收集个人信息的行为。 3.违规使用个人信息。重点整治APP、SDK未向用户告知且未经用户同意,私自使用个人信息,将用户个人信息用于其提供服务之外的目的,特别是私自向其他应用或服务器发送、共享用户个人信息的行为。 4.强制用户使用定向推送功能。重点整治APP、SDK未以显著方式标示且未经用户同意,将收集到的用户搜索、浏览记录、使用习惯等个人信息,用于定向推送或广告精准营销,且未提供关闭该功能选项的行为。 |
| 《APP违法违规收集使用个人信息行为认定方法》 | 部门其他文件/国家互联网信息办公室,工业和信息化部,公安部,国家市场监督管理总局/国信办秘字〔2019〕191号 | 2019.11.28发布 2019.11.28实施 | APP一方:以下行为可被认定为“未明示收集使用个人信息的目的、方式和范围”:1.未逐一列出App(包括委托的第三方或嵌入的第三方代码、插件)收集使用个人信息的目的、方式、范围等。 以下行为可被认定为“未经同意向他人提供个人信息”: 1.既未经用户同意,也未做匿名化处理,App客户端直接向第三方提供个人信息,包括通过客户端嵌入的第三方代码、插件等方式向第三方提供个人信息; 2.既未经用户同意,也未做匿名化处理,数据传输至APP后台服务器后,向第三方提供其收集的个人信息; 3.APP接入第三方应用,未经用户同意,向第三方应用提供个人信息。 |
在前述规范性文件之外,还存在多项标准供参考使用。如2024年6月1日,国家标准化管理委员会发布的国家推荐性标准《信息安全技术移动互联网应用程序(APP)软件开发工具包(SDK)安全要求》正式开始实施,该标准覆盖SDK的全生命周期,针对SDK设计、开发、发布、运营、终止运营等各阶段,在国家标准层面为SDK的合规应用提供了实践指引。此前,全国信息安全标准化技术委员会发布的信安秘字〔2020〕85号《网络安全标准实践指南—移动互联网应用程序(APP)使用软件开发工具包(SDK)安全指引》,一直作为APP嵌入SDK的重要合规参考。
03、APP嵌入第三方SDK的合规指引
如前所示,APP运营者在选择、使用和停用SDK的全过程中务必对SDK的安全合规性保持高度警觉,尽量避免因集成第三方SDK造成的APP安全与个人信息保护问题,因使用第三方SDK而可能面临的法律追责风险。以下将基于当前生效的规范性文件和相关标准,详尽阐述在接入阶段、运营阶段以及退出阶段,APP运营者应采取的具体策略和措施。
1、接入阶段
1.事先选择
APP运营者应当尽量选择基本信息明确、沟通反馈渠道有效的SDK,并应当遵循如下原则:
(1)最小必要原则,即APP仅嵌入满足业务功能需要的最少够用的SDK。SDK只收集满足所提供服务所需的最少个人信息类型、数量和频度。
(2)目的明确原则,即在选用处理个人信息的 SDK 时,应保证SDK 具有明确、清晰、具体、合理的个人信息处理目的,且该目的应当与APP业务功能直接相关。
2.安全评估
APP提供方在选用SDK时,优先选用安全性、可靠性高的SDK。可以要求SDK提供方提供SDK安全能力说明及安全评估报告,也可根据实际情况在集成SDK前自行对SDK进行安全性评估。评估内容主要包括:
(1)来源安全性,包括但不限于SDK提供方的基本信息、安全能力、沟通反馈渠道,以及SDK的基本功能、版本号等。对于闭源SDK,由于难以直接了解代码状况,建议选择经过市场检验的第三方服务商合作。对于开源SDK,尽管可以了解SDK代码状况,囿于可能存在的技术限制,也应当尽可能选择有安全性保障的开源平台。
(2)代码安全性,包括但不限于是否存在已知的恶意代码与安全漏洞、是否嵌入其他SDK以及是否申请敏感权限等。
(3)行为安全性,包括但不限于是否存在单独收集用户个人信息的界面;是否存在后台自启动和关联启动后收集个人信息的行为;是否存在热更新行为及热更新是否可主动关闭等。
3.签署协议
APP运营者在嵌入第三方的SDK前,应当根据双方对个人信息处理方式和处理目的的决定权判断双方的法律关系是委托处理、共同处理还是分别处理。在此基础上,签署相应协议约定双方的权利义务并采取相应的第三方管理措施。通过制度制定、协议签署等方式明确双方的数据流向和权利义务分配。
APP运营者与SDK提供方签订合作协议,应当充分考虑嵌入SDK可能造成的合规风险以及双方可能承担的责任状况并提前作出相应安排。例如,应当明确SDK收集的个人信息类型、申请的敏感权限、个人信息的收集目的、保存期限、超期处理方式,同时应当明确双方各环节的权利和义务、应采取的安全保护措施、发生数据安全事件时的补救与应急处置措施以及责任承担等事项,并留存第三方接入日志记录。当双方合作存在重大变更时,例如数据处理关系发生变化,则应重新达成合作协议。
2、运营阶段
1.告知同意
不同法律关系下告知用户的方式也存在不同。若是共同处理个人信息,双方应协商确定如何告知用户,并征得用户的同意以及提供用户权利保障功能;若SDK提供方作为受托方,应由APP运营者告知用户征得用户同意,并提供用户权利保障功能;若SDK提供方单独处理个人信息、需要征得用户同意并提供用户权利保障功能的,APP运营者应协助SDK提供方实现相应功能。
对于告知方式:APP运营者应当向其平台的用户公开明示SDK名称、开发者、版本号、主要功能、使用说明等基本信息,并告知其处理个人信息的规则,包括SDK收集的个人信息类型、目的、方式、保存期限,申请的敏感权限、申请目的、个人信息主体行使权利的方式等,并征得用户同意。就展示方式而言,APP应当在平台中进行集中展示,例如在隐私政策或以第三方SDK清单、目录的形式列明其嵌入的所有SDK。此外,若SDK需向用户单独告知收集使用个人信息的行为,例如收集用户的敏感个人信息时,APP还需为其中无单独页面的SDK提供向用户告知的便捷渠道,例如可通过单独弹窗或者单独协议等方式进行告知。
信安标委发布的《信息安全技术应用商店的移动互联网应用程序(APP)个人信息处理规范性审核与管理指南》以结构化的清单形式在SDK列表中逐项披露SDK名称、SDK包名、运营主体、收集的个人信息类型及目的,以及使用到的设备敏感权限,可为APP运营者提供格式参考:

另外,APP运营者应要求SDK提供方建立响应个人信息主体请求和投诉等机制,在收到个人信息主体提出的行权请求和投诉时,及时向SDK提供方进行转达。SDK提供方在接收到该删除个人信息的请求后,应及时在其服务器端删除其收集的个人信息或做匿名化处理。并且根据《个人信息保护法》规定,个人信息主体有权随时撤回同意,个人信息处理者应当提供便捷的撤回同意方式。因此,建议APP运营者应当为用户提供关闭SDK服务的渠道和方式。对于为实现基本功能服务而嵌入的SDK,可以在关闭时提示用户将影响基本功能服务的实现。对于为实现补充业务功能而嵌入的SDK,不应当因用户关闭SDK服务而影响基本业务功能实现。
2.动态监测
即使嵌入了SDK,APP运营者也应当进行持续动态监测或定期进行安全评估。建议APP运营者设立专门技术人员,对已嵌入的SDK开展持续或不定期安全监测工作,评估代码安全性、收集处理个人信息情况是否与事前约定一致,及时修复SDK存在的安全漏洞,及时拦截SDK通过APP违法违规处理个人信息的行为,及时对SDK的热更新内容进行内容校验等。若发现第三方SDK存在违反法律规定或双方约定行为且造成较大安全风险的,应当及时切断接入,并督促其采取整改措施。对于存在流量劫持、资费消耗、隐私窃取等恶意行为的第三方软件开发工具包应当取消其接入权限。
其中,需要重点关注SDK对个人信息的收集、传输、存储与使用行为:
(1)收集。APP运营者仅能共享或者委托处理SDK功能或服务所必需的个人信息;如果SDK直接从APP用户处收集的,APP运营者应当要求SDK提供方对功能独立的模块提供单独的开启关闭选项,只有在APP运营者或者APP用户选择开启SDK功能或服务时,SDK才能收集个人信息。
(2)传输。如果APP运营者与SDK提供方之间涉及传输个人信息,APP运营者与SDK提供方应使用HTTPS安全信道、双向证书校验等安全机制,避免遭受外部攻击。如涉及传输敏感个人信息的,还应采取加密处理等安全技术措施。
(3)存储。APP运营者应要求SDK提供方优先在移动终端本地存储和处理个人信息,在本地存储和处理敏感个人信息的,应对敏感个人信息进行加密。
(4)使用。APP运营者应要求SDK提供方对个人信息的使用与加工方式与向用户的告知协议内容保持一致。一旦发现SDK超出前述范围使用与加工个人信息的,应要求SDK重新取得用户的同意。
3、退出阶段
在经历接入与运营阶段之后,APP运营者可能因改变产品功能、存在可替代第三方、SDK存在不合规行为等原因选择停用该SDK。在此阶段,APP运营者仍需采取行动保障用户个人信息安全:
(1)及时从APP中移除该SDK的代码和调用该SDK的代码。通过断开SDK继续收集、处理用户个人信息的渠道,避免用户数据被传输给已经不受双方数据协议约束的第三方服务商。并且APP运营者应对移除代码或断开连接等操作留下相应的书面文件或数据操作记录,以便应对将来可能发生的数据泄露争议。
(2)如该第三方SDK存在通过APP收集个人信息的,还应敦促SDK提供方按照合作协议约定,在服务器端删除从本APP共享或收集的个人信息或做匿名化处理。
