PR

2015年秋に、開発者が自覚しないまま不正なスマートデバイス用アプリが大量に流通していた事実が相次いで発覚した。iOS向けとAndroid向けの両方で見つかっており、どちらも原因は第三者が提供する開発用ソフトウエアにあった。悪用されると大きな脅威となる。スマホを業務利用するユーザーの立場と、顧客に企業アプリを提供する開発者の立場から、注意を払うべきだ。

 2015年9月、米アップルが運営する公式アプリサイト「App Store」で多数の不正アプリが公開されていた事実が判明した。対策に乗り出したアップルが削除した数十のアプリには、中国で普及するメッセンジャー「WeChat」など著名アプリも含まれていた。実際に流通した不正アプリは数百規模とするセキュリティ企業の調査もある。

 被害の中心は中国で開発されたアプリだった。ただしWeChatなど日本をはじめ世界各国で公開されているアプリも含まれ、不正ソフトも複数の国のサイトで公開されていた可能性がある。

 原因は「開発環境」や「SDK(ソフトウエア開発キット)」と呼ばれるプログラム開発用ソフトにあった。アップルが提供する開発環境「Xcode」に個人が手を加えた「改変版」が中国で流通していた。これを用いた開発者が、自覚がないまま不正ソフトを公式サイトで流通させていた。

別のマルウエアを取り込む

 今回の事件で、問題のXcodeの改変版は「XcodeGhost」と呼ばれる。中国では「Xcodeのミラーサイト」を称するサイトで公開されていた。問題の発覚後に作者を名乗る人物が単文投稿サイト「Weibo」で謝罪文を掲載。悪意がなかったことを強調した。

 作者は「XcodeGhostはあくまで実験的コード。機微な情報の詐取などはしていない」と主張している。「身の潔白を示す」として、XcodeGhostの公開サーバーを停止し、収集したデータも削除したうえで、XcodeGhostのソースコードをコード共有サイト「GitHub」に公開した。

 そこで筆者らのグループはXcodeGhostを入手し、アプリに注入される不正コードの挙動などを分析した。作者に悪意がなかったかどうかは不明だが、悪用されると大きな脅威になることは確認できた。

 まず、事件が報じられた時に注目を浴びた情報流出の恐れは確かにある。ただし、外部に送信する可能性がある情報は、開発されたアプリの名称や、アプリのバージョン番号、使用言語、デベロッパー記号、アプリのインストール日時、端末の機種情報などである。密かに送信することは問題だが、特に機微な情報は含まれていなかった。

 さらに、端末のOSのバージョンが「iOS 9.0」以降の場合は送信を外部に送信できないことも分かった。今回の不正コードは情報の送信にSSL(Secure Socket Layer)を用いていない。アップルはiOS 9.0から非SSL通信を個別に許可する機能を実装してセキュリティを強化したが、不正コードはこの機能に対応していなかった。

 一方、悪用されると危険性が高いものとして、独自の広告をポップアップする機能が備わっていた。OSの機能とは別に、任意の内容を任意のタイミングで画面に強制的に表示できる。これを悪用すると、例えば支払い画面を装ってクレジットカード番号やアプリ購入などに使うApple IDを詐取する犯罪も可能だ。

 さらに危険性が高い機能として、外部から実行ファイルをダウンロードできる仕組みを備えていた(図1)。企業がユーザーを限定してアプリを配布できる「iDEP(iOS Developer Enterprise Program)」を悪用して実現している。iDEPは比較的簡易な手続きでアップルから署名を取得でき、厳格な審査はない。

図1●公式配布サイトで不正アプリを流通させる手口
図1●公式配布サイトで不正アプリを流通させる手口
偽の開発環境は、正規版と同じAPIに「外部と密かに通信する」など不正な機能を埋め込んでいる。誤って開発された「不正アプリ」が公式サイトで公開される恐れがある。しかもXcodeGhostの場合、開発したアプリはより悪性のマルウエア(不正ソフト)を密かにダウンロード、実行できることが判明した。
[画像のクリックで拡大表示]

 通常、iDEPのアプリをインストールする時はユーザーの確認を取る画面が出るが、先の広告ポップアップ機能と組み合わせることで、ユーザーを欺くことも可能だ。

 サイバー犯罪を仕掛ける立場から見ると、この機能の意味は大きい。今回、XcodeGhostで開発された不正アプリがアップルの審査を通過したのは、外部に送信する情報が標準APIで取得できる範囲であるなど、アプリ自体に大きな脅威がなかったことが一因だろう。大きな脅威を持つコードをアプリ本体と分離できることはアップルの審査をかいくぐる一つの手口になる。

信頼性を確認した開発環境を使う

 こうした「独自」の開発環境が問題を引き起こした例はXcodeGhostに限らない。

 Andoroid向けでは、中国検索大手のバイドゥが開発・提供する「Moplus SDK」に深刻な脆弱性があり、問題を抱えた多数のアプリが流通していることが2015年11月に明らかになった。影響を受けるアプリの種類は1万を超える。バイドゥが同社のアプリサイトに掲載した約4000種類で累計数十億回分のダウンロードがあったという。

 Moplusの脆弱性とは、端末を外部から操作できるバックドア機能だ。ユーザーに気付かれず、ファイルを勝手にアップロードする、アプリを端末にインストールする、連絡先に項目を追加するなどの操作が外部から可能だ。

 今回の事件から、企業は「顧客などに提供するアプリ開発者」と「業務用などのアプリ利用者」の両面でスマホアプリへの対応を考える必要があると言える(図2)。

図2●開発者と利用者が取るべき対策の例
図2●開発者と利用者が取るべき対策の例
公式サイトを悪用されると個人では対策が困難。基本的に開発者が慎重に対策するべきだ。
[画像のクリックで拡大表示]

 開発者としては、開発環境やSDKは信頼性を慎重に確認して採用することが最も重要だ。一般には、アップルや米グーグルなどOSベンダーが提供するもの、あるいは既に評価が定まっている製品が望ましい。新しい開発環境やSDKを採用する際には、開発したアプリに意図しない外部への通信機能がないか、勝手に情報を参照していないか、などを調査して決めるべきだ。

 一方、利用者としての対策は、公式サイトが汚染されていただけに一筋縄ではいかない。少なくとも、公式サイトにもリスクがあることを自覚し、ユーザーの評価などをよく見て慎重にアプリを利用すべきだ。

 また公式サイト以外のいわゆる「野良サイト」などからアプリを入手しないなどの基本を順守してリスクを減らすしかないだろう。