ニック・アーノット氏は最近、自社が開発したモバイルアプリのアップデートをアップルがなぜ拒否し続けるのか理解できなかった。
結局、問題はマシン内のゴーストであることが判明しました。
彼の会社である Possible Mobile は、App Store の提出ルールに精通しており、JetBlue、Better Homes & Gardens、メジャーリーグサッカー向けのアプリを開発してきました。
この拒否は、App Storeの数千のアプリがAppleの開発ツール「Xcode」の偽造版で構築されていたことが9月中旬に発覚したことを受けて行われた。
XcodeGhostと名付けられ、おそらく中国で開発されたこの偽バージョンは、多くの開発者がサードパーティのソースからダウンロードしていたが、どうやらAppleから4GBのコードを入手するのに時間がかかりすぎたためと思われる。

Apple の Xcode ツールは、同社のデバイス向けのアプリケーションを構築するために使用されます。
セキュリティ研究者らは、XcodeGhost を搭載したアプリはユーザーのデバイスからデータを記録し、それをリモート サーバーに送信するように簡単に設定できるため、プライバシーのリスクがあることを発見しました。
XcodeGhostに感染したアプリ4,000本以上がApp Storeに登録されたことは、Appleの厳格なセキュリティチェックを破った最も成功した事例の一つとなり、長年にわたりストアをマルウェアから守ろうとしてきた同社の努力を台無しにする恐れがあった。
アプリが却下された後、Possible Mobileはその理由を調べ始め、その取り組みの詳細をブログ記事に掲載した。
AppleはXcodeGhostとの関連を示唆していた。しかし、アーノット氏と彼のチームは困惑した。彼らが使用していたXcodeのバージョンは正規のものだったのだ。彼らは複数のマシンに最新バージョンのXcodeを再インストールしたが、Appleは依然としてアプリを拒否した。
モバイル アプリの作成はソーセージの作成に少し似ています。広告配信やビデオ配信などの機能には、他社が開発したコード フレームワークやライブラリが多数使用されます。
こうしたフレームワークはバイナリ形式で提供されることが多く、開発者はソースコードに実際に何が含まれているかを把握できないと、Possible MobileのCTO、ジェイ・グレイブス氏は電話インタビューで語った。
「App Store にあるトップブランドのトップアプリには、必ずサードパーティ製のアプリが搭載されている」とグレイブス氏は語った。
バイナリに何が含まれているのかを解明するのはセキュリティ研究者の仕事であり、アプリ開発者の仕事ではないとグレイブス氏は述べた。彼らは頭を悩ませた後、問題はおそらくサードパーティ製のフレームワークにあると推測した。
このフレームワークは汚染されたXcodeバージョンでコンパイルされており、その後、Possible Mobileによってそのコードがアプリに組み込まれました。グレイブス氏によると、警告を受けた後、フレームワークを開発した会社は問題を修正し、クリーンなバージョンを提供したとのことです。
Appleは現在、XcodeGhostに感染したアプリを検出できるようになりました。しかし、XcodeGhostには、分析と検出をより困難にする改良版が既に存在します。
「App Storeに本来あるべきではないアプリが紛れ込んでいるという話は、時々耳にします」とアーノット氏は述べた。「しかし、悪意のある開発者がAppleの審査プロセスをすり抜けさせるために使えるトリックは、限りなく存在するのです。」
アーノット氏によると、サードパーティ製のフレームワークが原因かどうかを突き止めるために、Possible Mobile はコマンドラインツールの grep を使用して、XcodeGhost が接続するようにプログラムされている URL を見つけ出したという。
「こうしたアプローチの問題は、一度紐が変わってしまうことです」とアーノット氏は述べた。「必ずしもそれに対する解決策があるわけではありません。」
グレイブス氏は、このいたちごっこはAppleと開発者にとって課題となるだろうと述べた。Appleはアプリを却下する際のガイダンスが曖昧になることがあるが、これはおそらく、攻撃者がAppleのセキュリティ対策について情報を得るのを防ぐためだろう。
「この話はまだ終わっていない」とグレイブス氏は述べた。「時間はかかったが、モバイルとiOSの普及が攻撃対象としての価値を高めており、ブラックハットコミュニティからの注目度は格段に高まっている」
この記事の以前のバージョンでは、メジャーリーグサッカーの誤記がありました。誤りは修正されました。