前  言

本文件按照GB/T 1.1—2020《标准化工作导则 第1部分:标准化文件的结构和起草规则》的规定起草。

本文件由全国信息安全标准化技术委员会(SAC/TC260)提出并归口。

本文件起草单位:每日互动股份有限公司、中国电子技术标准化研究院、中国网络安全审查技术与认证中心、北京理工大学、北京百度网讯科技有限公司、北京小桔科技有限公司、友盟同欣(北京)科技有限公司、重庆邮电大学、华为技术有限公司、阿里巴巴(北京)软件服务有限公司、OPPO广东移动通信有限公司、北京奇虎科技有限公司、北京小米移动软件有限公司、浙江大学、复旦大学、国家计算机病毒应急处理中心、北京智游网安科技有限公司、上海合合信息科技股份有限公司、华住酒店管理有限公司、深圳市腾讯计算机系统有限公司、蚂蚁科技集团股份有限公司、国家信息技术安全研究中心、国家计算机网络应急技术处理协调中心、北京字节跳动科技有限公司、科大讯飞股份有限公司、上海兆言网络科技有限公司、同盾科技有限公司、贝壳找房(北京)科技有限公司、公安部第一研究所、公安部第三研究所、中国信息通信研究院、上海游昆信息技术有限公司、秒针信息技术有限公司、高德软件有限公司、中国移动通信有限公司、京东数字科技控股股份有限公司、北京快手科技有限公司、启明星辰信息技术集团股份有限公司。

本文件主要起草人:董霖、方毅、周程、胡影、刘行、洪延青、何延哲、樊华、金岩、李浩川、李颖莹、郄世杰、韩淼淼、邓婷、孙硕、张娜、糜波、贾紫薇、徐雨晴、衣强、白晓媛、李腾、姚一楠、田晴云、田宇轩 、李昳婧、周亚金、刘新萍、张鑫、刘彦、魏超、张昀、宋宏宇、王彬、沈林、刘俊河、王昕、李克鹏、曹岳、王杰、林星辰、李子强、方瑞、文晓薇、田申、马万钟、朱璐、邵华。

引  言

近年来,随着移动互联网的普及和发展,以及各类移动互联网应用程序(Mobile Internet Application,简称App)的快速发展,为提高App的开发和运营效率,软件开发工具包(Software Development Kit,简称SDK)应运而生,并被广泛使用。SDK在提高开发效率、降低开发成本的同时,带来的代码安全漏洞、恶意行为、违法违规收集用户个人信息等安全问题,对App用户和App提供者都造成了较为严重的影响,对SDK的行业生态发展造成了破坏。

本文件旨在为SDK提供者在SDK的开发、运营、个人信息处理、数据安全管理等环节中的各类活动提出安全规范。

信息安全技术 移动互联网应用程序(App)SDK安全指南

范围

本文件规定了SDK提供者在SDK的开发、运营、个人信息处理、数据安全管理等活动中应遵循的安全要求。

本文件适用于SDK提供者进行SDK的开发和运营,也适用于国家主管部门、第三方评估机构等对SDK安全进行监督、管理和评估。

规范性引用文件

下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。

GB/T 25069—2010 信息安全技术 术语

GB/T 34975—2017 信息安全技术 移动智能终端应用软件安全技术要求和测试评价方法

GB/T 35273—2020 信息安全技术 个人信息安全规范

GB/T 35274—2017 信息安全技术 大数据服务安全能力要求

GB/T 37964—2019 信息安全技术 个人信息去标识化指南

GB/T 37988—2019 信息安全技术 数据安全能力成熟度模型

GB/T 30276—2020 信息安全技术 网络安全漏洞管理规范

术语和定义

GB/T 25069—2010界定的以及下列术语和定义适用于本文件。

软件开发工具包 software development kit

协助软件开发的软件库,通常包括相关二进制文件、文档、范例和工具的集合,简称SDK。

移动互联网应用程序 mobile internet application

通过预装、下载等方式获取并运行在移动智能终端上,向用户提供服务的应用软件,简称App。

注:本文件中的移动互联网应用,包括移动智能终端预置的应用软件,网络运营者提供的可以通过网站、应用商店等移动应用分发平台下载、安装和升级的应用软件,及小程序等基于平台的应用软件。

移动互联网应用程序提供者 mobile internet application provider

移动互联网应用程序的所有者或运营者,简称App提供者。

软件开发工具包提供者 software development kit provider

决定SDK的开发、运营、个人信息处理、数据安全管理等活动的目的和方式的组织或个人,简称SDK提供者。

最终用户 end user

在移动终端设备上使用移动互联网应用程序的个人用户,即App用户。

热更新 hot fix

通过动态下发和加载代码,使App或SDK在不重新下载和安装的情况下,改变其原有代码逻辑或资源文件。

设备指纹 device fingerprint

用于唯一标识出一台设备的设备特征或者独特的设备标识。设备指纹通常基于设备唯一标识等设备信息通过不可逆算法生成。

公共仓库 public warehouse

方便开发者上传和下载源码或者封装包的公共平台。

缩略语

下列缩略语适用于本文件。

SDK:软件开发工具包(Software Development Kit)

App:移动互联网应用程序(Mobile Internet Application)

OOM:内存溢出(Out of Memory)

API:应用程序接口(Application Programming Interface)

SDK概述

SDK的使用场景

SDK一般用于提供某一明确的、共性的功能,这些功能的开发可能会耗费App提供者一定的研发资源和部署资源,为避免相同功能重复开发、提高新产品的研发效率,App提供者会使用SDK。SDK的使用场景通常涉及App用户、App提供者和SDK提供者三方角色,如图1所示。SDK提供者将实现特定功能的代码进行封装,并提供简单的调用接口。App提供者将SDK嵌入App代码中,调用SDK提供的接口实现相应的功能,如果某些SDK具有独立交互界面,App交互页面也会将其嵌入。App用户通过App交互界面使用SDK功能时,通常对SDK提供者没有感知,但如果通过页面跳转等方式访问SDK提供者的独立交互页面时,可能感知到SDK提供者。App提供者和SDK提供者可能为同一方,即App提供者使用自身开发的SDK。如果App提供者和SDK提供者不是同一方,通常将SDK称为第三方SDK。

img

图1 SDK使用场景示意图

App提供者通过SDK能够实现的常用使用场景包括但不限于推送、统计、支付、即时通信、第三方登录等,详情可参考附录A。

SDK的安全风险

如本文件5.1节所述,SDK使用场景广泛,且使用过程中涉及App提供者、SDK提供者、最终用户三方,在SDK使用过程中存在的主要安全风险包括但不限于:

SDK自身安全漏洞。SDK在开发时聚焦于功能实现而忽视了安全性,可能导致SDK本身存在安全漏洞。附录B列出了SDK常见安全漏洞,这些漏洞可被恶意攻击者利用,对嵌入该SDK的大量App及其最终用户的数据及隐私安全造成损害;

SDK恶意行为。SDK恶意行为是指嵌入App中的SDK自身产生的恶意行为,这种恶意行为会破坏使用SDK的App的安全性,对最终用户权益、数据安全等方面造成损害。SDK典型恶意行为有广告刷量、隐私窃取、远程控制等,详见附录C;

SDK收集使用个人信息安全问题。SDK在收集使用个人信息方面存在安全问题,导致App使用SDK时对最终用户的个人信息安全造成损害,主要体现在:

SDK超范围收集个人信息。SDK收集与提供服务无关的个人信息,强制申请非必要的权限,自动收集个人信息的频度和时机不合理等;

App未说明嵌入的SDK收集使用个人信息的目的、类型、方式等。SDK在无法独立展示交互界面的情况下,其告知行为需要借助App透出给最终用户。由于SDK未向App告知或未完整告知自身收集使用个人信息的规则,或者SDK向App完整告知了收集使用个人信息的规则但App未向最终用户说明等原因,造成最终用户对SDK收集使用个人信息的行为无感知;

SDK未经最终用户同意收集使用或对外提供个人信息。SDK未经最终用户同意,私自调用系统权限隐蔽收集个人信息,私自通过自启动、关联启动等方式收集个人信息,实际调用的系统权限和收集的个人信息超出公开文档所声明的系统权限和个人信息。SDK提供者超出最终用户授权范围使用个人信息,私自向第三方提供用户个人信息等;

App对SDK的个人信息安全管理监督不足。由于App与SDK通常通过开放平台在线签署开发者服务协议来约定双方的权利和义务,而开发者服务协议通常缺少针对数据安全的约束条款,以及App对SDK收集使用个人信息的行为进行技术检测存在困难等原因,导致App对SDK收集使用个人信息的行为管理监督不足。

基本安全要求

SDK提供者应满足以下基本安全要求:

在SDK设计、开发、部署和运营的全生命周期中,SDK提供者应保障数据传输和存储安全。SDK提供者宜为SDK配备安全开发规范文档和流程,并定期(至少每年一次)对相关人员开展SDK安全知识培训和考核,确保相关人员熟练掌握SDK安全知识。SDK作为App的一部分,运行期间需满足GB/T 34975—2017 4.1.5.1、4.1.5.2、4.1.5.3节的要求;

SDK提供者应根据GB/T 35274-2017等标准的要求,参考GB/T 37988-2019等标准,建立数据安全管理制度和能力,落实管理和技术措施;

SDK提供者在处理中华人民共和国境内收集和产生的数据时,如涉及跨境传输,跨境传输前应进行安全评估;

SDK提供者关于个人信息收集、存储、使用、委托处理、共享、转让、公开披露、个人信息主体权利保障等行为应遵循GB/T 35273—2020中的要求;

SDK提供者和App提供者应通过合同等形式共同约定双方在防止恶意行为、安全漏洞响应、数据安全防护、个人信息安全保护方面各自应承担的责任和义务,并做到信息披露及时、准确。

生命周期安全要求

设计

设计阶段的具体要求包括:

功能设计:SDK应仅包含与其声明功能相符合的功能,宜进行模块化开发,便于提供功能裁剪方案;不应强制捆绑无关功能;在非服务所必需或无合理场景下,不应进行后台唤醒,或唤醒其他App;

传输设计:SDK在数据传输过程中应使用安全的传输协议;SDK提供者和App提供者的服务器之间存在数据通信的,应保障服务器间通信安全;SDK在传输敏感数据前宜对敏感数据单独进行加密;

存储设计:SDK单独处理的数据如在本地存储,应保存在单独的目录下。

开发

开发阶段的具体要求包括:

SDK提供者应通过代码审计、安全加固、完整性校验、本地数据加密存储等方式,增强SDK安全性,确保SDK不包含病毒、木马以及已知安全漏洞,避免因SDK安全漏洞被恶意攻击者利用,导致数据泄露、程序异常、SDK被恶意篡改等问题;

SDK与服务端之间的接口应通过传输加密、数字证书双向校验、签名校验等方式进行保护,避免因攻击导致数据泄露、篡改等问题;

SDK提供者宜采用设备指纹技术,识别虚假设备、防范爬虫攻击(例如通过伪造设备信息,绕过反作弊系统进行信息爬取、参与仅限新注册用户的优惠活动从而骗取收益等);

SDK提供者应避免因SDK自身代码逻辑异常导致App出现异常,例如代码死循环、死锁、OOM、数据越界等;

SDK提供者宜对SDK网络请求的数据量大小、频率、单位时间内总次数等进行限制,避免出现异常流量消耗、电量消耗等情况;

SDK提供者宜对SDK进行代码混淆,提高逆向分析的难度。

部署

部署阶段的具体要求包括:

SDK提供者应对SDK逻辑问题、安全漏洞、木马行为、越权行为等进行检测,保障SDK安全,避免出现已知代码安全漏洞或业务逻辑安全问题;

SDK提供者宜向App提供者提供SDK安全能力说明及安全评估报告;

若为私有化部署,SDK提供者应向App提供者提供具体的部署资源要求以及详细部署方案。其中部署资源包括但不限于服务器、存储、带宽等,部署方案包含网络和数据安全相关内容。

运营

运营阶段的具体要求包括:

SDK提供者应在官方网站、开源社区、集成文档或隐私政策中声明SDK是否支持中华人民共和国境外使用,是否存在跨境数据传输行为;

SDK提供者应在官方网站、开源社区或者公共仓库中提供SDK下载文件以及相应的集成文档和API接口文档,向App提供者告知SDK所具有的全部功能,并对目前可用的历史SDK版本进行管理,提供版本迭代的功能变化说明;

通过公共仓库进行SDK分发时,SDK提供者应对公共仓库账号进行妥善保管,避免因公共仓库账号泄露引发的安全问题;

如果SDK存在热更新行为,SDK提供者应在官方网站、开源社区、集成文档或隐私政策中公开告知,并具体说明热更新的功能和作用;

如果SDK需要依赖热更新技术修复安全风险问题,SDK提供者应提前通知App提供者后再进行热更新修复;

SDK宜提供单独控制热更新功能开启关闭的选项,说明关闭热更新功能带来的影响,并保留App提供者在不接受热更新功能的情况下仍可正常使用SDK其他功能的权利;

SDK提供者应建立投诉管理机制和投诉跟踪反馈流程,并在15个工作日内对App提供者或最终用户的投诉进行响应;

SDK提供者停止运营的,应提前告知受影响的App提供者,并保障网络安全和数据安全;

因SDK引发个人信息安全事件的,SDK提供者应按照GB/T 35273—2020 第10章关于个人信息安全事件处置的要求进行处置。

个人信息安全要求

个人信息收集

个人信息收集要求包括:

SDK申请权限和收集个人信息时应满足合法、正当、必要原则,通过隐私政策等方式告知并说明涉及个人信息的权限使用和个人信息处理的目的、方式和范围等规则,并获得最终用户授权同意;

SDK对个人信息的收集应与SDK提供者在隐私政策中公开的个人信息收集内容一致;

SDK在保证功能正常前提下应以最小的频率收集个人信息;

在最终用户或App提供者未使用SDK提供的某项业务功能时,SDK不应强制申请该业务功能所需的权限。

个人信息存储

个人信息存储要求包括:

SDK提供者应对SDK运行所使用的文件、数据库等数据进行加密存储以及完整性校验,避免SDK内部数据泄露或被篡改;

SDK提供者应建立数据安全管理机制,做好网络域隔离,对数据的传输和存储做好访问控制和异常行为监控;

如果在移动终端本地存储个人信息,SDK应对存储的个人信息,提供访问控制和加密保护。

个人信息使用

个人信息使用要求包括:

SDK提供者授权人员访问个人信息,应遵循最小化授权策略;

在保障安全的前提下,SDK宜优先在本地处理个人信息。

个人信息共享、转让和公开披露

个人信息共享、转让和公开披露要求包括:

SDK提供者如将个人信息共享、转让给除了App提供者之外的机构或个人,应向个人信息主体告知数据共享、转让的目的、数据接收方类型以及可能产生的后果,并征得个人信息主体和App提供者的同意;

SDK提供者共享、转让个人信息时,应进行去标示化处理,确保数据接收方无法重新识别或者关联个人信息主体,去标识化处理的过程可参考GB/T 37964-2019 第5章。

个人信息主体权利保障

个人信息主体权利保障要求包括:

SDK提供者宜建立选择退出机制,当个人信息主体不希望使用SDK提供的服务时,个人信息主体可通过选择退出机制行使退出权利。

SDK和App联动要求

接入期

对SDK提供者的要求包括:

SDK提供者应向App提供者提供包括SDK压缩包、接入和使用文档、隐私政策等,同时向App提供者告知其收集使用个人信息的类型、目的、方式、范围、存储期限,需申请的相关权限,问题反馈和投诉渠道等,告知的信息应完整、准确、及时,不存在故意隐瞒、欺骗等行为,对于必须收集的个人信息和必须申请的权限,应进一步说明其必要性;

SDK提供者宜向App提供者提供SDK安全相关检测报告,包括但不限于代码扫描结果(代码审核、加固等证明)、第三方检测机构报告等。

对App提供者的要求包括:

App提供者集成SDK,应在App隐私政策中逐项列举其所使用的有个人信息收集行为的SDK清单,包括SDK名称、SDK命名空间、合作伙伴名称、合作目的、收集个人信息字段、申请的权限、以及SDK隐私政策,App提供者将SDK的隐私政策内容整合到App提供给最终用户的隐私政策中的方式可参考附录D。

运营期

对SDK提供者的要求包括:

SDK提供者在SDK运营期间监测到程序崩溃率上升等风险,应告知App提供者并及时进行修复,并配合App提供者重新集成SDK;

SDK提供者在SDK运营期间发现安全漏洞,应告知App提供者,并按照GB/T 30276—2020中5.4节a)项要求完成漏洞处置,并配合App提供者重新集成SDK;

SDK提供者应建立响应个人信息主体请求和投诉机制,借助App向最终用户提供易于操作的用户权利实现机制,响应最终用户请求;

SDK提供者发现App提供者未能向最终用户告知个人信息处理规则,或告知规则不完善的,宜主动提示其及时改进,如App提供者无措施回应的,SDK提供者宜停止对其提供服务。

对App提供者的要求包括:

App提供者宜对集成后的SDK进行持续安全监测或定期进行安全评估。对于已经发现安全漏洞的SDK,应要求SDK提供者及时修复安全漏洞,或者采用其它替代方案。对于已经发现存在恶意行为的SDK,应停止使用。

退出期

对SDK提供者的要求包括:

当某App停止接入SDK后,若SDK提供者存在从该App共享或收集个人信息的,应按照合作协议约定,删除从该App共享或收集的个人信息或做匿名化处理。

对App提供者的要求包括:

停用某SDK后,App提供者及时从App中移除该SDK的代码及调用该SDK的代码,存在通过本App共享或收集个人信息的,应督促SDK提供者按照合作协议约定,删除从本App共享或收集的个人信息或做匿名化处理;

停用某SDK后,SDK收集的个人信息,如共享给到App提供者,App提供者应按照协议删除该部分个人信息或做匿名化处理。

附件A(资料性)

常见SDK类型

表A.1给出了App开发中常见集成的SDK类型。

表 A.1 常见SDK类型

序号 SDK分类 功能描述
1 框架类 提供开发某一类App或跨平台App所需的整体框架。
2 广告类 提供广告展示功能,通过使用广告SDK,App提供者可以在App中展示广告商投放的广告,进而根据最终用户的点击赚取收益。
3 推送类 提供消息推送功能。
4 统计类 提供收集最终用户与App之间的交互行为的功能。根据用户使用App的情况,开发者可以有针对性地改进App。
5 地图类 提供地图和定位功能。
6 第三方登录类 提供通过其他账号体系(如微博、微信、QQ)等第三方 账号登录App的功能。
7 社交类 提供社交功能,如消息、分享、排行等功能。
8 支付类 提供移动支付功能。
9 客服类 提供客服对话窗口、客服机器人等客服功能。
10 测试类 提供线上测试功能,如A/B测试。
11 安全风控类 提供移动业务安全风控功能。
12 Crash 监控类 提供App崩溃、App无响应、卡顿的数据收集与分析。
13 人脸识别类 提供人脸识别、活体检测等功能。
14 语音识别类 提供语音转文字等功能。
15 短信验证类 提供短信验证功能。
16 基础功能类 提供App的基础功能,如网络访问、图片缓存、多媒体操作等。

附件B(资料性)

常见SDK安全漏洞

表B.1列出了常见SDK安全漏洞。

表 B.1 常见SDK安全漏洞

类型 名称
源文件安全 Java代码未混淆风险
私有函数调用风险
AES弱加密漏洞
RSA算法不安全使用漏洞
随机数不安全使用
敏感函数调用风险
内部数据交互安全 低保护级别的自定义权限
PengdingIntent不安全使用
携带敏感信息的隐式Intent调用
动态注册广播
FFmpeg文件读取
Intent Scheme URLs攻击
Provider文件目录遍历
Fragment注入
Webview未移除隐藏接口
Webview明文保存密码
Activity绑定browserable与自定义协议
存在剪切板读或写操作漏洞检测
通信数据传输安全 SSL通信服务端检测信任任意证书
SSL通信客户端检测信任任意证书
HTTPS关闭主机名验证
Webview存在本地Java接口
Webview忽略SSL证书错误
开放socket端口
Webview启用访问文件数据
本地数据存储安全 getdir读写权限配置错误
全局文件读写权限配置错误
配置文件读写权限配置错误
AES/DES硬编码密钥
打开或创建数据库文件权限配置错误
防御检测 DEX文件动态加载
外部加载so文件漏洞
未使用编译器堆栈保护技术
未使用地址空间随机化技术
unzip解压缩
动态链接库中包含执行命令函数
libupnp栈溢出漏洞
Webview组件远程代码执行(调用getClassLoader)
保存明文数字证书风险
篡改/二次打包风险
资源文件泄露风险
so文件破解风险

附件C(资料性)

常见SDK恶意行为

表C.1列出了常见SDK恶意行为。

序号 行为名称 注释
1 流量劫持 SDK信息拉取、上报和展示目标App提供者设定的目标不同,恶意劫持App流量,可能对App造成损害。
2 资费消耗 SDK可通过消耗最终用户网络套餐资费、恶意发送收费短信,订阅收费服务等行为,造成最终用户的资金损失。
3 隐私窃取 SDK在用户不知情或误导用户的情况下,隐蔽窃取用户的通讯录、短信息等个人敏感信息,隐蔽进行拍照、录音等 敏感行为,并发送给恶意开发者。
4 静默下载安装 SDK在后台静默下载、安装其它恶意软件或病毒木马。
5 广告刷量 SDK在最终用户不知情的情况下,在后台模拟人工点击广告链接进行牟利。
6 恶意广告 SDK向最终用户推送包含欺诈内容、病毒木马的广告链接。推送过量广告,进而长期占用系统通知栏、屏幕界面,干扰最终用户正常使用App。
7 勒索 SDK恶意加密最终用户手机中的文件,干扰最终用户对手机的正常使用,并以恢复正常使用为由向最终用户勒索钱财。
8 挖矿 SDK在最终用户不知情的情况下利用其手机的计算能力来为攻击者获取电子加密货币,对最终用户设备硬件造成性能损耗。
9 远程控制 SDK在手机端启动本地后台服务端,接收远程控制端发来的控制指令,隐蔽进行上述其他恶意行为。
10 剪切板劫持 SDK对系统剪切板进行监听,获取剪切板中的敏感信息,或者根据剪贴板内容的变化触发悬浮窗,干扰系统功能, 欺骗最终用户,或者影响其他应用正常使用。

表 C.1 常见SDK恶意行为

附件D(资料性)

App隐私政策中披露相关SDK信息的模板

表D.1给出了App在隐私政策中披露相关SDK信息的模板,App提供者可参考该模板在隐私政策中说明App使用的SDK和每个SDK对应收集的个人信息。

表 D.1 App隐私政策中披露相关SDK信息示例

SDK名称 SDK命名空间 合作伙伴名称 合作目的 收集个人信息字段 申请的权限 SDK隐私政策
SDK对外产品名称 SDK的命名空间 公司名称 APP集成SDK后,SDK提供的服务功能描述 收集的个人信息的字段及其对应的目的 申请的系统权限及其对应的目的 SDK隐私政策的链接

参 考 文 献

TC260-PG-20205A 网络安全标准实践指南-移动互联网应用程序(App)使用软件开发工具包(SDK)安全指引

《中华人民共和国网络安全法》 2016年11月7日第十二届全国人民代表大会常务委员会第二十四次会议通过

《全国人大常委会关于维护互联网安全的决定》 2000年12月28日第九届全国人民代表大会常务委员会第十九次会议通过

《全国人大常委会关于加强网络信息保护的决定》 2012年12月28日第十一届全国人民代表大会常务委员会第三十次会议通过

《电信和互联网用户个人信息保护规定》 2013年7月16日中华人民共和国工业和信息化部令第24号公布,自2013年9月1日起施行

《移动互联网应用程序信息服务管理规定》 2016年6月28日国家互联网信息办公室发布,自2016年8月1日起实施

《APP违法违规收集使用个人信息行为认定方法》2019年11月28日国家互联网信息办公室、工业和信息化部、公安部、市场监管总局联合发布,2019年11月28日起实施


results matching ""

    No results matching ""