「XcodeGhost」:iOS正規アプリの汚染はどのように起きたか

Apple の iOS端末向け正規アプリストア「App Store」は、Apple が公開前にアプリを審査し、集中管理を行う、いわゆる「ウォールド・ガーデン(壁に囲まれた庭)」であり、安全なアプリストアと考えられてきました。しかし、「XcodeGhost」と名付けられた不正なコードが App Store上の複数の正規アプリで確認されたことから、App Store の安全性が揺らぐことになりました。

この「XcodeGhost」による正規アプリの汚染はどのように起きたのでしょうか。「Xcode」は、さまざまなプラットフォーム上で開発するための Apple社が提供する正規のツールキットです。中国の開発者にとって、公式サイトから「Xcode」をダウンロードするのは困難でした。なぜなら、「Xcode」は数ギガバイトあり、また Apple のサーバへの接続速度が遅いためです。中国では、国外より自国の Webサイトにアクセスするほうがはるかに高速です。そのため、中国の iOS向けアプリ開発者の多くは公式サイトから「Xcode」をダウンロードせず、国内のファイル共有サイトにホストされたコピーや、さまざまなオンラインフォーラム上の投稿からコピーを入手していました。

図1:「Xcode」のコピーを宣伝するフォーラムの投稿
図1:「Xcode」のコピーを宣伝するフォーラムの投稿

しかし、こうしたコピーに不正なコードを含んだ新たな CoreService開発フレームワークが追加され、正規のファイルと置き換えられました。結果として、この改変されたツールで作成されたアプリはすべて不正なコードを含むように汚染されてしまいます。図2~3 は、不正な URL が追加されたコードの例です。不正に改変されたツールで作成されたアプリは、この URL にアクセスすることになります。図2 は Xcode 6.2 を改変したバージョンです。図3 は、Xcode 6.4 を改変したバージョンです。Xcode 6.4 の改変バージョンは、セキュリティリサーチャーやセキュリティ対策製品の検出を回避するために、不正な URL を隠ぺいしています。なお、Apple はすでに最新バージョンとして Xcode 7 と Xcode 7.1 のベータ版を提供しており、どちらも正規サイトから入手可能です。

図2:Xcode 6.2 を改変したバージョン
図2:Xcode 6.2 を改変したバージョン

図3:Xcode 6.4 を改変したバージョン
図3:Xcode 6.4 を改変したバージョン

■「XcodeGhost」で汚染されたアプリ
下記の表は、「XcodeGhost」のコードを含んだアプリの例です。Apple の正規サイト以外からダウンロードされた Xcode のコピーが大量に出回っているため、「XcodeGhost」に汚染されたアプリが他にも確認される可能性があります。太字のアプリは、App Store で本記事執筆時点でも汚染が確認されているアプリです。

BundleID Version AppLabel
com.51zhangdan.cardbox 5.0.1 51卡保险箱
com.cloud1911.mslict 1.0.44 LifeSmart
cn.com.10jqka.StocksOpenClass 3.10.01 炒股公开课
com.xiaojukeji.didi 3.9.7 嘀嘀打车
com.xiaojukeji.didi 4.0.0 滴滴出行
com.xiaojukeji.dididache 2.9.3 滴滴司机
com.dayup11.LaiDianGuiShuDiFree 3.6.5 电话归属地助手
sniper.ChildSong 1.6 儿歌动画大全
com.rovio.scn.baba 2.1.1 愤怒的小鸟2
com.appjourney.fuqi 2.0.1 夫妻床头话
com.autonavi.amap 7.3.8 高德地图
com.stockradar.radar1 5.6 股票雷达
cn.com.10jqka.TheStockMarketHotSpots 2.40.01 股市热点
com.jianshu.Hugo 2.9.1 Hugo
com.wdj.eyepetizer 1.8.0 Eyepetizer
com.iflytek.recinbox 1.0.1083 录音宝
com.maramara.app 1.1.0 马拉马拉
com.intsig.camcard.lite 6.5.1 CamCard
com.octInn.br 6.6.0 BirthdayReminder
com.chinaunicom.mobilebusiness 3.2 手机营业厅
cn.12306.rails12306 2.1 铁路12306
cn.com.10jqka.IHexin 9.53.01 同花顺
cn.com.10jqka.IphoneIJiJin 4.20.01 同花顺爱基金
cn.com.gypsii.GyPSii.ITC 7.7.2 图钉
com.netease.videoHD 10019 网易公开课
com.netease.cloudmusic 2.8.3 网易云音乐
com.tencent.xin 6.2.5 微信
com.tencent.mt2 1.10.5 我叫MT 2
com.gemd.iting 4.3.8 喜马拉雅FM
com.xiachufang.recipe 48 下厨房
cn.com.10jqka.ThreeBoard 1.01.01 新三板
com.simiao-internet.yaodongli 1.12.0 药给力
com.gaeagame.cn.fff 1.1.0 自由之战

■アプリのプッシュ通知
その後、「XcodeGhost」の作成者は、今回の騒動に対する謝罪文と共にソースコードを公開しました。公開されたコードを検証すると、「XcodeGhost」は情報を窃取するだけでなく、遠隔からアプリにプッシュ通知を送信できることが判明しました。「XcodeGhost」に汚染された端末は、App Store の指定されたアプリに誘導されます。さらに、「XcodeGhost」を利用してユーザに通知文を送信することができるため、詐欺やフィッシングなどの不正活動に利用される可能性があります。

図4:公開されたソースコードの一部
図4:公開されたソースコードの一部

■影響受けた国と地域
弊社の調査によると、最も影響を受けたのは中国です。しかし、北米地域も同様に「XcodeGhost」の影響を大きく受けています。汚染されたとされるアプリは、中国以外でも入手できるものがあるため、これは驚くべきことではありません。

図5:「XcodeGhost」の影響を受けた国
図5:「XcodeGhost」の影響を受けた国

【更新情報】

2015/09/28 12:30 弊社は、Xcode だけでなく、iOS の Unityライブラリも「UnityGhost」と呼ばれる不正なコードによって汚染されることを確認しました。Unity は、2D および 3D ゲームを複数プラットフォームで作成するためのサードパーティ開発プラットフォームです。Unity は iOS端末だけでなく、Android、Windows、Mac OS X などの OS でも利用されます。また、PlayStation や Xbox のようなゲーム機も影響を受ける可能性があります。

このシナリオでは、ライブラリ「libiPhone-lib-il2cpp.a-armv7-master.o」が同様の手法で汚染されますが、接続するコマンド&コントロール(C&C)サーバは異なります。

図6:「UnityGhost」は「XcodeGhost」(図2)と同様の手法で感染する。ただし、C&Cサーバは異なる
図6:「UnityGhost」は「XcodeGhost」(図2)と同様の手法で汚染する。ただし、C&Cサーバは異なる

なお、弊社では、UnityGhost に汚染されたアプリをどのプラットフォーム上でも確認していません。

Unityプラットフォームのプロフェッショナル版は、月75米ドル(2015年9月28日時点、約9,000円)かかるため、サイバー犯罪者はフォーラムから海賊版を探してダウンロードした可能性があります。XcodeGhost の作成者は、海賊版の Unityプラットフォームを配布しています(図7)。

図7:「XcodeGhost」の作成に者によって配布される海賊版の Unityプラットフォーム
図7:「XcodeGhost」の作成に者によって配布される海賊版の Unityプラットフォーム

この件につきまして、Alibaba のモバイルセキュリティチームから「UnityGhost」の検体が提供されました。

【更新情報】

2015/09/29 19:00 記載に不備があったため、一部の記述を削除しました。

参考記事:

 翻訳:品川 暁子(Core Technology Marketing, TrendLabs)