不同的配方,相同的味道。App Store 一直都在飞快地发展,现在这块蛋糕越来越大,尤其是在中国地区。所以,想要从这块蛋糕上尝到甜头的人也越来越多。做法正经的,我们叫他们商人;做法不正经的,我们只能称之为奸商甚至是犯罪份子了。可怜开发者,要背锅了。
罪恶之源被曝光
“我们已经了解到,一系列采用第三方移动广告 SDK 进行开发的 iOS 软件会通过私人 API 擅自收集用户的个人信息,包括邮箱地址、设备序列号以及路由数据等等。然后,这些软件把用户数据传向一家名为有米的移动广告供应商所设的服务器,开发者所使用的 SDK 也是由这家供应商所开发的。
这种行为已经违反了我们的安全与隐私准则,所以使用有米SDK 进行开发的软件将会从 App Store 下架,提交的审核也会被拒绝。苹果正在与开发者进行紧密合作,帮助他们将自己的软件进行升级,以配合App Store 的准则,保证用户信息的安全,尽快让受到影响的软件回到App Store。”
上面这一段话,是苹果发言人向代码数据分析机构SourceDNA 发送的一次***回应,因为后者在近日有一段了不得的发现:App Store 当中有一大批软件会通过私人API 收集用户资料,然后传向有米的服务器。有米,这是一家来自中国的移动广告供应商,他们自己有一套SDK,与之合作的开发者可以使用他们的SDK 来开发软件。
通过使用自家的检测工具,SourceDNA 在App Store 当中发现了至少256 款使用有米SDK来开发的软件,所收获的累计下载次数超过 100 百万次,这些软件将会被苹果一一下架(目前已经有一批被下架),其开发者基本上也都来自于中国。一直以来,苹果都不允许第三方 SDK 带私有 API,但这一次有米明显是绕过了 App Store 的审核机制。
根据 SourceDNA 公布的信息,使用有米 SDK 开发的软件会收集以下信息:
1:安装应用的具体列表
2:iOS 设备序列号(识别号)
3:硬件及外接设备的标识符等信息
4:Apple ID 邮件地址
据了解,有米通过私有 API 收集用户信息已经不是一天两天的事儿了,他们早在两年之前就开始这么干,并随着时间的推移越来越肆无忌惮。也许是因为有米有特别的隐藏数据收集行为的技巧,苹果也一直没有发现他们所干的勾当。收集了两年的用户资料才被发现,他们到底是怎么做到的呢,我们先来看看 SourceDNA 是怎么发现的。
背后的技术解析
iOS 的二进制文件包括 ARM 机器代码,SourceDNA 会对这一些代码进行解析。调用一个 Objective-C 方案时,它是通过 objc_msgsend 来进行矢量导航的,而且它是以字符串的方式来接收类别及方案。一般情况下,在调用 objc_msgsend 之前这些字符串可以通过查看数据参考来完成静态解析。SourceDNA 会跟踪这些调用目标类别/方案的起源和目的,然后建立一个调用图,用来探测每个(受到影响的)应用程序是使用了哪种方案。
然而,在某些情况下,这些参数是不能被静态解析的。因为它们只是字符串,它们可以在运行时通过任何字符串操作例程来创建。所以,一些工具会利用这种特点来混淆类别和方案的名称,在调用 objc_msgsend 之前解扰字符串。
一款应用程序还可以通过调用 dlopen 来加载一个全新的资料库,然后通过调用 dlsym 在这个资料库里面访问相应的函数或数据。这样一来,动态链接器在指定的文件中就会进行勘查(首先检查它的代码签名),然后查找给定的符号地址。由于资料库和符号名称都是字符串,因此也可以在运行时创建。
SourceDNA 对这一个在数以百万计应用程序当中存在的代码行为进行了解析,主要是确认运行时间里的资料库加载是否被拿来访问私有的 API接口,SourceDNA 对他们所收集到(应用程序)资料进行排查,如果符合以下条件就证明应用程序会收集用户的个人信息:
-调用dlopen、dlsym 或 nsclassfromstring / nsselectorfromstring
-通过各种字符串控制函数来生成参数
经过排查发现,有几百款应用程序符合他们的设定。这些应用程序使用的是 sprintf 和 %s 格式字符串以及 %@ 和 NSString stringwithformat:。SourceDNA 为此还通过使用附近的静态字符串写了一个脚本来扩展这些格式字符串,然后对重构的参数进行聚合。***,就得到了有米 SDK 试图收集用户个人信息的证据。
至于为何有米通过私有 API 收集用户资料的行为这么久才被发现,主要是因为这家移动广告商通过枚举电池系统等外接设备突破了苹果的限制,并且又以硬件标识符的方式对设备的序列号进行搜集,因此很难被查到。据了解,这是自 App Store 在 2008 年上线以来,***次有人以这样的方式来绕过苹果的审核机制。
苹果做法可点赞
这一次的有米 SDK 事件很容易让我们想起不久之前的 XcodeGhost,因为中招的都是 App Store,而且源头都是中国区。不过,其影响范围可不仅仅是中国。上一次的 XcodeGhost 事件,主要是因为开发者使用了来源不明的 Xcode 开发工具所致,影响到的都是像微信、铁路 12306、联通手机营业厅、高德地图等非常热门的软件,苹果也因此在***时间对受到影响的软件进行了暂时下架处理。
在本次事件中,SourceDNA 并没有列出他们探测到的 256 款应用程序名单,目前我们所知中国版的麦当劳 App 已经因为该事件而遭到下架处理。我们还通过有米的官网了解到,像唯品会、淘宝网等知名 App 是他们的合作伙伴,至于是否受到影响目前还不得而知,有米方面至今还未对此报告作出回应。
好在,无论是涉及到用户安全还是隐私问题,苹果的态度一直都是“坚决拥护”。XcodeGhost 事件如是,有米 SDK 事件如是,苹果都在***时间作出反应,该封杀的就封杀。
iOS 平台也不是没有出现过安全事故,但此前我们看到的恶意软件感染事件基本上都是黑客直接把病毒植入伪装的应用程序内,又或者是通过外部链接来引诱 iOS 上当。然而这一次的 SDK 以及上一次的 XcodeGhost 事件,不法份子则是通过开发软件的源头下手,《福布斯》杂志称之为“一种全新的方式”。
近段时间曾有调查发现,中国已经成为iOS 应用最重要的市场,因为中国区的 App Store 应用下载数已经超过了美国(收入上还落后)。随着 App Store 下载量的进一步提升,中国区应用市场这块蛋糕也越来越大,而盯上蛋糕的黑客也自然越来越多。也许不久之后,我们又会见到“一种全新的方式”。
***说一句,在本次事件当中,开发者也很可怜的,因为他们很有可能也不知道自己开发的应用会搜集用户的信息,因为有米根本没有告诉他们。