//本来想在微博写一点,考虑到一些安全因素,就在自己Blog里吐吐槽好了.

此次XcodeGhost事件,一大部分中国厂商中招,包括微信,12306等体量巨大的app,波及用户数以亿计,被窃信息数量不得而知,但根据这个用户基数来推算,想必也是天文数字.此次事件从思路和实现来看,可能触及到了黑产链条中最为隐秘的那一部分,好在主犯目前已经落网(?),具体的情况还需要等待进一步消息.

那么问题来了,为什么XcodeGhost能够在中国互联网上如此兴风作浪?又是为什么这么久却没人能够察觉呢?
后一个问题就不在此赘述,相信这些天的几篇文章已经讲得足够详细.
http://drops.wooyun.org/news/8864
http://t.cn/RyCJ8nX

那么来看第一个问题,似乎答案已经呼之欲出了

没错,就是因为墙!墙!墙!因为很重要所以说三遍.
经过此次事件,伟大的防火长城继扮演政治工具,资本工具之后,又成功扮演了作恶帮凶的角色.

有人不信:”你强行黑” “明明是程序员用黑苹果开发的原因”
容我慢慢道来

首先澄清一个在事件初期酝酿出来的一个误会,网易对员工比较抠这是事实,但是黑苹果这件事终归是一个段子,绝大部分的网易程序猿还是选择正版的苹果进行开发工作,再退一步说,Xcode本身是apple官方放出的开发工具,不存在什么收费的问题,所以更不存在为了不付费使用盗版而去在不明来源的地方下载的事,而且就算是黑苹果,也可以便利的在AppStore上直接下载到最新的Xcode.

那问题来了,为什么这些来自业界大公司的程序员要使用未经来源验证的不明Xcode呢?
原因其实很简单,因为受到墙的干扰,官方下载实在是太慢了.

这就要谈及墙的特性了.
在很早很早以前,墙还没那么高的时候,墙实现封锁的手段很单纯,就是针对http请求是明文传输的这一特点,对http请求的内容进行敏感词匹配,如果发现敏感词,则将这个连接reset掉.最为常见的连接已重置就是这么来的.
后来人们为了对抗墙又开发了各种各样的手段来逃过墙的管制,而墙也随之进化出了五花八门的特性.细节在此不详述,有兴趣可以参考http://t.cn/R2Ghh4U

这里要提到的就是墙的随机丢包和流量控制特性
解释起来很简单,既然墙无法控制所有出入境流量,而全部切断则违反了墙本身存在的价值.那么只要干扰你的正常通信就可以了,于是墙做了很简单的处理,所有出入境的数据包在经过出口的时候都会进行随机的丢弃,大大降低了通信的质量.这个特性在不同时段和不同出口的强度是不同的,而且并非全因为政治因素,参考前一阵子上海电信通过大幅提高丢包率来逼迫用户使用其氮气瓶业务的手段.
另一方面,当你跨过重重困难终于和海外服务器建立连接开始传输数据的时候,墙会分析你的行为,比如时间和流量特征,当你和服务器交换数据量过大或具备某些特征的时候,视情况出手干扰连接质量或是直接阻断通信.

而非常不巧,苹果使用的CDN服务商正是境外节点处于墙的黑名单上的akamai,akamai的境外节点中国境内被墙的不能自理,基本常年处于半瘫痪状态,当你从AppStore开始下载时不幸解析到了akamai的节点,那么下载速度会极慢,并且高概率在半路失败.至于境内akamai节点的分布情况我并不清楚,但是似乎并不是自建而是和ISP合作,并且没有承担apple的内容分发服务.

那么问题明白了,当你从AppStore下载东西的时候,如果被解析到了akamai的境外节点,就会几乎无法正常使用,同理苹果的其他服务也一样,我前几天恢复Mac系统进行二步验证的时候就被卡吐了.

那么苹果有没有在境内部署CDN节点呢?答案是肯定的,苹果号称和中国电信合作对大陆的网络环境进行了特别的优化,也就是CDN是托管到电信那里的,说如果你解析到的是电信的CDN服务,不考虑到网络环境本身的问题(南北互联或者CDN节点分配问题),按理说是可以比较舒服的享受苹果服务的.这也是很多人拿自己举例子说自己下xxx完全满速,没任何问题的原因.

但是不能正常使用的情况是广泛存在的,比如我手上的三条联通电信移动线路在使用苹果服务的时候大部分都是不能自理的.
为什么这么多人还是不能正常使用呢,这个责任一部分应该给苹果,苹果似乎对天朝这个巨大而特别的市场并不是非常上心,对特殊网络环境考虑的太少,CDN优化迟迟做不到位,导致很多用户最后都解析到了akamai….但是话说回来,苹果真是相当无辜的…

另一部分责任是运营商的,国内的网络环境实在太过险恶,比如说,很多地区运营商会把常用公共DNS服务器如114谷歌等(谷歌本身会撞墙 这个另说)劫持到本地的自有DNS服务器来,更有丧心病狂的直接劫持所有53端口的UDP包,来实现广告投放等等功能为自己牟利,但是这些服务器不仅作恶,水平往往也很差,无形中增大了CDN优化成本和难度. 还有部分运营商甚至干出做静态缓存的荒唐事来,比如长宽等,这些ISP把热门静态资源缓存在本地服务器,捕获请求的时候直接发给用户,节省带宽和流量开销,但是很多缓存都是过时的,甚至是带毒的,剩下的事不言而喻(appstore全程走https倒不担心这个,但是如果从别的洁净渠道下载Xcode,一样也可能受到缓存的污染)

另外就是国内一票吸血下载软件受到的污染,原理类似上面的缓存污染,迅雷的产品经理在微博上进行了澄清,但是似乎仍有争议

综上来看,正是国内常年在GFW的压迫和中国特色大旗下蓬勃顽强茁壮发展起来的畸形病态互联网环境造就了这一切
也许墙的本意是维护稳定,保护国家安全,但是现在看来,真是莫大的讽刺

最后给几个tips 请尽量使用官方渠道下载所需软件,若运营商没劫持过DNS服务则推荐使用对苹果服务进行过特别优化的DNS服务器,比如V2EXDNS,对于下载下来的文件能验证hash值的尽量验证.

江湖险恶 且用且珍惜

业余水平所限,如有谬误,敬请指正