Xcode幽灵:速度的代价
研究发现,迅雷下载加速机制存在严重设计缺陷,恶意攻击者可轻松伪造或劫持下载链接以偷偷传播恶意程序或非法内容,且都是先天性已知缺陷,5年前迅雷已收到相关安全报告。鉴于迅雷拥有近8成下载市场份额,是时候公开讨论这个悬而未决的问题了。
速度的代价
近日,一个被命名为XcodeGhost(Xcode幽灵)的恶意程序触动了所有人的神经。Xcode,苹果提供给应用软件开发者的生产工具,当这个生产工具被XcodeGhost污染后,其生产的软件产品即被自动植入恶意程序,通过App Store更新通道,XcodeGhost迅速而合法地侵入数千万台iOS设备,窃取设备和用户信息、伺机实施远程控制,安全威胁极大。根据最新报告,跨平台的主流移动游戏引擎Unity等也发现了被以相同手段污染的版本,这意味着iOS、Android和Windows平台全线沦陷,开发者集体沦为不法分子大规模攻击普通用户的跳板。
幸运地是,腾讯公司安全团队及时发现并通过国家互联网应急中心通报全国,同时报告苹果公司,给XcodeGhost的疯狂蔓延势头踩了一脚急刹车。据报道,苹果公司及绝大部分相关软件厂商已经或正在采取积极行动扫除幽灵,以遏制这场重大灾难性事故。网警也已立案调查,并已控制犯罪团伙主要成员之一、毕业于山东科技大学的青年科技创业者余某。根据其攻击手段、反侦查手段以及高运营成本判断,这是一起精心策划和实施的恶意攻击事件,绝非肇事者声称的所谓技术“实验”,也绝非个人行为。
然而,问题远未根本性解决。域名控制者随时可以令其复活,同时第三人亦可能劫持域名以接管在部分区域的控制权,部分受影响应用软件开发者或使用者至今尚未更新版本,因此安全警报没有解除。
除积极停损外,社会各界应立即开始总结经验教训,预防同类事件再次发生。大量开发者未从苹果官方来源直接获取Xcode安装包,导致开发环境被污染,首要原因是中国互联网国际出口速度慢如蜗牛,有时甚至不可用(“金盾工程”所致),大家习惯于从国内下载站点下载,或从开放分享平台(例如云盘)下载。对于超大文件,无论从官方网站还是第三方网站下载,往往还会使用下载加速工具,例如迅雷。
我们应汲取速度的代价,呼吁有关部门改进,而作为国内主要下载工具提供商,迅雷公司则应扪心自问,真如日前声明所言未被恶意攻击者滥用或没有滥用空间吗?
迅雷顽疾
以迅雷最新版7.9.40.5006为例,其下载加速设置及相关说明见下图(黑框内)。要进入下载加速设置,必须依次点击系统设置、高级设置、更多设置,再拖动鼠标到最下方,一般用户很难发现,但迅雷的核心价值都在这里,很不幸地是其命门也在这里。
镜像加速、P2P加速和智能解决死链等加速手段的共同基础是文件一致性匹配和校验,但迅雷只是下载工具和通道,文件都在第三方服务器(收费的离线下载服务除外),没有权威依据以校验全文一致性。技术分析和验证表明,迅雷的解决方案是仅校验文件头20KB、文件尾20KB和文件开始1/3处20KB等共计60KB内容,以及文件大小,其它内容概不校验,允许恶意攻击者随意篡改。
那么问题来了。恶意攻击者可能首先以合法文件提供下载,以便被迅雷服务器自动匹配为某文件的下载镜像,在取得镜像资格后,精心篡改文件(规避上述60KB区即可)以植入恶意程序,即使用户以其官方链接下载,也可能获得已被植入恶意程序的非官方版本,攻击者无需投入推广成本。
智能解决死链问题更加严重。恶意攻击者可能通过本地DNS劫持手段伪造具有高可信度的官方链接到本地计算机(该链接实际并不存在,在公网无法访问,是一个死链),并在本地计算机使用迅雷下载该链接,以告知迅雷服务器:相关机构官方网站存在这个文件。同时,恶意攻击者在若干公网服务器(例如网盘)上传相同文件,并挨个下载。待完全下载一轮后,迅雷服务器将自动把仿冒链接和若干公网链接视为一组镜像。至此,一个仿冒官方链接准备好了,任何人使用该链接均可下载到恶意攻击者提供的恶意程序或发布虚假信息。例如伪造一个不存在的微软Office安装包下载链接(?.microsoft.com)传播恶意程序,或伪造一个政府政令文档下载链接(?.gov.cn)造谣滋事。最后,恶意攻击者花点时间,在各社区网站张贴该仿冒链接,并诱导使用迅雷下载,即可守株待兔——无人怀疑该链接是相关机构官方链接,无人知道它是恶意攻击者滥用迅雷智能解决死链机制和镜像加速机制伪造的。
给个例子:http://dl.microsoft.com/office/office2016setup.exe,该链接系本人伪造死链(微软服务器不存在该链接,使用浏览器无法下载),仅适用于迅雷下载测试,非恶意程序,请勿效仿。通过上述方法,建立该微软官方链接与第三方网站(sockets.news和百度云盘)的等价关系,成功欺骗了迅雷服务器,其他用户使用迅雷下载该微软官方链接,就可以获取到本人希望迅雷推送的文件。如下图所示,所下载数据均来自“镜像加速”(如果有他人也已下载该文件并保持开启迅雷,P2P加速可能就是部分数据来源)。
测试表明,Xcode两个最新版本(7.0正式版http://adcdownload.apple.com/Developer_Tools/Xcode_7/Xcode_7.dmg和7.1beta测试版http://adcdownload.apple.com/Developer_Tools/Xcode_7.1_beta/Xcode_7.1_beta.dmg)也无法使用浏览器直接下载,需要验证Apple ID,否则将自动重定向到无权访问警告页http://developer.apple.com/unauthorized/。按理说使用迅雷应仅能下载到这个警告页面文件,仅2KB,但使用迅雷竟然可以直接下载到安装包,分别是3.58GB、4.25GB,检查下载日志可发现“原始资源得到的文件长度太小,抛弃”字样。这两个链接已被强制镜像,并因原始资源文件长度太小(实为无法获取)而放弃一致性校验,换句话说,真正的苹果官方下载源已被架空,那么谁来保证用户获得的文件与官方原始版本一致性?
众所周知,迅雷提供智能解决死链机制和镜像加速机制的商业逻辑是协助用户下载非合法授权的软件或视听产品,即协助盗版。它严重抵消了相关厂商反盗版行动的成效(删了A,还有B、C、D……无穷尽也),更严重地是嫁接权威信任传递链:用户输入权威机构官方网站的可信链接,输出可能是恶意程序或非法内容,而用户浑然不觉。以为是迅雷在提供下载加速服务,实际上迅雷通过技术手段把服务“众包”出去了,无条件授信给所有不确定身份和动机的“分包者”,并把这种极度脆弱的信任传递给所有用户。
在XcodeGhost事件爆发后很多人反映其明明使用苹果官网链接,却下载到感染了XcodeGhost的版本,表示无法理解。其实,以上就是答案。
安全第一
请求迅雷同仁,基于重大社会责任,检讨上述以安全性为代价的加速手段,该关停的关停,该取消默认启用的取消,并向用户发出必要安全警示。信任已然颠覆,请积极参与灾后重建,切勿推卸应有责任。
建议广大用户暂停使用迅雷,或禁用其智能解决死链、镜像服务器加速、P2P加速等三项加速能力,或强制从原始地址下载重要文件,并在下载后校验文件与源文件一致性。相应地,建议广大软件提供者在下载页面提供安装包指纹(MD5或SHA1校验码)。
互联网的基石是安全,安全的关键在入口。革命尚未成功,同志仍需努力。期待各界同仁在不断追求创新和卓越的道路上,绷紧安全这根弦,当好用户看门狗。
信息首发:Xcode幽灵:速度的代价