This post is also available in: English (英語)
概要
モバイルアプリからのデータ漏えいは この業界ではよくある問題です。漏えいしたデータはユーザーのプライバシーを侵害し、端末の位置情報収集や通話履歴取得など、サイバー犯罪者によるさらなる攻撃に使用されることがあります。
Unit 42のリサーチャーは、機械学習(ML)ベースのスパイウェア検出システムの助けを借りて、データを漏えいする複数のAndroidアプリが米国Google Playストアにあることを特定しました。そのなかには、600万回のダウンロード実績をもつBaidu (バイドゥ) のBaidu Search BoxやBaidu Mapsも含まれていました。漏えいしたデータにより、場合によってはユーザーは一生涯、追跡をされてしまう可能性があります。米国のGoogle Playストアで利用可能なAndroidアプリの調査から確認した証拠によれば、Baidu Search BoxとBaidu Mapsのすべてのユーザー(推定14億ユーザー)が影響を受ける可能性があります。こうしたデータがいったん漏えいした場合、どのように攻撃者に使用されうるかについては、以前のUnit42の調査で概説しています。
Unit 42はこの発見をバイドゥに通知し、調査結果をGoogleのAndroidチームにも知らせました。Androidチームは私たちの調査結果を追確認し、ほかにも違反があることを特定し、グローバルのGoogle Playストアからこれらのアプリを削除しました(2020年10月28日付け)。Google Playストアの規約に準拠したバージョンのBaidu Search Boxは2020年11月19日にGoogle Playストアでグローバルに利用可能になっています。ただしBaidu Mapsについてはグローバルレベルで利用できない状況です(本稿執筆時点)。
GoogleのAndroidチームは「Google Playストアのセキュリティ強化に取り組んでくださるリサーチコミュニティや、パロアルトネットワークスを含む企業の皆さまからのご協力に感謝いたします。今後、さらに多くのリサーチで、こうした皆さんと協力できることを期待しています。」と述べています。
典型的なAndroidマルウェアの振る舞いは、Google Playストアなど公式アプリストアからダウンロードできるアプ
パロアルトネットワークスのお客様は、次世代ファイアウォール脅威識別・スパイウェア識別と、WildFireのセキュリティサブスクリプションのもつファイル分析機能によって保護されています。
データ漏えいを防ぐため、Androidアプリの開発者はAndroidのベストプラクティスガイドに従ってユーザーデータを正しく処理する必要があります。またAndroidユーザーは、自身のスマートフォンアプリがリクエストする必要な権限について把握しておく必要があります。
機微情報を漏えいするAndroidアプリ
Androidアプリのなかには、デバイスからユーザーのデータを漏えいするものがあります。送信される情報の種類よっては、漏えいデータに機微なデータが含まれることがあります。Androidアプリが漏えいしやすいデータには次のものがあります。
- 携帯電話の機種
- 画面解像度
- 電話の MAC アドレス
- キャリア(テレコムプロバイダ)
- ネットワーク(Wi-Fi、2G、3G、4G、5G)
- Android ID
- IMSI (International Mobile Subscriber Identity 携帯電話の契約者に割り振られる国際的な識別番号)
- IMEI (International Mobile Equipment Identity 国際移動体装置識別番号)
このなかには画面解像度などの比較的無害なものもありますが、IMSI などのデータを使用すれば、電話を変えて番号を取得しなおした場合でもユーザーを一意に識別・追跡することが可能となってしまいます 。IMEIは物理デバイスの一意の識別子で、製造日やハードウェア仕様などの情報を表すものです。
IMSIはセルラーネットワークの加入者を一意に識別するもので、通常はデバイスをまたいで持ち運びできる電話のSIMカードに関連付けられています。どちらの識別子も携帯ネットワーク内のユーザーを追跡・検索する目的で利用できます。
IMSIなどのデータを収集するAndroidアプリは、複数のデバイスのライフサイクルをまたいでユーザーを追跡できます。たとえばユーザーがSIMカードを新しい電話に移して、過去にIMSI番号の収集・送信が済んでいるアプリをその端末にインストールしなおした場合、アプリ開発者はIMSIでそのユーザーを一意に識別することができます。
サイバー犯罪者にとって、IMSIやIMEIなどのデータにはうまみが多いので、たとえばアクティブ/パッシブIMSIキャッチャーなどの手法を使うことで、携帯電話ユーザーからこれらの情報を傍受しようとします。いったんこのデータの取得に成功すると、サイバー犯罪者はユーザーのプロファイルを作成してさらにユーザーの機微な情報を抽出します。たとえば、サイバー犯罪者が電話のIMEI番号を入手した場合、その番号を使って「電話が盗まれた」と報告し、プロバイダにデバイスを無効化してもらい、携帯電話からネットワークへのアクセスをブロックさせることができます。
このほか、サイバー犯罪者や国家主導の攻撃者がこのデータを悪用すれば、ユーザーのプライバシーが侵害されたり、漏えいした情報を使って電話やテキストメッセージが傍受されてしまう可能性があります。平文や弱い暗号で情報を転送するようなメッセージをサイバー犯罪者や国家主導の攻撃者が傍受すれば、ユーザーはさらなるリスクにさらされる可能性があります。
こうしたIMEI、IMSI、電話のMACアドレスなどのデバイス固有情報の機密性については、一意なユーザー識別子の処理方法に関するアプリ開発者向けAndroidのベストプラクティスガイドでも重ねて強調されています。具体的には、このガイドではIMSIやAndroid IDなどユーザーがリセットできないハードウェア固有識別子の利用を避けることの重要性について指摘しています。
データを漏えいするAndroidアプリの発見
データを漏えいするアプリのサンプルを示すため、ここでは弊社の機械学習(ML)ベースのスパイウェア検出システムが識別したAndroidマルウェアUmengAdware( SHA256:49d7a7c4a2e6afe1feb3642f8aabe314f8c8fa156658e3f3bc0bf6926950d0c1 )からの以下のメッセージを取り上げていきます。このメッセージは、マルウェアのサンドボックスであるWildFireで実行されたAndroidアプリから、中国にある宛先IPアドレス(202[.]108.23.105)に対して送信されたものです。
{“tiny_msghead”:1,”devinfolength”:167,”channel_token”:”036442386962228444241069682909576236472810696832741015194936″,”devinfo”:”tmAdvNNMC2M\/thyyYqqBnk0qDitAGWECdUbycugQvIMM3lvdew\/V0duYDaWD5edlacVoSVVZUp18\n6SokwTjUs96F8aARRh+IlGEF78CRFfHSJRC\/eSPHZglCMjrVcqmHKS0K+rJCh9Rh4kH5YqRskZVz\ncFIWOXlaRWRN3WCKPyBA1vpqa4ouNPzjSc5IzJBYNKjb6yKt6LRLosaaDlqar5rc12RDEA7micoU\nEDEnKWo=”,”tinyheart”:1,”period”:1800,”connect_version”:2,”channel_type”:3,”channel_id”:”3522064114212580475″}
ここで取り上げたいデータは上記メッセージで強調表示したdevinfoフィールドに存在します。メッセージ内容を詳細に調べ、複数のAndroidアプリを分析した結果、私たちはこのメッセージのソースがBaiduのAndroid Push SDKであることを特定しました。以下の表1に示すとおり、このSDKは、Baidu MapsやBaidu Search Boxなど、Baiduの人気アプリでも広く使用されています。
以下の図1に示したリバースエンジニアリング済みAndroidコードはメッセージ構造を示したもので、これはデバイスに関するさまざまな情報を集めたものとなっています。抽出されている情報には、電話のMACアドレス、キャリア情報、IMSI番号などが含まれており、抽出処理を行っているのが図2に示した関数です。
図2に示したリバースエンジニアリングからのコードスニペットはBaidu Mapsアプリのバージョン10.24.8で見つかったもので、これはUnit 42が米国Google Playストアからダウンロードして分析したものです。私たちは複数のAndroidアプリのデータ漏えいについて調べましたが、漏えいを確認したアプリのうちでももっとも大きなユーザーベースを抱える2つのアプリは、推定11億人のグローバルユーザーを抱えるBaidu Search Boxと、同じく推定3億人のグローバルユーザーを抱えるBaidu Mapsでした。
ほかに米国のGoogle Playストアで利用可能なアプリのうち私たちが分析したものには、Homestyler – Interior Design & Decorating Ideas(Homestyler - インテリアデザインと装飾のアイデア)というアプリも含まれます。このアプリはフレームワークGrowingIOを使用しています(表1参照)。このアプリはユーザーデバイスから個人情報を収集しますが、Googleはこれまでのところ削除していません。
Androidアプリ | SHA256値 | Google Playストアでのダウンロード回数(米国) | 推定グローバルユーザー数 |
Baidu Search Box
v11.22.0.8 |
b577fea342897e32a24f57b5cd2f6d9bd6b45f6e0459964c5b21a2ce5cf5830f | 500万回以上 | 〜11億ユーザー |
Homestyler – Interior Design & Decorating Ideas
v4.0.0 |
bf831b63a7d74463cbca69024eddfb1b10e52543167f0e2ef8ee8fa7a0b4aecf | 500万回以上 | 〜500万-1000万ユーザー |
Baidu Maps v10.24.8 | f6a2487ae55d8b3c7b8f59f585c0c157d90331893a59ed237df868d0b49889fa | 100万回以上 | 〜3億ユーザー |
表1 Unit42が分析した個人情報を収集する大手Androidアプリ。米国Google Playストアでのダウンロード回数順に表示
私たちはこの調査結果をGoogleのAndroidチームにも知らせました。Googleは私たちの報告したアプリを詳細に分析して結果を追認し、報告のあったBaiduのアプリにはほかにも違反があることを特定しました。この結果、グローバルのGoogle PlayストアからはBaidu Search BoxとBaidu Mapの両アプリが削除されました(2020年10月28日付け)。修正されたバージョンのBaidu Search Boxは2020年11月19日にGoogle Playストアでグローバルで利用可能になりましたが、Baidu Mapsについては本稿執筆時点ではグローバルレベルで利用できない状況です(本稿執筆時点)。
ユーザーの電話端末から機微な情報を収集しているAndroid SDKとしては、このほかにも中国のベンダMobTechのShareSDKがあげられます。ShareSDKは40種類以上のソーシャルメディアプラットフォームをサポートしており、このSDKを使うことでサードパーティアプリの開発者がソーシャルメディアの共有・登録に簡単にアクセスできるようになります。またこのSDKにより、開発者はユーザー情報、友達リストなどのソーシャル機能を取得することもできます。現時点でShareSDKは3万7,500種類以上のアプリにサービスを提供しており、中国最大の開発者サービスプラットフォームになっています。
以下の図3はShareSDKのソースコードで、これはMACアドレス、Android ID、Advertising IDなどのデバイスデータを収集してHashMap構造に保存しています。
以下の図4と図5もShareSDKからのコードのサンプルです。図4は関数getDeviceId()、図5はgetSubscriberId()を呼び出していますが、いずれの関数もAndroid Telephony Managerが提供するもので、それぞれIMEIとIMSIデータを収集しています。
Androidのマルウェアにも見られる同様の振る舞い
Androidのマルウェアを分析していると、Baidu Push SDKやShareSDKなどのSDKは、悪意のあるアプリによってデバイスデータの抽出・送信に頻用されていることがわかります。以下に示す通信サンプルはマルウェアAndroidSudo (SHA256: 3135f8118c55f2a1ca84f69899e330d7ac63c09e77e0c7baff088a0bb185063c)から抽出したメッセージですが、ここではAndroid ID、IMEI、MACアドレスなどのデバイスデータが収集・送信されています。
{“androidid”:”**********”,”model”:”**********”,”plat”:1,”sysver”:”4.3″,”screensize”:”720×1280″,”imei”:”**********”,”carrier”:-1,”mac”:”**********”,”factory”:”asus”,”serialno”:”**********”}
この振る舞いは本稿で述べたSDKやアプリで見られる機能に等しいものです(ここではメッセージに含まれていた機微な情報は割愛しています)。
機械学習を使用したスパイウェアトラフィックの検出
トラフィックパターン分析による悪意のある振る舞いやデータ漏えいの調査は、これまではシグネチャベース、つまりあるトラフィックのパターンが特定のシグネチャと一致するかどうかの真偽判定・検出により行われていました。しかしながら、検出性能の向上とシグネチャでは検出の難しいネットワークトラフィック特定をはかるため、Unit 42のリサーチャーは、これまでにないタイプのトラフィックや未知の悪質なトラフィックの特定をも可能にする機械学習(ML)ベースのスパイウェア検出システムを開発しました。開発にあたっては、偽陽性率を無視できる程度におさえつつ、ネットワークトラフィックの1,000種類以上におよぶ特徴点を考慮しました。この新たなアプローチでは、既存の侵入防止システム(IPS)と比べ、検出可能な新しいスパイウェアトラフィックが大幅に増加することが示されています。
本稿の調査結果もこの新しいスパイウェア検出システムによってもたらされたものです。本システムには、既知の特徴はもちろんのこと、これまで悪意のあるネットワークトラフィックや疑わしいネットワークトラフィックの識別には使われてこなかった特徴についても学習させたモデルが適用されています。
結論
AndroidアプリやSDKからのデータ漏えいはユーザープライバシーの重大な侵害のあらわれです。このためデータを漏えいさせるような振る舞いの検出は、モバイルユーザーのプライバシー権の保護には不可欠です。
モバイルデバイスは通常、アプリのインストール中に必要な権限を一覧にしてユーザーに承認をリクエストするか、アプリの実行中にそうした権限の許可ないし拒否を行うようユーザーにリクエストします。権限を許可しなかった場合、そのアプリが機能しなくなることは少なくなく、ユーザーエクスペリエンス低下をきらったユーザーが、アプリを使用したいがために「許可」をクリックしてしまう、ということがおこりがちです。ですが、特定の権限を承認した場合、その内容が公式ガイドラインに従って使用されるかは多くの場合アプリ開発者次第です。たとえばAndroidでAndroid IDやIMEIなどの端末のIDを読み取るには「read phone status and identity(端末のステータスとIDの読み取り)」という権限が必要ですが、この権限は着信の検出などの基本機能に使用されることが多い一方、IMEIなどの重要情報へのアクセスも許可してしまいますので、いったん承認されれば、サイバー犯罪者がその権限を個人情報の窃取に悪用していないかをユーザー側で判断することは困難です。
パロアルトネットワークスでは、WildFireによるアプリ分析中、ネットワークトラフィックの悪意のある振る舞いや疑わしい振る舞いを監視する機械学習(ML)技術を活用することにより、データ漏えい特定につなげています。こうした手法のもつメリットは、既知のトラフィックパターンのみに依存するのとは異なり、未知のデータ漏えいトラフィックをも識別できる点です。
パロアルトネットワークス製品をご利用のお客様は、次世代ファイアウォールの脅威識別・スパイウェア識別と、WildFireのセキュリティサブスクリプションのもつファイル分析機能によって保護されています。
データ漏えいを防ぐため、Androidアプリの開発者はAndroidのベストプラクティスガイドに従ってユーザーデータを正しく処理する必要があります。またAndroidユーザーは、自身のスマートフォンアプリが要求する必要な権限について把握しておく必要があります。
追加資料