热更新技术分析与治理策略研究
2023-08-30宋恺王淞鹤武林娜周飞
宋恺 王淞鹤 武林娜 周飞
(1. 移动应用创新与治理技术工业和信息化部重点实验室,北京 100191;2.中国信息通信研究院泰尔终端实验室,北京 100191)
0 引言
近年来,移动互联网行业蓬勃发展,各类移动应用技术、模式、架构不断演进。其中,热更新技术作为移动应用开发中普遍使用的一种技术,常用于实现代码热修复、数据统计、内容推送等业务功能[1],提高了开发效率,丰富了应用场景。然而,热更新技术也容易被恶意开发者利用,成为侵害用户权益、规避合规监管、对抗技术检测的手段,给移动互联网行业生态的健康发展带来风险与隐忧。因此,亟需加强对热更新相关技术检测及合规治理的策略研究。
1 概述
1.1 热更新技术定义
热更新技术是指通过动态加载方式将代码或资源装入运行中的移动应用软件(Application,App),实现App的即时更新。该技术源于移动应用插件化的思想,即对App进行模块化开发,将不同的业务逻辑代码进行拆分和封装,形成“主程序+插件程序”的模式,并根据不同业务需求进行动态更新和插件替换[2]。相较于传统的App更新方法,热更新技术无需开发者重新发版、分发平台重新审核上架、用户重新下载,具备加载速度更快、更新成本更低、无需二次安装等特性。
1.2 原理及应用
根据功能场景的差异,可将常用的热更新技术方案分为资源热替换、代码热替换和动态库替换三类。其中,资源热替换通过修改App的已有资源包或添加新资源包来实现图片、文字、用户界面(User Interface,UI)布局等资源的动态更新和替换,主要应用场景包括UI更新及修复、动态换肤等;代码热替换主要包括原生层替换、类加载替换和即时运行三种方式,可用于漏洞修复、代码更新等场景;动态库替换通过重载新的安卓动态库实现原生层代码的热更新。
2 相关问题分析
热更新技术的发展和应用丰富了App业务模式,在促进产业发展的同时,技术滥用、衍生产品变异以及相关管理机制缺失等问题集中凸显,由此引发的各种安全隐患需高度关注、及时治理。
2.1 技术滥用严重
目前,由于技术滥用,热更新技术已成为恶意应用隐蔽扩散和侵害用户权益的常用手段。为了更好地隐藏自身恶意行为和违规内容,恶意应用通常在商店上架审核和在架投放阶段将自身无害化并伪装成正常应用,而当用户完成下载安装或满足某些特定触发条件时,再通过热更新的方式下发包含恶意代码或内容的新版本,实现App的“换装”“变脸”[3-4]。例如,某款健康类App在提交商店上架审核时的程序包体不包含恶意代码,而在用户下载并首次打开运行时,通过热更新方式加载恶意代码,实现自身图标的透明化,使用户无法正常卸载,同时开启常驻进程频繁弹出广告,影响用户正常使用。
此外,即使是对于没有恶意行为的常规App,技术滥用也会导致潜在的安全风险。具体而言,部分App同时集成多个热更新框架,导致业务功能进一步复杂化,不仅降低了其自身安全性,而且增大了安全检测难度。
2.2 衍生产品变异
近年来,热更新技术的衍生产品增多,各类产品实现原理和技术特点各不相同,在安全性、稳定性等方面难以达到统一标准。头部互联网公司具备更多资源和技术能力用以自主研发热更新框架并对外输出解决方案,中长尾企业则基于外部开源框架实现热更新框架的改造和套用。目前,主流的热更新框架包括微信的Tinker、大众点评的Nuwa、百度金融的RocooFix、饿了么的Amigo、阿里的AndFix[5]和Sophix、美团的Robust以及腾讯的KKFix等(见图1)。这些热更新产品的功能深度定制、代码结构复杂,同时在行业内广泛传播,为安全技术分析和应用合规监管带来一定困难。
图1 主流热更新框架
2.3 监督检测能力不足
当前各类应用商店、检测机构和平台针对热更新技术的监督和检测能力不足,尚未形成完整、有效的治理方案,其治理难点主要在于热更新行为触发条件复杂多样、检测和监测标准不统一等。
热更新行为的触发条件和触发机制复杂多样,可能根据时段、地域、下载渠道等方面的差异进行变更,大大增加了行为识别的难度。对于“人工巡查+安全检测”的常规检测模式而言,复杂多样的触发条件和触发机制不仅显著增大了检测范围和数量,还大幅降低了检测效率。
同时,行业内尚未形成界定App热更新违规行为的统一标准,导致对热更新违规行为的判断基准和评判规则不一致,难以在行业治理层面形成合力。
3 国内外相关政策
当前,国内外暂无针对热更新技术的法律法规和标准要求。此外,由于国内外移动互联网生态环境的不同,国外主流应用分发平台如谷歌应用商店Google Play和苹果应用商店App Store与国内分发平台在热更新技术政策要求和技术保障方面存在较大差异。
3.1 Google Play相关政策
在政策要求方面,对于所分发的App,Google Play禁止其采用Google Play内设更新机制以外的其他任何方式修改、替换、更新应用本身,即App不得从Google Play以外的其他来源下载可执行代码(例如Dex、Jar和So等可用于热更新的文件)[6],但该限制不适用于在虚拟机上运行且只具备有限的安卓应用软件编程接口使用权限的代码(例如WebView或浏览器中的JavaScript)。
在技术保障方面,为方便App进行轻量级更新和修复、保持最新状态,Google Play核心库提供了“应用内更新”功能接口,有助于确保App的更新行为在平台的管控机制下进行。
3.2 App Store相关政策
在政策要求方面,App Store规定App在一般情况下不得下载或安装可执行代码,但可执行代码在满足以下条件时,可被下载安装:仅通过已向App Store明示的且符合预期目的的特性或功能来改变APP主要用途;不为其他代码或应用创建商店或下载渠道;不会绕过操作系统的签名、沙盒或其他安全功能[7]。
在技术保障方面,在满足以上条件的基础上,苹果应用开发者可使用内置技术框架WebKit或JavaScriptCore下载并运行代码。为了有效保障热更新技术的规范使用,App Store对平台上的App进行了严格的安全检测,包括检测App是否使用具有修改原生代码能力、可能造成严重安全风险的JSPatch等第三方热更新框架,对具有相关问题的App开发者主体予以警告,并对App进行风险处置。
3.3 国内应用分发平台相关政策
当前,国内应用分发平台对于热更新技术的管理要求存在差异。一方面,大多数应用分发平台(如应用宝、百度手机助手、360手机助手等)禁止App通过热更新变更除游戏资源包以外的内容,并建立App上架、在架审核机制,利用巡查抽检和投诉举报等方式对App的弹窗更新和热更新行为进行检测和监测,一旦发现违规App,会立即将其下架甚至加入恶意名单;另一方面,少量应用分发平台仍允许App进行热更新,未建立具有针对性的平台监督审查机制。
4 热更新技术合规治理策略研究
热更新技术涉及的业务功能多样、影响范围广泛、问题场景复杂,使得单一的监督管控手段收效甚微。一方面,热更新技术作为App开发过程中常用的技术手段,在代码更新、漏洞修补等应用场景中具有不可替代性,同时在优化资源加载、提升宿主环境结合度、拓展用户服务等方面发挥着积极作用;另一方面,热更新技术的滥用和无约束发展,对移动互联网发展及用户权益保护产生一定威胁,行业的合理约束及合规监管势在必行。为了对App热更新行为进行有效治理,需从行业标准规范、技术监督、行业自律三个方面入手,构建以移动终端企业、应用分发平台及应用商店、App及软件开发工具包(Software Development Kit,SDK)开发者为主体的热更新技术监督及治理体系,强化关键责任链管理制度,坚持源头治理,防范技术风险,引导热更新技术良性发展。
4.1 建立行业标准规范
在标准层面,可围绕移动互联网行业责任主体构建热更新技术合规使用标准体系,对移动应用软件分发平台、移动应用软件服务提供者、热更新技术厂商提出规范要求。
4.1.1 移动应用软件分发平台
移动应用软件分发平台应该要求移动应用软件服务提供者登记所使用的热更新框架信息,对具备热更新能力的移动应用软件进行审核检测并对违规热更新行为采取处置措施,同时针对热更新问题构建相关安全机制及用户反馈渠道。
4.1.2 移动应用软件服务提供者
移动应用软件服务提供者应该明确热更新行为的应用场景(如漏洞修复、模块更新、资源下发、小程序装载等),根据其必要性和紧迫性进行分类,并根据更新时机和更新方式进行分级,当涉及重大安全漏洞及代码缺陷修复时,可进行即时热更新。
在用户权益及个人信息保护方面,若要集成热更新框架,移动应用软件服务提供者应该向用户清晰明示热更新的目的、方式、规则、内容、包体大小等信息,未经用户同意不应该进行热更新;若热更新行为造成权限变更、个人信息处理规则变化,移动应用软件服务提供者应该向用户明示告知并征得用户同意;热更新行为不应该擅自更改用户设置。
4.1.3 热更新技术厂商
针对热更新技术厂商,应从安全、合规指引、技术备案三方面进行要求。首先,热更新技术厂商应保障其代码安全,对所集成或引用的第三方代码框架进行代码审计,避免代码篡改或恶意利用;其次,热更新技术厂商应提供开发者合规指引,确保开发者可以正确使用热更新能力;最后,热更新技术厂商应进行热更新技术备案,备案内容包括接口功能、应用场景、触发机制及原理等,从而方便监管机构评估审查。
4.2 提升行业技术监督水平
4.2.1 移动应用分发平台监管
在平台管理方面,移动应用分发平台应完善应用上架审核、在架更新流程。具体而言,App上架前开发者应向平台提交完整的热更新框架清单;在架期间如需热更新,需在平台提交更新申请,包括更新代码包、更新后版本号、功能描述、日志等信息。此外,移动应用分发平台应当完善应急更新机制,对于涉及修复重大漏洞和严重功能缺陷的更新,打通快速审核上架通道,减小造成的风险和损失。
在技术检测和监测方面,移动应用分发平台应构建“事前、事中、事后”的检测和监测体系,实现“发现、核验、处置”的闭环治理。移动应用分发平台应事先对典型热更新框架及其代码特征进行识别,缩小监测范围;事中通过人工巡查、舆情反馈、数据监控等方式进行专项巡查和布控;事后对存在恶意行为的应用进行即时处置并留存相关证据。
此外,移动应用分发平台可参考国内外先进经验,提高平台自研热更新能力并提供给开发者,从而在保障更新内容及功能合法合规的同时,兼顾快速审核、高效更新的要求。
4.2.2 移动终端系统监管
移动终端应加强对App的行为监测、权限管理,包括对应用软件在静默状态或后台运行时的代码加载、类库替换、图标及布局变化、权限变更、异常的网络流量以及资源文件加载等行为的监控和记录,同时可采用通知栏或弹窗等形式向用户即时提示。此外,对于小程序、H5应用等新形态应用,移动终端可通过异常网址访问监控等手段进行安全风险监测。
4.2.3 发挥App签名备案技术的作用
除移动应用分发平台和移动终端系统监管外,可将应用软件更新行为管理与应用软件签名相结合。应用软件更新时需向平台进行申请,平台审核后通过认证机构获取新的应用签名,该签名中包含应用软件版本、最近一次更新时间、更新类型及目的等信息。上述方法可以实现对应用软件热更新行为的统一标识,有助于移动应用分发平台、移动终端系统、用户等对其进行有效识别,同时也保证了应用软件恶意行为的可查、可溯、可追。
4.3 促进行业自律
App与SDK开发者应当合理规范使用热更新技术,避免技术滥用,同时应提高用户权益及个人信息保护意识,具体措施包括对热更新行为进行明示告知并取得授权同意、加强对热更新下载和删除的管理、加强对热更新行为的报备等。
对热更新行为进行明示告知并取得授权同意指应用软件、SDK开发者或运营者进行热更新前需向用户明示告知其更新目的、更新方式、更新内容、权限或个人信息处理规则是否变化,并获得用户同意。例如,SDK开发者需在开发者文档中说明是否存在热更新行为并明示其具体应用场景;除代码漏洞修复等特殊情况外,SDK更新需首先征得宿主App的授权同意。
加强对热更新下载和删除的管理指热更新代码或资源补丁的下载和删除行为必须获得用户授权,不应在用户不知情的情况下静默或后台静默下载,不应未经用户同意删除热更新补丁的安装包。
加强对热更新行为的报备指应用软件、SDK开发者或运营者需对热更新行为进行记录,保留相关代码或资源补丁包。例如,对于通过分发平台管理下发的应用,其热更新行为需加强向平台进行报备,同步更新平台上的相关信息;对于更改应用图标及UI界面布局等对应用软件产生重大变化的更新,应先通过平台审核再下发更新补丁。
5 结束语
热更新技术已经发展多年,但其安全问题仍然严峻复杂,需联合行业内终端企业、应用分发平台、App及SDK开发运营者共同构建热更新治理体系,从标准规范、技术监督、行业自律等方面入手,着力提高热更新行为治理能力,防范技术风险,引导热更新技术良性发展。