徹底解説:Androidアプリの権限

Androidには、アプリが実行できるアクションを設定する権限というシステムがあります。怪しいアプリに強力な権限を与えないよう、権限を適切に設定するようにしましょう。

2018年10月31日更新:Googleは、Android 8.0(Oreo)の権限設定に新たなグループ「特別なアプリアクセス」を追加しました。詳細については『徹底解説:Android 8.0でのアプリの権限』をご覧ください。

Android 6.0には、マルウェアに対して非常に優れた防御メカニズム、アプリの権限管理システムが実装されています。これは、アプリが実行できる(または実行できない)アクション一式を定義する仕組みです。既定では、すべてのAndroidアプリは隔離された環境(サンドボックス)内で動作するようになっています。アプリがサンドボックス外のデータにアクセスしたり、編集や削除を行ったりするには、そのアクションに対する権限が与えられていなければなりません。

権限はいくつかのカテゴリに分類されますが(英語記事)、ここでは「Normal」(標準)と「Dangerous」(危険)の2カテゴリを取り上げます。Normalカテゴリの権限にひもづくアクションは、インターネットへのアクセス、アイコンの作成、Bluetoothへの接続などです。これらは既定で許可されていて、利用者が改めて許可する必要はありません。

一方、アプリが「Dangerous」カテゴリの権限を要求した場合は利用者の許可が必要です。では、なぜ一部の権限は危ないとみなされるのでしょうか?どういう場合なら許可してよいのでしょう?詳しく見ていきます。

Dangerousカテゴリの権限

「Dangerous」カテゴリには、利用者のプライバシーやセキュリティに関わる権限グループが9つあります。各グループには、アプリが要求する権限が含まれています。

利用者がどれか1つの権限を許可すると、その権限と同じグループ内にある全部の権限がアプリに自動的に与えられます。たとえば、アプリにSMSメッセージの読み取りに関する権限を許可した場合、そのアプリはSMSメッセージの送信、MMSメッセージの読み取りなど、同じ権限グループ内に含まれるすべてのアクションが許可されます。

Dangerousカテゴリに属する権限グループと、そのグループに属するアクションは以下のとおりです。

カレンダー

許可されるアクション:

  • カレンダー内に保存されたイベントの読み取り(READ_CALENDAR)
  • 古いイベントの編集と新規イベントの作成(WRITE_CALENDAR)

危険な理由:デジタルスケジュール帳を活用している場合、アプリはあなたの日々の業務をすっかり把握し、どこかの犯罪者にシェアするかもしれません。それだけでなく、バグの多いアプリだった場合、カレンダーに書き込んであった大事な予定が誤って削除されてしまう可能性もあります。

カメラ

許可されるアクション:

  • スマートフォンのカメラを使った写真や動画の撮影(CAMERA)

危険な理由:気付かない間に、アプリによって写真や動画が撮影される可能性があります。

連絡先

許可されるアクション:

  • 連絡先の読み取り(READ_CONTACTS)
  • 連絡先の編集または新規追加(WRITE_CONTACTS)
  • アカウントリストへのアクセス(GET_ACCOUNTS)

危険な理由:アドレス帳の情報が丸ごと持って行かれる可能性があります。スパムを大量に送ろうとする人や詐欺を働く人にとって、アドレス帳の情報は非常に魅力的です。また、デバイスにインストールされているアプリ(Google、Facebook、Instagramなど)で使われているアカウントの情報に対するアクセスも許可されます。

位置情報

許可されるアクション:

  • おおよその位置情報へのアクセス(ACCESS_COARSE_LOCATION)。この位置情報は、携帯電話基地局とWi-Fiホットスポットのデータに基づく。
  • 正確な位置情報へのアクセス(ACCESS_FINE_LOCATION)。この位置情報はGPSデータに基づく。

危険な理由:あなたの居場所をアプリが常に把握している状態となります。ということは、たとえば盗みを働こうと考える誰かが、あなたが自宅から離れていることを把握するかもしれません。

マイク

許可されるアクション:

  • マイクからの音声の録音(RECORD_AUDIO)

危険な理由:スマートフォン周辺のあらゆる音を、アプリが録音可能になります。スマートフォンで話しているときに限らず、一日中、スマートフォン周辺で行われた会話もすべて録音可能です。

電話

許可されるアクション:

  • 電話の状態の読み取り(READ_PHONE_STATE)。アプリはあなたの電話番号、現在使用している携帯電話ネットワークの情報、通話状態などを把握できます。
  • 電話の発信(CALL_PHONE)
  • 通話リストの読み取り(READ_CALL_LOG)
  • 通話リストの変更(WRITE_CALL_LOG)
  • ボイスメールの追加(ADD_VOICEMAIL)
  • VoIPの使用(USE_SIP)
  • 通話の加工(PROCESS_OUTGOING_CALLS)。アプリは発信者の確認、通話の終了、別の番号への転送が可能になります。

危険な理由:電話の権限を許可すると、アプリは音声通信に関わるほぼすべてのアクションを実行できるようになります。いつ、誰と通話したかを把握できるだけでなく、どこからでも電話をかけることができますし、あなたの支払いで有料通話にかけることもできます。

ボディセンサー

許可されるアクション:

  • 心拍数モニターなど、特定のセンサーで取得したヘルスデータへのアクセス(BODY_SENSORS)

危険な理由:(スマートフォンに内蔵の加速度センサーではなく)ボディセンサー付きのアクセサリを使用している場合、アプリは利用者の体の状態に関するデータを取得できます。

SMS

許可されるアクション:

  • SMSメッセージの送信(SEND_SMS)
  • 保存されたSMSメッセージの読み取り(READ_SMS)
  • SMSメッセージの取得(RECEIVE_SMS)
  • WAPプッシュメッセージの取得(RECEIVE_WAP_PUSH)
  • 受信したMMSメッセージの取得(RECEIVE_MMS)

危険な理由:アプリは、受信したSMSメッセージの取得、読み取り、送信が可能になります(送信料金の請求先はもちろん、あなたです)。たとえば、どこかの誰かがこの権限を使って、あなたが必要ともしていない有料サービスにあなたを登録することができます。

ストレージ

許可されるアクション:

  • SDカードや他のストレージの読み取り(READ_EXTERNAL_STORAGE)
  • ストレージまたはSDカードへのデータの保存(WRITE_EXTERNAL_STORAGE)

危険な理由:スマートフォンに保存されたファイルの読み取り、変更、削除が行われる可能性があります。

アプリ権限の設定方法

アプリの権限要求に不審な点がある場合は、インストールしないこと。少なくとも、権限は拒否しましょう

権限を許可するときは、その都度、慎重に判断してください。たとえば、写真加工アプリが位置情報を求めてくるのは不自然です。同じように、地図アプリやナビゲーションアプリにGPSデータは必要ですが、連絡先リストやSMSメッセージへのアクセスは必要ありません。

Android 6以降では、アプリがDangerousカテゴリの権限を必要とする場合、毎回利用者の許可を求める仕様になっています。許可したくないと思えば、いつでも要求を拒否できます。もちろん、これらの権限が本当に必要な場合には、エラーメッセージが表示されてアプリは正常に動作しないでしょう。

このアプリは通話と通話管理の権限を要求しています

なお、アプリに許可されている権限を確認して変更することもできます。

まず[設定] – [アプリ]の順に選択します(メニュー名やその他設定項目の名称は、Androidのバージョンによって異なる場合があります)。

この先は、2つのやり方があります。1つめは、与えられた権限をアプリごとに確認する方法です。確認するには、アプリの名前をクリックし、[許可]を選択してください。アプリに与えられている権限が表示されます。

2つめは、Dangerousカテゴリの権限を要求したアプリ、または要求する可能性のあるアプリの一覧を確認する方法です。たとえば、連絡先リストへのアクセスを求めるアプリを一覧表示して、怪しいと思われるアプリに対する権限の許可を取り消す、という使い方ができます。確認するには、[アプリの設定](右上端の歯車のアイコン)を選択し、[アプリの権限]をクリックします。

特殊なアクセス権限

Dangerousカテゴリの権限以外にも、アプリが特殊なアクセス権限を求めてくることがあります。そんなときは注意しましょう。無害なアプリを装うマルウェアは、よくこうした権限を要求してきます。

アクセシビリティ

視覚や聴覚の不自由な人がアプリやデバイスを操作しやすくするための権限です。マルウェアは、目的達成のためにこうした機能を不正利用することがあります。

アクセシビリティの権限を得たマルウェアは、アプリ経由でデータ(入力テキストなど。主な目的はパスワードの入手)を傍受できるようになります。それだけでなく、Google Playストアからアプリを購入することもできるようになります(英語記事)。

既定のSMSアプリ

バンキング型トロイの木馬(マルウェアの一種)は、既定のSMSアプリ(メッセンジャー)になろうとします。既定のアプリであれば、SMSメッセージの読み取りや非表示が可能だからです。たとえば、SMSメッセージを読み取ってネットバンキングのパスワードを入手し、スマートフォンの持ち主に知られることなく(SMSメッセージを非表示にできるため)不正な取引を成立させる、といったことが可能になります。

他のアプリの上に表示

他のアプリ画面の上に重ねて表示する権限を得たトロイの木馬は、正規アプリ(よくあるのはモバイルバンキングアプリやソーシャルネットワークアプリ)の上に、偽物の画面を表示できるようになります。正規アプリの画面にパスワードを入力しているつもりが、実際はトロイの木馬が表示した偽画面に入力してしまい、入力したデータは犯罪者の手へ渡ってしまいます。

デバイス管理者

この権限があると、パスワードの変更、カメラのロック、デバイス内の全データの消去が可能になります。不正なアプリは、この権限を得ようと狙ってくることがしばしばです。管理者権限付きのアプリはアンインストールするのが難しいからです。

ルート権限

これは最も危険度の高い権限です。既定では、これらの権限がアプリに付与されることはありません。しかし、マルウェアの中には、システムの脆弱性を悪用してルート権限を得ようとするものがあります(英語記事)。マルウェアがルート権限を得てしまうと、セキュリティ対策は一切歯が立たなくなります。利用者がどの権限を許可したか拒否したかに関係なく、マルウェアはルート権限を使ってやりたい放題になるからです。

ここで少し触れたいのは、Android 6でリリースされた新しい権限管理システムであってもマルウェアから完全に守りきれない点です。たとえば、トロイの木馬Gugiは、他のアプリ画面の上に重ねて表示する権限を要求し、権限が与えられるまでしつこく要求を繰り返して利用者を悩ませます。重ねて表示する権限を得た後は、他にも得たい権限をすべて得られるまで、他のアプリ画面に重ねて要求を表示し続けます。

結論

アプリが求める権限をむやみに許可してはなりません。特に、Dangerousカテゴリの権限を理由もなく要求してくるアプリは危険です。権限を許可する前に、そのアプリに本当に必要な権限かどうか考えてみてください。

ただし、多くの権限がどうしても必要なアプリもあります。たとえばアンチウイルスのアプリは、システムをスキャンしたり、危険なものが入ってくる前に防御策をとったりする関係上、多くの権限を必要とします。

自分がインストールしようとしているアプリが求める権限が妥当なものかどうか、判断に迷う場合は、ネットでリサーチしてみることをお勧めします。

また、システムの脆弱性を悪用するタイプのマルウェアは、いくら慎重になっていても防ぎきれないことがあります。アプリの権限を適切に管理することはもちろんですが、信頼できるセキュリティ製品をインストールすることで、たちの悪いマルウェアが入ってくるのを防ぐのも大切です。

2018年10月31日更新:Googleは、Android 8.0(Oreo)の権限設定に新たなグループ「特別なアプリアクセス」を追加しました。詳細については『徹底解説:Android 8.0でのアプリの権限』をご覧ください。

ヒント

Windows Downdate攻撃から身を守る方法

Windows Downdateは、最新バージョンのOSを古いバージョンにロールバックさせ、脆弱性が残る状態を復活させ、攻撃者がシステムを容易に侵害できるような状態にする攻撃です。この攻撃のリスクを低減するにはどうしたらよいでしょうか?