编注

昨日,由微博曝出的国内众多知名大厂 iOS App 被恶意代码植入事件,已在短短不到一天时间内在整个国内互联网掀起轩然大波,向来以安全著称的 iOS 为何会遭如此大规模的恶意代码植入?少数派邀请到国内知名应用开发商 Clover 四叶新媒体联合创始人 @Saic,为我们重新梳理一遍整个事件,并以最通俗易懂的文字科普本次事件。

本文由 少数派 独家特约,转载请注明来源、原作者 ID 及原文链接。

文章太长,不想读 (TL;DR)

  • 攻击者直接修改了编写应用程序的工具 Xcode,在其中植入恶意代码(代号 XcodeGhost),主动发布到百度云等网盘,并在各个开发者论坛留言提供下载连接。
  • 恶意代码看起来和普通统计代码没有区别,苹果审核无法分辨,直接影响越狱和非越狱渠道下载的应用
  • 攻击代码存在多种变种,可能会诱导用户进行下载或修改密码等恶意操作。
  • 尽快修改 Apple ID 密码,并且不要信任来自被攻击应用内弹出的安装应用,重置密码等提示。

发生了什么

国家应急互联网中心 2015 年 9 月 14 日发布公告

 近日,CNCERT 监测发现,开发者使用非苹果公司官方渠道的 Xcode 工具开发苹果应用程序(苹果 app)时,会向正常的苹果 app 中植入恶意代码。被植入恶意程序的 app 可以在 App Store 正常下载并安装使用。该恶意代码具有信息窃取行为,并具有进行恶意远程控制的功能。

Xcode 是开发 iPhone / iPad 应用使用最广泛的开发工具,承担了将编程代码转换为可以实际运行程序的工作(简称编译)。

Xcode 通常跟随着 iOS 操作系统的版本更新而升级,如果需要在应用中支持一些新功能,例如通知中心挂件,Apple Watch 上的应用。需要使用最新版本的 Xcode 进行开发,编译提交至苹果,苹果审核后发布到 App Store。

一般情况下,开发者应该通过苹果官方的 Mac 应用商店 (Mac App Store) 来下载正版的 Xcode,一个 Xcode 的大小通常在 2G ~ 4G 左右。

因为国内的网络状况极差,部分开发者会选择通过下载百度云上其他人转存的版本进行开发。连接到苹果放置在国外的服务器速度极慢。虽然国内有官方的中转内容分发加速,但大部分时间也受到干扰。

黑客利用了这一弱点,展开了直接针对应用程序源头的攻击

  • 直接修改 Xcode 本体,在其中植入恶意代码,主动发布到百度云等网盘,并在各个开发者论坛留言提供下载连接。
  • 使用了修改后的 Xcode 程序编译程序时,恶意代码会自动加载到开发者开发的程序中。并提交到苹果应用商店

 

苹果以审核严格著称,为何会允许应用上架

  • 恶意代码加载到程序中后,将收集到的用户信息加密,发送到远程服务器。
  • 收集的信息包括系统版本,程序名称,用户的唯一识别 ID,语言等非敏感信息。
  • 对苹果来说,这段代码与普通的第三方统计代码并没有区别,甚至你在使用一些程序内的微博登陆或微信分享功能时,微博和微信都可能会收集这些信息到自己的服务器。
  • 因为没有涉及到苹果禁止开发者使用的接口,一切看起来都很正常,所以带有恶意代码的应用可以正常发布到 App Store

 

对我有什么影响

 
根据目前的研究进展以及自称是开发者公布的恶意代码源码,代码主要做了以下事情:
 
在用户安装了目标应用后,木马会向服务器发送用户数据。
 
服务器会返回一些可以让程序弹出提示的控制代码,例如:
 
  • 用户名密码错误,请到以下地址修改,用户确认后跳转到一个伪造的钓鱼网站
  • 弹出 App Store 官方的应用下载页面,诱导用户下载
  • 程序有升级,用户确认后可以利用非官方渠道、修改过的应用替换掉当前应用
  • 其他非官方应用程序的推广和下载
 

因为弹窗是从用户信任的应用里弹出,很多时候不会多做怀疑就会授权或确认下载。

另外根据相关研究,代码可能存在多种变种,可能存在直接窃取用户 Apple ID 的版本,模拟系统登陆框在技术上是可行的

 

我现在应该怎么办

  • 攻击者已经关闭了服务器,继续使用被感染的应用暂时不会有太大影响。
  • 开启 Apple ID 两步验证(教程)。
  • 这次攻击无论越狱或官方渠道都会受到影响。但越狱渠道可以调用苹果禁止使用的,例如获取用户安装信息、Apple ID 等接口,若非对系统安全非常了解的用户,应该尽量避免越狱或下载来源不明的助手和非 App Store 应用

 

恶意代码发布者的声明解读

来自开发者 @onevcat

算个账,微信用户总数5亿日活70%。每天每人就算5个POST请求,每个请求300Byte,日流入流量就接近500G,以及17.5亿次请求。据说服务器扔在亚马逊,那么资费算一下每个月应该是存储$450,请求$260K。这还只是单单一个微信,再算上网易云音乐等等,每月四五十万刀仅仅是苦逼iOS开发者的个人实验?

扩展阅读