自6月7日苹果 App Store 审核团队近日向厂商发出“最后通牒”,要求开发者在 6 月 12 日之前去除软件热更新功能,不然有可能下架后,6 月 22 日,有媒体报道,一周内苹果 App Store 下架了近 4 万款中国 App 。一种流行观点认为,苹果不是说着玩,而是真对热更新动刀子了。 热更新是一种各大手游等众多 App 常用的更新方式,即用户通过 App Store下载App之后,打开 App 时遇到的即时更新。 2017年6月,AppStore 审核团队确实针对 AppStore 中“热更新”的 App 开发者发送邮件,要求移除所有相关的代码、框架或 SDK,并重新提交审核,否则就会在 AppStore 中下架该软件。 究竟怎么回事?“热更新”到底有什么安全隐患? 以下为雷锋网 (公众号:雷锋网) 1.雷锋网:苹果应用商店的“热更新”最初是因为什么需求产生的? 王纬:早期的 AppStore 审核比较慢,开发者遇到线上的 Bug,会因为审核周期的问题造成 Bug 修复不及时。 很多公司尤其是个人开发者追求产品发版的速度,造成产品上线前没有经过非常全面的测试,他们希望通过“热更新”的方式来弥补产品上线前测试不充分的问题。 随着“热更新”的使用,也有很多产品开始通过“热更新”的方式来开发功能,这样产品发版就不需要 AppStore 审核,从而达到快速发版的目的。 2.雷锋网:“热更新”被利用是在什么时候发现的?有哪些利用方式,造成的影响大吗? 王纬:目前没有发现黑客利用“热更新”发起对 iOS App 的攻击。但是我们(Nirvan Team)早在 2015 年 3 月份就关注到“热更新”可能引起安全问题,并在国内的一些知名互联网应用中发现了“热更新”相关漏洞,可以实现远程的任意代码执行。 “热更新”的利用方式主要是下发恶意的“热更新”代码。由于“热更新”框架的不同,具体的恶意代码可能是 Lua、JavaScript、Lisp 方言等。 大部分“热更新”框架都没有实现沙盒,因此恶意代码几乎可以完全控制 App,我们曾经为某个知名的 App 编写了演示性质的恶意代码,可以控制 App 的启动页面,可以获取用户的登录密码,并传递到远程服务器中。 这里还需要说明的是,利用“热更新”做恶意攻击,一般需要结合其他的攻击技术,比如:DNS 投毒、恶意 WiFi、首先攻陷代码下发服务器等。 3.雷锋网:这次苹果大刀阔斧的下架 App,真的是出于“热更新”的安全原因吗? 王纬:苹果这次下架一批 App 不只是因为“热更新”问题,还包括:山寨克隆应用、传播盗版音乐内容、多年无人下载的应用、不兼容64应用系统。 我个人认为苹果这次处理“热更新”,一方面是由于“热更新”会引起一些安全问题,主要原因是因为“热更新”会削弱苹果对 AppStore 中应用的控制力,这应该是苹果更在乎的。 4.雷锋网:只要 App 开发者把代码改了就没事吗? 王纬:从 AppStore 审核的策略来看,开发者只是把“热更新”相关的代码删除了,可能无法完全满足 App 的审核的要求。 除了“热更新”框架,苹果还要求开发者不使用可在运行时改变程序行为的 API,包括:NSClassFromString、NSSelectorFromString、dlopen 等。