为什么80%的码农都做不了架构师?>>>   

今年9月,苹果XcodeGhost事件引发了全社会的广泛关注,堪称App Store自2008年上线以来遭受的规模最大的攻击,涉及应用之广已完全超过想象,由此折射出当前互联网软件安全领域仍然存在严峻挑战。在MDCC 2015移动开发者大会的平台与技术-iOS专场,阿里巴巴资深安全工程师郑旻(蒸米)复盘了整个过程,并讨论了可行的预防措施及事后思考。

然而,来自美国的移动应用开发商Possible Mobile最近遇到了一个问题,他们递交的新版应用遭到了苹果的拒绝,理由是XcodeGhost。这家公司大惑不解,因为他们遵循了严格的安全准则,使用的官方下载的Xcode编译器,启用了GateKeeper。在多次试错之后,他们终于发现XcodeGhost隐藏在第三方框架中。

以下为译文:

不久前,Xcode感染XcodeGhost病毒,让诸多iOS应用遭恶意代码植入的新闻一爆出,当即引发轰动。苹果因此从App Store撤出受感染的应用,并发布了一份FAQ(常见问题汇总)。由于该事件主要发生在中国,而我们的公司为保险起见,一直坚持从苹果官方渠道下载Xcode,并启用GateKeeper,所以没受什么影响——直到最近出现了问题:我们向App Store提交了应用更新后的几分钟,收到了这样一封拒绝邮件。

Invalid Executable – The app in [REDACTED].app has been built with an unsupported version of Xcode. Make sure Gatekeeper is enabled, download the latest version of Xcode from developer.apple.com, rebuild the app, and submit it again.

大家苦思冥想,抓耳挠腮,走投无路之际,终于发现XcodeGhost恶意代码是通过第三方框架进入我们的应用的。

早在9月,安全研究员发现:感染XcodeGhost的Xcode恶意软件将恶意代码植入应用。而这封邮件的似乎在暗示:我们的应用已被感染——但我们的开发者都是从App Store或Apple Developer门户网站下载Xcode的,这完全说不通啊。

其实不久前,我们也遇到过这种情况,那次因为向Apple Store提交时,所用的机器安装的是OS X测试版。这次是否也是同样的原因呢?我们试着在不同的机器上重建应用,其中一个完全是纯净的build服务器环境,但每次提交都出现相同的错误。

这下子真是黔驴技穷了。为百分之百确定问题的症结,我们紧跟着苹果的操作指南来验证所有版本的Xcode,好确保XcodeGhost没有侵入机器。显示的结果全都是:

/Applications/Xcode.app: accepted

source=Mac App Store

随后,我们尝试在多个机器上重新安装Xcode,并调整了GateKeeper的设置,但仍旧被拒绝。鉴于提交的应用版本相比以往的不同之处主要是针对一些第三方框架,所以我们想——会不会是因为第三方利用XcodeGhost编译了框架,然后发送给我们呢?

刚开始我们不知道怎么检查二进制文件,才能找出XcodeGhost的蛛丝马迹,所以干脆采用简单粗暴的方式,撤出第三方框架,再次编译、提交。先找出罪魁祸首的首要嫌疑对象,从那里切入。没费多大功夫,第三方框架就从应用中移走了,我们再重新提交(提交的版本不可能正式发布,因为应用的主要功能还是离不开第三方框架)。没过几分钟,我们就看到iTunes Connect上“正在处理…”的字样消失了——应用可以提交了。移除第三方框架,顺利通过;添加第三方框架,被拒绝。

为了确定问题具体出在哪里,我们仔细研究了XcodeGhost,发现XcodeGhost C2(指挥-控制)服务器所用的URL可能是关键,于是在第三方框架里搜寻类似的URL。虽是摸着石头过河,但第一次就中了彩——第三方框架一个二进制文件中发现的URL字符串确认是带有XcodeGhost病毒的(http://init.icloud-analysis.com)。

除此之外,我们还在设备上安装了build版,代理了流量。应用发布后不久,http://init.icloud-analysis.com上就出现了请求。好在9月时,与XcodeGhost关联的C2服务器被发现后很快就被移除了(或者说消失了),因而所有对该URL的请求都是无效的,设备上的信息并未发送给任何人。

到现在为止,我们有十足的信心告知第三方供应商:问题出在他们那里。解释了前因后果,要求他们提供由正版Xcode编译的新框架。接收更新版本后,再进行一次查询和流量代理,直到确认再无XcodeGhost的任何蛛丝马迹为止。

针对具体问题,我们的具体方案是对项目中所有与XcodeGhost相关的URL和方法名称进行递归查询,这会用到一个包含所有目标搜索字符串的文本文件:

  • http://init.crash-analytics.com

  • http://init.icloud-diagnostics.com

  • http://init.icloud-analysis.com

  • http://init.icloud-diagnose.com

  • AppleIncReserved

  • UIDevice(Reserved)

  • CLASS_METHODS_UIDevice_$_Reserved

我们在所有报告中运行的查询指令是:grep -R -f filewithstrings.txt *

病毒的新变体或恶意软件中新的字符串可以添加到文件中,进一步完善查询环节。也可以考虑添加“http://init”。或“http://init.icloud-”。当然,这可能会导致将未感染对象错认为感染对象,但唯独用这种方法,才能尽早找到那些可能已经或即将感染XcodeGhost的URL。查询成为build服务器的必经步骤之后,一旦发现病毒感染,build就会停止运行。

我们可以控制和检查开发者的工作环境(相信他们没有从第三方下载修改过的Xcode版本),但对第三方库和框架就没辙了。我们的大多数项目包含编译过的第三方代码,而这些第三方代码并不在我们的掌握之中,也无法控制第三方供应商编译代码的环境。

我们也不能控制第三方库,却还是得负责最终的代码整合和排错等,但如今却遇到了新问题,这既是一个警示,也说明了产业定期的变革会带来新挑战,会不断催生新的解决方案。

后续更新:在写这篇文章时,又出现了XcodeGhost的新变体。该版本通过连接多个运行中的URL字符串组成完整的URL,让C2服务器URL逃过了静态分析。如上的检测方法仍能查出旧的XcodeGhost变体,但目前还不清楚是否能够用于新变体,如果新变体以相似的方式混淆了自己的方法名称,这个检测方法可能就用不上了。对于这点,蒸米表示,事实上在事件爆发之前就已经存在,只是最近才中招罢了。

(翻译/张新慧 审校/唐小引)

文章来源: A Lesson in XcodeGhost & Third-Party Frameworks

作者简介:Nick Arnott,Possible Mobile公司的QA(产品质量评价)部门负责人,善于分析,拥有6年专业QA经验和独立安全研究背景。

转载于:https://my.oschina.net/1pei/blog/529715

iOS警报:XcodeGhost已扩散至第三方框架相关推荐

  1. 警报:XcodeGhost已扩散至第三方框架

    摘要:美国移动应用开发商Possible Mobile递交的新版应用遭到了苹果的拒绝,理由是XcodeGhost.遵循安全准则,使用正版Xcode,启用了GateKeeper.在多次试错之后,终于发现 ...

  2. IOS之YYModel字典转模型第三方框架的使用

    IOS之YYModel字典转模型第三方框架的使用 字典转模型,可以使用原生的KVC方式,也可使用第三方框架,常见的有YYModel,MJExtension,JSONModel,FastEasyMapp ...

  3. iOS RTMP推流和拉流第三方框架

    Mac搭建服务器,看前一篇文章<Mac 搭建nginx+rtmp服务器> 1.rtmp观看 打开下面网址,输入你的rtmp地址,点击播放视频即可. http://daniulive.com ...

  4. 常用的iOS第三方框架

    转载自:https://github.com/Tim9Liu9/TimLiu-iOS 目录 UI 下拉刷新 模糊效果 AutoLayout 富文本 图表 表相关与Tabbar 隐藏与显示 HUD与To ...

  5. iOS音频播放第三方框架FreeStreamer解析(全)

    iOS音频播放第三方框架FreeStreamer解析(全) 新项目是一款音频播放类软件,作为该项目核心功能:音频播放.第一版本是使用了系统提供的AVPlayer框架来实现音频文件的播放,再开发完成之后 ...

  6. 第三方框架简介ios

    第三方框架简介iOS 图像 1.图片浏览控件MWPhotoBrowser 实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片 ...

  7. IOS第三方框架集合

    简   注册 登录  添加关注 作者 xuejunjun 2015.06.06 17:39* 写了14057字,被17人关注,获得了116个喜欢 IOS第三方框架集合 字数6100 阅读17132 评 ...

  8. iOS比较好用的第三方框架

    目录 Model 数据库 缓存处理 图像浏览及处理 UI ① 下拉刷新 ②AutoLayout ③富文本 ④HUD与Toast ⑤其他UI 网络相关 ①网络连接 ②图像获取 ③网络测试 其他库 详情 ...

  9. PodfileKit将github上常见的iOS(Swift)第三方框架进行了汇总,并且将框架进行了分类,为用户管理第三方框架提供了方便。

    PodfileKit ======================== Easy Podfile ! PodfileKit将github上常见的iOS(Swift)第三方框架进行了汇总,并且将框架进行 ...

最新文章

  1. 什么是棉绒,它如何节省您的时间?
  2. ios 静态库合成_iOS链接原理解析与应用实践
  3. Python黑帽编程2.7 异常处理
  4. JVM-绘图展现字节码执行引擎执行过程
  5. STM32F103RBT6移植到STM32F103C8T6注意事项
  6. 原生Android开发自学过程(二)之TextView基础属性
  7. win7无法连接打印机拒绝访问_win7系统共享打印机拒绝访问的完美解决方法
  8. Java温习——SUN公司和Java平台
  9. php7垃圾回收机制l_从几个简单的程序看PHP的垃圾回收机制
  10. L2-025 分而治之 (25 分)详解
  11. 8K视频处理和工作原理,8K视频处理分析
  12. 计算机网络中的层次结构
  13. 响铃:“头号玩家”乐车邦,恰恰踩到了“无人”的点上
  14. C# List排序和数字处理(三位加一撇)
  15. 豪能转债上市价格预测
  16. linux win95模拟,Windows 95模拟器
  17. 基于北向资金指数择时策略验证与思考
  18. python 练习洗牌
  19. 图像处理中经常用的一幅图片Lena.jpg
  20. 【洛谷P1605 迷宫】

热门文章

  1. 理论+实战,一文详解最常使用的10个聚类算法(附代码)
  2. STM32F429第十八篇之基本定时器
  3. WSF操作系统抽象层学习笔记 (五)---事件处理及运行方式
  4. DDR布线规则与过程——见过最简单的DDR布线教程
  5. CSS 文字下面横线
  6. MetroGAN: Simulating Urban Morphology with Generative Adversarial Network
  7. Hadoop支持LZO压缩配置
  8. 不要被“学会”的假象迷惑
  9. [翻译]Kean' Blog 在一个.NET应用程序中调用AutoCAD
  10. office打开文件提示“启用编辑”