>>63
技術的解析詳細
Xcodeの変更
XcodeGhostにおける最も新しい攻撃手法はXcodeコンパイラの変更です。この考え方自体は新しいものではありません。エドワード・スノーデンによって開示された文書に関するThe Interceptのレポート(英語)によると、TCB Jamboree 2012カンファレンスでは“Strawhorse: Attacking the MacOS and iOS Software Development Kit” (MacOSとiOS SDKの攻撃) と呼ばれるプレゼンテーションがありました。

このプレゼンテーションではサンディア国立研究所の研究者がiOSとOS Xの両方でアプリを感染させるためにXcodeを攻撃するアイデアを発表しました。ここで留意すべきことは、The Interceptは2015年3月10日にこのプレゼンテーションを報告し、同じ月にXcodeGhostが発表されたということです。



図3. エドワード・スノーデンからリークされた文書が同じ攻撃手法を示唆
XcodeGhostは悪意ある “CoreServices” オブジェクトファイルをXcodeインストーラに加えていたました。開発者がアプリをコンパイルするために感染したXcodeを使用した場合、リンカーがアプリケーションの実行ファイルに悪意あるオブジェクトファイルをリンクします。これはどのように実現されるのでしょうか?

解析の結果、XcodeGhostもリンカーを制御するためにXcode内の以下のファイルを変更していました。

Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins/CoreBuildTasks.xcplugin/Contents/Resources/Ld.xcspec
Xcodeでは、上記Ld.xcspecファイルはldリンカーによって使用される設定が含まれています。このファイルの最終行において、 “DefaultValue” 変数の定義が以下の文字列を付加するようにXcodeGhostによって変更されていました。

-force_load
$(PLATFORM_DEVELOPER_SDK_DIR)/Library/Frameworks/CoreServices.framework/CoreServices