引言
10 月 15 日晚上,我参加了 MDCC( http://mdcc.csdn.net/ )大会晚上的英雄宴,宴会上见到了 XcodeGhost 的研究者,阿里巴巴资深安全工程师蒸米。
蒸米是最早在乌云上公开 XcodeGhost 的工作原理的人。在后续 XcodeGhost 的服务器关闭后,蒸米也介绍了通过 DNS 污染来接管 XcodeGhost 木马的技术。让大家对于 iOS 平台的安全有了新的认识。
之前我和蒸米在微博上多次私信交流,这次当面见到真人非常开心。蒸米是一个性格开朗阳光的人,看起来非常年轻,一问之下才知道他 26 岁就提前博士毕业了,毕业之后一直在阿里从事安全方面的工作。
以下是我们讨论的一些总结。
Xcode 的安全
这次 XcodeGhost 事件之后,让大家把安全的焦点集中在了编译器上。估计大家不会还从迅雷或网盘下载 Xcode 了吧?但是这样就安全了吗?
蒸米在交流中提到,其实仅仅这样 Xcode 也是不安全的。为什么呢?因为我们在 Mac 上总要安装软件吧?有很多 Mac 下的软件并不通过 Mac AppStore 销售,而是以安装包的形式来独立发布。而安装这类 APP 时,常常需要用户输入登陆密码来获得更改系统内容的权限。这个时候,如果是一个恶意软件,偷偷修改了你本地的 Xcode,比如安装一个恶意的插件,你如何防?有些人习惯从一些非法网站去下载盗版的 Mac 软件,这个时候,你的 Xcode 安全也暴露在风险之中。
第三方库的安全
这个是我自己的一个脑洞大开的想法,由于某些原因,国外的 Cocoapods 源很慢,所以常常有一些人宣称自己基于国内的服务,建立了镜像源。如果想做一点恶意行为的话,这些人完全是可以修改一些常用的第三方库(例如 AFNetworking),把 XcodeGhost 的代码植入进去。如果真的有人做了,你还能信任这些国内的镜像源吗?
Safari 保存密码的问题
蒸米在和我交流中,也提到了对于 Safari 保存密码的安全性问题。就蒸米当场给我的演示可以看出,在设置里面的 Safari -> 密码一栏,经过 Touch ID 验证,就可以将你的所有登录过的帐号密码查询到。而在 iPhone 5 一类没有 Touch ID 的 iOS 设备中,这些密码是被 4 位的锁屏密码保护,这个保护是极其弱的。如果你网上 google 一下,就可以找到专门暴力破解 4 位锁屏密码的工具。
看着蒸米当场的演示,真是把我吓了一大跳。同学们,你们有没有 Touch ID 的 iOS 设备吗?哪一天它要是丢了,你知道意味着你 Safari 所有登录密码可能被盗吗?
为什么 iOS 系统比 Android 还不安全 ?
蒸米在交流中一直强调他的观点,他认为 iOS 系统比 Android 还不安全。这一点让我非常不解,我当即指出:iOS 程序有 sandbox 限制,无法随意做高危险的事情,比如 Android 深受其害的扣费短信一条,iOS 程序很难做到自动发送。因为首先 iOS 程序很难在后台自动启动,另外,自动发送短信也是被系统禁止的。
但是蒸米解释让我觉得也很有道理,他的理由主要有以下几点:
iOS 的系统漏洞更多
iOS 的系统漏洞其实比 Android 更多,Android 因为是开源的系统,所以相关的漏洞更容易被发现和修复,而 iOS 是封闭的系统,它的漏洞只能指望苹果自己的工程师来修复。
就在我和蒸米交流的当天(10 月 15 日),国内的盘古团队宣布完成了 iOS 9 的越狱。而这距离 iOS 9 正式发布(9 月 17 日)才刚刚满一个月。蒸米说,其实越狱团队早就完成越狱的技术工作了,只不过需要完成越狱相关的产品以及等一个比较合适的时间点发布。所以,很有可能在 iOS 9 还在 Beta 版的时候,相关的漏洞就已经收集到了。
相对来说,Android 的最新版其实相当安全。不过 Android 的问题是 ROM 更新太慢,由于大多数 ROM 都经过了厂商的定制,使得大多数人无法及时更新到最新的操作系统,这个问题极大地降低了 Android 的安全性。
iOS 的系统版本和机型非常集中
iOS 的系统版本非常集中,一般都是最新发布的 2 个大版本。另外 iPhone 机型也非常少,每年固定出一款。这使得黑客可以针对单一系统或机型挖掘出来的漏洞,得到极其方便地扩散和影响。
还记得早年 iOS 系统上面发面的 PDF 漏洞吗?用户只需要访问一个指定网址,就可以完成越狱过程。如果在未来有一个黑客找到一个类似这样的高级漏洞,那么受影响的很可能是所有的 iOS 用户。
相对来说,Android 的机型分散反但成了它的优势,我们自己开发小猿搜题 App 时,就那么几个界面都适配得要吐血,黑客的恶意程序难保不在一些机型上出现适配问题。除了硬件,Android 的 ROM 也是被修改得千差万别,所以黑客很难有精力把它的恶意程序做到完美适配。
iOS 系统更容易让人放松警惕
我们尝试过用 IDA 逆向国内的 iOS App,发现国内的包括腾讯,阿里,百度,网易等,都没有对自己的 iOS App 源码进行混淆。而在 Andorid 端的,不但 50% 的 App 都经过了加壳和代码混淆,而且还有不少这方面的创业公司出现。这次在 MDCC 大会展台中就出现了多家做 Android 安全的公司。
我在交流中问蒸米,我们逆向了支付宝和淘宝的 iOS 客户端,发现代码都没有混淆,为什么呢?蒸米说,我们混淆了支付宝核心支付相关的代码,另外的代码混淆的推进,不是我一个人能做到的,需要等时机成熟。
我想这就是现状,大家对于 iOS 系统更多的时候是放心的,所以反倒容易翻船。就像我上面提到的 Safari 密码保护的问题,有多少人注意到它可能带来的安全问题呢?
XcodeGhost 是不是也是大家对 Mac OS 系统的一种放松警惕的行为?一些朋友在网上下载盗版的 Mac App 是不是一种放松警惕的行为?这些最终都可能成为黑客攻击的关键点。
提一个开放性的问题:如果你逆向了微信 iOS 客户端,你可以做哪些攻击?
Sandbox 真的就是绝对安全吗
我在反驳蒸米时,提到了系统的 Sandbox 对于 App 的各种限制。蒸米指出,其实有好多方法来突破 Sandbox,比如调用系统的私有 Api(不要问我如何绕过苹果审核),又比如借助一些 iOS 的漏洞。
完美的越狱对漏洞的要求比较高,因为它需要保证即使系统重启,越狱状态也同样能保持。而如果你的目的如果不是完美越狱,而是干一些坏事的话,对漏洞的要求就不是那么高了。
你知道吗?中国的越狱团队还会向苹果上报漏洞,蒸米说这是为了 Reputation,一般是把手里多得觉得不太好用的漏洞报出去,你就可以想像这个封闭系统的质量了。
总结
我最后问蒸米,是不是可以这样说:「iOS 和 Android 就是俩落难兄弟,都觉得对方弱,其实都差不多,全身都是洞,都不安全?」。蒸米说是的,毕竟开发者不是安全工程师,安全工程师们也不会开发,所以漏洞是在所难免的。
那这个事情就无解了吗?我想很可能是的,我们能做的,就是尽量提高安全意识,尽量小心,毕竟黑客也是会考虑性价比,挑软柿子欺负。最后蒸米向我推荐了 fireeye 的攻击检测网址,上面可以看到全球正在发生的黑客攻击行为 https://www.fireeye.com/cyber-map/threat-map.html ,我想这可能就是现实吧。