ICS35.240.01CCSL70 团体标准 T/ISC0017—2022 移动互联网应用程序SDK安全技术要求及测试方法 SecuritytechnicalrequirementsandtestmethodsofmobileapplicationSDK 2022-08-05发布2022-11-05实施 中国互联网协会发布 目次 目次I 前言II 1范围1 2规范性引用文件1 3术语和定义1 4缩略语1 5移动互联网应用程序SDK安全要求2 6移动互联网应用程序SDK安全测试方法3 附录A(资料性)移动互联网应用程序SDK典型安全风险11 前言 本文件按照GB/T1.1-2020给出的规则起草。 请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别这些专利的责任。本文件由中国互联网协会归口。 本文件主要起草单位:中国信息通信研究院、中国电信集团公司、中国移动通信集团有限公司、中国联合网络通信集团有限公司、北京腾云天下科技有限公司、深圳市和讯华谷信息技术有限公司、深圳凡泰极客科技有限责任公司、北京贵士信息科技有限公司、每日互动股份有限公司、深圳市网安计算机安全检测技术有限公司、北京数智鑫源科技有限公司 本文件主要起草人:解伯延、王丹辉、钟子呈、江为强、谢玮、陈湉、刘明辉、耿冠和、蔡逆水、张峰、刘畅、徐积森、吴连勇、葛梦莹、陈光炎、马超、史坤坤、梁启鸿、杨涛、任馨怡、张青峰、董霖、郄世杰、方毅、黄伟杰、郑建鹏、任江辉、柯国锋、宫琦 T/ISC0017—2022 移动互联网应用程序SDK安全技术要求及测试方法 1范围 本文件规定了移动互联网程序(App)软件开发工具包(SDK)的开发、运营中的安全要求,并描述了满足这些安全要求的证实方法。 本文件适用于移动互联网应用程序SDK安全测评工作,为相关机构强化测评能力、健全技术手段提供指引,为SDK开发者提升其产品安全水平提供参考。 2规范性引用文件 下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。 GB/T25069—2010信息安全技术术语 3术语和定义 下列术语和定义适用于本文件。 3.1 移动互联网应用程序mobileinternetapplication 通过预装、下载等方式获取并运行在移动智能终端上,向用户提供服务的应用软件,简称App。 注:本文件中的App,包括移动智能终端预置的App、可以通过网站、应用商店等应用分发平台下载、安装和升级的App,及小程序等基于宿主App平台的应用软件。 3.2 软件开发工具包softwaredevelopmentkit 协助软件开发的软件库,通常包括相关二进制文件、文档、范例和工具的集合,简称SDK。 3.3 移动互联网应用程序提供者mobileinternetapplicationprovider 移动互联网应用程序的所有者或运营者,简称App提供者。 3.4 最终用户enduser 在移动终端设备上使用移动互联网应用程序的个人用户,即App用户。 4缩略语 下列缩略语适用于本文件。 SDK:软件开发工具包(SoftwareDevelopmentKit)App:移动互联网应用程序(MobileInternetApplication)Demo:展示样本(Demonstration) 5移动互联网应用程序SDK安全要求 5.1基本安全要求 SDK基本安全要求如下: a)应确保分发过程具备有效的完整性校验机制,避免提供的代码、资源文件遭篡改。 b)应确保分发包、Demo包内不包含病毒、木马等恶意程序。 c)应避免调试信息函数输出通信日志、关键变量等敏感信息。 d)应避免分发包、Demo包内残留内网URL、测试账号、测试数据等测试信息。 e)应避免嵌入与业务功能无关的插件、代码,或在分发包中私自打包提供其他SDK产品。 f)申请系统权限应遵循最小必要原则,避免索要非实现业务功能所必须的权限。 5.2数据存储安全要求 SDK数据存储安全要求如下: a)应对存储于最终用户设备上的含有个人信息、重要数据的文件进行加密(如库表加密、文件加密等),避免被宿主App、其他App、恶意程序等非法访问、篡改。 b)宜对与宿主App或其他本地程序共同处理、使用的数据进行加密处理,并约定安全有效的解密方案,确保数据的合法授权访问。 c)应对存储于最终用户设备上的数字证书文件进行加密,避免数字证书泄露或遭非法篡改。 d)应对存储于最终用户设备上的备份数据进行加密,避免备份数据泄露。 e)应限制本地存储的配置信息、用户偏好等轻量数据读写权限,避免遭其他程序越权访问、篡改。 f)宜限制个人信息、重要数据本地存储时间,确保到期数据自动删除。 g)应避免本地存储去标识化数据与原始标识的对应关系信息,防止相关信息泄露导致去标识化失 效。 h)应避免本地存储明文的鉴权信息(如账号、密码等),宜采用加随机盐的哈希值方式存储相关 数据,避免用户个人敏感信息泄露。 5.3数据交互安全要求 SDK与宿主App、服务端数据交互应满足的安全要求如下: a)应采用安全的传输协议确保SDK与服务端数据交互的机密性、完整性、可用性。 b)涉及个人信息、重要数据传输的场景,应采用HTTPS等加密传输协议或对相关数据单独加密,确保个人信息加密传输。 c)使用HTTPS传输协议时,宜开启SDK与服务端的双向验证机制,确保服务端身份真实性。 d)使用HTTPS自定义证书时,应对服务端主机名进行校验,验证服务端主机身份。 e)应使用安全的加密算法、密钥生成机制,避免使用不安全的加密算法(如RC4、AESECB或OFB工作模式等),避免加密算法破解。 5.4重要组件安全要求 T/ISC0017—2022 SDK使用系统功能组件应满足的安全要求如下: a)应在使用组件调用系统功能时确保其配置安全性,避免出现配置不合理导致的安全风险。 b)应在使用组件调用系统功能时遵循最小必要原则,避免调用与实现业务功能无关的功能。 c)调用网页视图(WebView)应确保其配置安全性,避免出现配置不合理导致的安全风险。 d)调用网页视图(WebView)实现与服务端交互时,应符合5.1.3章节各项要求。 e)宜在调用Intent组件时验证接收方合法性并对参数进行过滤,避免出现越权调用、隐式调用等风险。 f)宜在调用Intent组件时增加异常捕获机制,避免出现程序崩溃等风险。 5.5代码及资源文件安全要求 SDK代码及资源文件安全要求如下: a)宜采用代码混淆、加固等手段提高逆向分析的难度,降低关键函数、逻辑等泄露风险。 b)宜对本地存储的so文件进行加固/混淆处理,避免敏感信息泄露。 c)宜对本地存储的h5资源文件进行加密处理,避免资源文件遭篡改。 d)如采用资源文件热更新技术,宜对文件解压文件名进行限制,避免更新的资源文件被非法获取。 e)宜对本地存储的so文件进行地址空间随机化,降低缓冲区溢出攻击风险。 f)宜对本地存储的so文件进行编译器堆栈保护,避免栈溢出时系统不对程序进行保护。 g)宜对本地存储的密钥、证书进行加密,避免本地密钥、证书泄露或遭篡改。 h)宜避免代码内存在硬编码或强耦合的URL地址,避免链接遭篡改。 6移动互联网应用程序SDK安全测试方法 6.1基本安全测评 编号 基本安全-1 测评项目 SDK分发缺少完整性校验 风险描述 分发过程缺少完整性校验机制可能导致App提供者获取伪造、遭篡改的SDK代码。 标准要求 5.1a) 测评方法 访问SDK下载渠道,查验是否提供hash值比对、签名证书等完整性校验机制。 测评结果 存在风险:分发渠道提供了完整性校验机制。未见异常:分发渠道未提供完整性校验机制。 编号 基本安全-2 测评项目 内含恶意程序 风险描述 分发包内含有病毒、木马等恶意程序对App提供者、最终用户均可能造成安全威胁。 标准要求 5.1b) 测评方法 解压缩SDK分发包,扫描是否含有病毒、木马等恶意程序。 测评结果 存在风险:分发包内未见病毒、木马等恶意程序。未见异常:分发包内发现病毒、木马等恶意程序。。 编号 基本安全-3 测评项目 调试日志输出敏感信 风险描述 调试信息函数输出日志可能泄露代码逻辑等敏感信息,导致安全风险。 标准要求 5.1c) 测评方法 反编译SDK代码,查验调试信息函数是否禁用,如未禁用则查验输出日志是否含有敏感信息。 测评结果 存在风险:调试信息函数未禁用,且日志含敏感信息。未见异常:调试信息函数已禁用,或输出日志不含敏感信息。 编号 基本安全-4 测评项目 残留测试信息 风险描述 残留测试数据可能导致测试服务器地址、测试账号等信息泄露,威胁运维安全。 标准要求 5.1d) 测评方法 反编译SDK代码,查验是否残留服务器地址、测试账号等测试信息。 测评结果 存在风险:代码中发现残留测试信息。未见异常:代码中未发现残留测试信息。 编号 基本安全-5 测评项目 内嵌无关插件、SDK 风险描述 与业务功能无关的插件、SDK等可能会携带恶意程序或造成其他安全风险。 标准要求 5.1e) 测评方法 解压缩SDK分发包,查验资源文件中是否存在与业务功能无关的插件、SDK等。 测评结果 存在风险:分发包内发现与业务功能无关的插件、SDK等。未见异常:分发包内未发现与业务功能无关的插件、SDK等。 编号 基本安全-6 测评项目 索要非必要权限 风险描述 索要与实现SDK业务功能无关的非必要权限可能导致合规性风险。 标准要求 5.1f) 测评方法 核验SDK权限声明情况,比照业务功能,判断是否申请与业务功能无关的系统权限。 测评结果 存在风险:申请与业务功能无关的系统权限。未见异常:未申请与业务功能无关的系统权限。 6.2数据存储风险测评 编号 数据存储风险-1 测评项目 数据明文存储 风险描述 本地明文存储数据,可能导致个人信息、重要数据等遭非法访问、篡改 标准要求 5.2a) 测评方法 进入SDK本地数据存储路径,查验是否存在明文存储的数据库文件,如有则查验其内容是否存在敏感信息。 测评结果 存在风险:发现明文存储的数据库文件,且内容含敏感信息。未见异常:未发现明文存储的数据库文件,或内容不含敏感信息。 T/ISC0017—2022 编号 数据存储风险-2 测评项目 共享数据明文存储 风险描述 SDK与本地程序共同处理、使用的数据未加密,可能导致数据越权访问风险。 标准要求 5.2b) 测评方法 进入宿主App及SDK本地数据存储路径,结合技术文件查阅与开发人员访谈结果,查验是否存在明文存储的共享文件,如有则查验其内容是否存在敏感信息。 测评结果 存在风险:发现明文存储的共享文件,且内容存在敏感信息。未见异常:未发现明文存储的证书文件,或明文存储的共享文件内未存储敏感信息。 编号 数据存储风险-3 测评项目 数字证书明文存储 风险描述 明文存储的数字证书可能遭窃取、篡改,导致传输数据被截获、伪造传输请求等安全风险。 标准要求 5.2c) 测评方法 反编译SDK代码,查验资源文件中是否存在明文存储的证书文件。 测评结果 存在风险:发现明文存储的证书文件。未见异常:未发现明文存储的证书文件。 编号 数据存储风险-4 测评项目 备份数据明文存储 风险描述 如SDK开启数据备份功能并以明文存储备份数据,可能导致备份数据遭越权访问。 标准要求 5.2d) 测评方法 反编译SDK代码,查验是否开启了数据备份功能,如是则进入SDK备份数据存储目录,查验备份数据是否明文存储。 测评结果 存在风险:开启数据备份且备份数据明文存储。未见异常:未开启数据备份或备份数据加密存储。 编号 数据存储风险-5 测评项目 数据全局可读写 风险描述