※本ブログは、Mobile Malware Researcher 中島大輔によるものです。
※本ブログの内容は2014年3月4日時点のものです。
Android端末ユーザーは通常、アプリ説明ページの内容やプライバシーポリシーを読んだり、アプリが要求する権限をインストール時に確認し許可したりするなど、いくつかの対話を行いながら、Google Playストアからアプリをダウンロードおよびインストールします。マルウェアや潜在的に危険なアプリ、不審なアプリのインストールを避けるために、これらの確認処理はAndroidのセキュリティにおいて重要な役割を担っています。
しかし、McAfeeは最近、これらの重要な確認処理が省略されたほぼ自動的な方法でGoogle Playから他のアプリのダウンロード、インストールおよび起動を行う危険な国内ユーザー向けアプリをGoogle Play上で確認しました。このアプリ自動インストール機能は、ユーザーによる許可によって取得したGoogleアカウントの認可トークンと、それを用いて行われるGoogle PlayストアのWebサーバーとの非公式な方法での通信によって実現されています。
Fig.1: Google Playから他のアプリを自動インストールし実行する危険なアプリ
このアプリは、外部サーバーによって指定された10個以上のアプリ一覧の中から最低5個のアプリをインストールすることと引き換えに、ユーザーがアダルト動画を視聴できるよう実装されています。今回の検証時には、このアプリ一覧にはマルウェアや不審なアプリは含まれていませんでした。おそらくアプリのインストールによって報酬が支払われるアフィリエイト報酬狙いの機能だと思われますが、アダルト動画をエサに興味もないアプリを自動インストールさせるという点で広告主を欺いている可能性はあります。また、アプリの外部サーバー側での変更により後でアプリ一覧を置き換え、マルウェアや不審なアプリを混入させる、という可能性も否定できません。なお、このアプリは既にGoogle Playから削除されています。
Fig.2: 5個のアプリのインストールと引き換えにアダルト動画提供をオファー
ユーザーが動画ダウンロードを試みると、本アプリはAndroidのAccountManager.getAccountsByType()とAccountManager.getAuthToken()というAPIを使用して、端末上のGoogleアカウント情報を取得し、そのアカウントを用いてGoogleサービスへアクセスする権限をユーザーに要求します。ここでは、Googleアカウントの「SID」「LSID」という2つの権限をそれぞれAndroidシステムが表示するダイアログ上でユーザーに要求していますが、これらの権限取得によりアプリはユーザーのGoogleアカウント経由でGoogle Playストアを含む種々のGoogleサービスへのアクセスを許可されることになります。これらの認可トークンは後で再利用できるようにアプリによって保存され、また、Androidシステムによっても一定期間キャッシュされるため、この権限認可処理は、認可トークンが期限切れになるまで、アプリを再実行しても再度行われることはありません。
Fig.3: GoogleアカウントのSIDとLSIDの権限を要求するダイアログ
これらの権限が与えられると、アプリはその認可トークンを用いてGoogle PlayストアのWebサーバーと何度か非公式な方法でのHTTP通信を行います。アプリ開発者が公式のGoogle Playストアサービスがアプリをインストールする際の通信プロトコルのリバースエンジニアリングを行ったか、その種の情報を入手して使用したものと私たちは考えています。Cookieデータの取得等を目的としたこれらの通信処理を経て、アプリはGoogle Playストアから任意の無料アプリを直接ダウンロードおよびインストールするためのトークンを取得し、実際にアプリの自動インストール処理を開始します。
Fig.4: 選択された5個のアプリがGoogle Playから自動インストールされる
ユーザーが自身でGoogle Playから手動でアプリをインストールする通常の手順と異なり、この自動インストールでは、アプリ説明の閲覧や権限要求の確認と許可・拒否を行う機会がユーザーに与えられません。最後に、本アプリは対象アプリのインストールが完了するとすぐに、それらを自動的に起動します。
Fig.5: アプリ説明表示や権限要求の確認・許可をせずにアプリインストールが成功
このようなアプリ自動インストール処理が悪意あるアプリ開発者に悪用されると恐ろしい結果を招くことは明らかでしょう。彼らは、Google Play上の他のマルウェアをユーザーにほぼ気づかれることなく自動でインストールおよび起動し有害なコードを実行することが可能になります。ユーザーは依然として、実行時に表示されるGoogleアカウントのSIDおよびLSIDに対する権限要求画面上でそれを拒否することは可能ですが、アプリが最初は妥当な理由を示したり非常に魅力的なエサをオファーしたりすることでユーザーが権限許可するよう説得し、その後で保存済みの認可トークンを使用してマルウェアの自動インストールに用いる可能性もあります。
この自動インストールは、ユーザーがアプリに対し「端末でアカウントを検索」(GET_ACCOUNTS)と「端末上のアカウントを使用」(USE_CREDENTIALS)という権限要求をインストール時に許可することで可能となります。上で述べたように、これらの機能使用を許可すると、Googleアカウント(およびその他のサービスのアカウント)を用いた処理に関わる大きな権限をアプリに与えることになります。これらの権限がインストール時に要求されたり、また実行時にGoogleアカウントに関わる権限(今回の場合はSIDおよびLSID)が要求されたりした際には、そのアプリが本当に信頼に値するものか非常に慎重に再確認すべきだと言えるでしょう。悪意のあるアプリに対し不注意にこれらの権限を与えると、端末とプライバシーにとって極めて大きな被害を受ける可能性があります。
Fig.6: 「端末でアカウントを検索」「端末上のアカウントを使用」の権限要求
McAfee Mobile Security は、この潜在的に危険なアプリを Android/BadInst.A として検出します。
※本ページの内容はMcAfee Blogの抄訳です。
原文:Automatic App Installation from Google Play Poses Big Risk