日本のユーザーを狙った、電話番号を密かに盗むAndroidチャットアプリをGoogle Playで発見

電話番号の漏洩

※本ブログは、Mobile Malware Researcher 中島大輔によるものです。

2013/12/05 更新
本チャットアプリの開発者より、今回のブログで取り上げた電話番号送信機能について目的と経緯の説明のための連絡があり、悪意はなかったこと、該当箇所を修正し情報漏洩の問題が解決された更新版アプリのGoogle Play上での再公開が行われたことを確認しました。よって、更新版アプリについてはMcAfee Mobile Securityでの検出対象から除外しました。

ユーザーの個人情報を盗むAndroidマルウェアは今日まで多数報告されており、私たちスマートフォンユーザーのプライバシーに脅威を与え続けています。McAfeeは最近、Android端末の電話番号を密かにアプリ開発者のWebサーバーへ送信する不審な日本ユーザー向けチャットアプリがGoogle Play上で公開されているのを確認しました。また今回のアプリでは、電話番号詐取機能の実装にはJavaScriptが用いられていました。


Fig.1 日本のGoogle Playで公開されていた2つの不審なチャットアプリ


Fig.2 Google Play上のアプリ説明ページでは「登録不要」をアピールしている

Google Play上のアプリ説明ページでは開発者はこのアプリは「登録不要」かつ無料で使用できることを強調し、あたかもユーザー情報を取得しないかのように思わせているにもかかわらず、このチャットアプリはユーザーがチャットサービスに接続する際に端末の電話番号を取得し、ユーザーへの事前通知および承諾確認を行わずに密かに開発者が管理するWebサーバーへ送信しています。電話番号は送信前に暗号化されていますが、暗号化に使用された共通の秘密鍵をアプリ開発者が保持しているため、受信したサーバー側で復号化できることは明らかです。

このアプリ開発者が収集した電話番号リストを実際に悪用しているかどうかまでは私たちにはわかりません。しかし、電話番号のようなユーザーの機密情報を事前承諾なしに勝手に収集することは大きな問題です。しかも、この開発者は意図的にユーザーを騙しているか、少なくとも誤解を招く説明をしていると考えられます。また、このチャットサービス自体、少なくとも私の目の前では一度もチャット接続に成功したことがなく、本当に機能するのか不明です。幸いなことに、これらのアプリのダウンロード数は現在のところ数百回以下であることがわかっています。


Fig.3 チャット画面でユーザーが「接続」しようとすると電話番号が勝手に送信される

ユーザーの個人情報を盗む多くのAndroidマルウェアと異なり、このアプリの情報漏洩コードはサーバーサイドでホストされているHTML/JavaScriptファイルで実装され、それがAndroidのWebViewの機能である独自JavaScriptインタフェース呼出を通じて電話番号取得APIを呼び出しています。このアプリのJavaコード側では、TelephonyManager.getLine1Number()メソッドを呼び出す独自JavaScriptメソッド”getNo()”を定義し、それを”android”オブジェクトとしてJavaScriptから使用できるように公開しています。一方、サーバーサイドのHTML内のJavaScriptコード側では、ユーザーがページ上のボタンをタップすると、この”android.getNo()”により電話番号を取得しXMLHttpRequestオブジェクトの機能(または、もう1つの亜種ではHTMLフォーム経由でのHTTP POSTリクエスト)を使用して同じサーバーに送信しています。


Fig.4 電話番号を取得するための独自JavaScriptオブジェクトを実装するJavaコード


Fig.5 独自オブジェクトにより電話番号を取得しサーバーに送信するJavaScriptコード

ちなみに、このJavaScriptコードはAndroidアプリのWebView上だけでなく通常のWebブラウザから読み込まれた場合でも動作するように実装されています。後者の場合は、独自オブジェクトが使用できないため、単に現在時刻から生成した適当な文字列を電話番号の代わりに使用しています。つまり、そもそもこのチャットサービスは電話番号を取得しなくても動作するようになっているということです。それにもかかわらずAndroidアプリの場合はわざわざユーザーの電話番号を密かに取得しているということからも、何らかの悪意を感じます。

HTML/JavaScriptというWeb技術を駆使してAndroidアプリを開発するためのフレームワークは以前から使用されており、有名なものにはApache CordovaPhoneGapとしても知られる)等があります。これらのフレームワークではHTML/JavaScriptでアプリ機能を実装しかつAndroidプラットフォームの機能をそこから使用することも可能にしますが、これらも上述のWebViewの独自JavaScriptインタフェース定義機能を内部で使用しています。これらのフレームワークを使用するほとんどの場合、HTML/JavaScriptによる実装コードは、開発フレームワーク・ライブラリとともに、Androidアプリパッケージファイル(APK)に同梱されます。したがって、もし何らかの危険なコードや悪意のあるコードが含まれていたとしても、セキュリティ製品がAPKの内容を静的解析しそれらの存在を検出することは可能です。

一方、今回のアプリの場合、取得した個人情報を密かに外部サーバーに送信する機能の主な部分が、APK内ではなく、サーバーサイドのHTML/JavaScriptコードで実装されています。これらのコードはアプリ使用および特定の操作時に初めてアクセスされる、かつ随時変わりうる、という動的な性質から、問題のあるコードの解析・検出が通常よりも困難と言えます。さらに悪いことには、このアプリのWebView上から別の第三者のサイトがホストする悪意あるコードを含むページに遷移した場合、個人情報を取得するための独自JavaScriptオブジェクトが悪用される危険もあります。

特にモバイル端末向けのアプリ開発言語として注目を浴び、またTizenFirefox OSのような新しいWeb技術ベースのモバイルプラットフォーム向けアプリ開発の主要言語として期待が高まるのに伴い、HTML/JavaScriptベースのモバイル脅威が近い将来さらに増加するリスクに私たちは備えなければならないでしょう。

McAfee Mobile Security は今回発見されたこれらの不審なアプリをAndroid/ChatLeaker.Aとして検出します。

※本ページの内容はMcAfee Blogの抄訳です。
原文:Japanese Chat App for Android Steals Phone Numbers

[レポート]クラウド環境の現状レポートと今後 ~クラウドの安全性の状況と実用的ガイダンス

 マカフィーでは、1,400人のIT担当者に年次アンケートを実施し、クラウド採用状況やセキュリティについて調査しました。
 調査の結果、クラウドの採用とリスク管理への投資を増やしている組織がある一方で、クラウドの採用に慎重なアプローチをしている組織が多いことがわかりました。
 本調査では、クラウドサービスの利用状況を分類し、短期投資の確認、変化速度の予測、重要なプライバシーおよびセキュリティ上の障害物への対応方法の概要を示しています。

 本レポートでは、クラウドの現状把握と今後の方向性、クラウド対応の課題やポイントを理解することができます。

<掲載内容>
■ 主要調査結果
■ 調査結果から言える方向性
■ 課題への対応
■ 変化への対応力
■ 考慮すべき点:安全なクラウドの採用で事業を加速