不必要な権限の取得

学習内容

ここでは、不必要な権限の取得によって生じる問題を理解する上で必要な知識について学習します。
具体的には、Android OSのPermissionの概要や、マルウェアの事例について説明します。

学習の流れは以下のとおりです。
  • Permissionとは
    Permissionの概要について学習します。
  • 不必要な権限の取得によって生じる問題
    不必要な権限を持っている場合に、どのような問題が生じるのか学習します。
  • マルウェアの事例
    マルウェアをインストールすることによって起きた事例を紹介します。
  • 学習シナリオ
    サンプルアプリのソースコードを確認し、問題の体験を通じて、開発時に注意すべきポイントと対策方法について学習します。
    ここでは以下のシナリオを用いて学習します。
    • マルウェアと誤解される可能性のあるPermissionの使用

Permissionとは

Permissionとは、アプリが他のアプリやAndroid OSが管理しているデータや機能を使用するために必要な権限に対する許可のことです。 Android OSのセキュリティの仕組みでは、アプリが連絡先データを読み取ったり、インターネットにアクセスしたりするためには許可が必要です。 アプリがこれらのデータや機能を使用するためには、AndroidManifest.xmlに使用するPermissionを定義し、アプリのインストール時に権限を取得する必要があります。
権限を取得せずに権限が必要な機能を使用すると、多くの場合、例外(SecurityException)が発生して機能は使用できません。 以下は「AndroidManifest.xml」に記述された、使用するPermissionの定義例です。
<!-- 完全なインターネットアクセス -->
<uses-permission android:name="android.permission.INTERNET"/>
<!-- 連絡先データの読み取り -->
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<!-- カレンダーの予定の読み取り -->
<uses-permission android:name="android.permission.READ_CALENDAR"/>
アプリが取得する権限は、「AndroidManifest.xml」上の 要素に静的に定義されるため、実行時に動的に権限を追加したり、変更したりすることはできません。

不必要な権限の取得によって生じる問題

アプリに不必要な権限が付与されている場合、以下のような問題が生じる可能性があります。
  • アプリがマルウェアだと誤解されてしまう可能性
    アプリの機能と権限の関連性は、利用者にはわかりません。実際には使用していない権限であっても、アプリが権限を要求している場合、利用者からはその権限を使用して何らかの処理を行うアプリに見えてしまいます。 アプリの用途や取得する権限について適切な説明がない場合、 利用者はアプリに対して不信感を持ちます。 結果として、アプリがダウンロードされなかったり、マルウェアの疑いをかけられたりする可能性があります。
    アプリに広告モジュールを組み込んだ場合、広告モジュールによっては、特定の権限(例えばインターネットアクセスや位置情報取得等)を必要とするため、アプリ本体は使用しない権限を取得しなければならないケースもあります。
    この場合、利用者からはアプリ自体が不必要な通信を行っているように見えてしまうため、利用者の情報をどこかに送信するアプリではないかと疑われる可能性があります。
    利用者に不信感を与えることにより、開発者へのイメージに悪影響を与えてしまう可能性もあります。
  • 脆弱性を悪用された場合の被害が大きくなる可能性
    万一、アプリの脆弱性が悪用された場合、攻撃者は脆弱性を悪用してアプリの権限を利用し、不正な処理を行います。
    アプリが不要な権限を取得している場合、攻撃者はその権限も利用できるため、本来であれば行えないはずの不正な処理を実行されてしまう可能性があります。

マルウェアの事例

ここでは、マルウェアと疑われることの危険性を学習するために、不必要な権限を要求するマルウェアの事例を挙げます。
事例:the Movie アプリ
2012年4月、Google Play Storeに人気アプリの操作動画などを再生する「〜 the Movie」というタイトルが付いたアプリが複数公開されました。
ところがこれらのアプリは、動画再生アプリでありながら、実行中に利用者の個人情報をサーバにアップロードしていました。
このアプリのGoogle Play Storeでのダウンロード数は6万件から27万件以上、外部サーバに送信された情報は数百万人分に上る可能性があるといわれています。 この事件をきっかけに、「アプリが要求する権限に注意しないと自分の個人情報が危ない」という認識を持つ利用者が増えました。
アプリが不必要な権限を持っている事や使用用途が不明確な権限を持っている事で、利用者にマルウェアではないかと疑われる可能性があります。
参考URL:
情報セキュリティ: コンピュータウイルス・不正アクセスの届出状況[4月分]について
https://www.ipa.go.jp/security/txt/2012/05outline.html

学習シナリオ

不必要な権限の取得によって生じる問題の概要について理解できたでしょうか。 それでは以下のシナリオを通して問題のあるサンプルアプリを見ながら、問題を作り込んでしまう原因や、対策方法について学習していきましょう。