連載
» 2011年08月09日 00時00分 UPDATE

Androidセキュリティの今、これから(2):Androidを取り巻く脅威――ユーザーにできることは? (3/3)

[Android セキュリティ部,@IT]
前のページへ 1|2|3       

Androidマルウェアが使用するパーミッションに注意する

 Androidアプリをインストールする際に最も注意すべき事柄は、アプリの「パーミッション」の確認です。Androidマルウェアはいくつか特徴的なパーミッションを使用します。Androidアプリをインストールする際には、それらのパーミッションに注意しましょう。

 Androidマルウェアが使用するパーミッションを取り上げる前に、まず「パーミッション」について説明します。すでにご存じの方は読み飛ばしていただいて構いません。

パーミッションとは

 「パーミッション」はAndroidプラットフォーム特有のセキュリティ機構であり、アプリが必要とする権限を開発者があらかじめ明示し、インストール時にユーザーがそれを確認することで、インストールの可否を判断できる仕組みです。Androidユーザーには、アプリのインストール時の以下のような確認画面でおなじみでしょう。

画面3 インストール時のパーミッション確認画面 画面3 インストール時のパーミッション確認画面

 パーミッションで許可される権限の例としては、[完全なインターネットアクセス](INTERNET)、[電話番号発信](CALL_PHONE)、[連絡先でデータの読み取り](READ_CONTACT)などがあります。なお本記事では[Android端末で表示されるパーミッション名(ラベル名)](Android内部で使われるパーミッション名)と表記します。

 Androidプラットフォームが標準で定義するものだけでも、100以上のパーミッションが存在します。

 ユーザーはパーミッションを個別に拒否することはできず、アプリのインストール自体の可否のみを選択できます。インストールした後に、アプリが要求するパーミッションが増減することはありません。アプリがパーミッションで許可されていない権限を実行しようとしてもエラーとなり、その権限は実行できません(注11)。

パーミッションのプロテクションレベル

 パーミッションにはNormalDangerousSignatureSignatureOrSystemの4つのプロテクションレベルが存在します。

 SignatureおよびSignatureOrSystemは主にシステムアプリに使用され、ユーザーの目に付かないところで適切に処理されるため、本記事では割愛します。アプリをインストールする際にユーザーが確認できるのは、DangerousとNormalのパーミッションのみです。

 Dangerousはリスクが高いとされるパーミッションで、確認画面で目立つように表示されます。一方、Normalパーミッションは折り畳まれ、目に付かない状態で表示されます。

画面4 DangerousとNormalの表示 画面4 DangerousとNormalの表示

パーミッション確認における注意点

 パーミッションは種類が多く、内容が分かりにくいものもあるので、面倒に感じることもあるでしょう。ですが、パーミッションの確認は怠らないようにしたいものです。

 例えば、ゲームアプリが[連絡先データの読み取り](READ_CONTACT)を使用しているなど、アプリの機能からして明らかに必要以上と思われるパーミッションを使用しているものには注意が必要です。疑問を感じるなら、時にはインストールを我慢することも必要でしょう。

 ただし、信頼できる有用なアプリも、危険なパーミッションを含めていくつかのパーミッションを使用していることがほとんどです。そのような場合、開発元の知名度やアプリの評判を頼りに判断しましょう。

注11:通常はSecurityExceptionの例外が発生し、この例外を補足しない多くのアプリはそこで終了する。


Androidマルウェアによく使われるパーミッション

 では、Androidマルウェアが実際に使用しているパーミッションを基に、注意すべきパーミッションを確認していきましょう。表3は、セキュリティベンダ各社の公開情報などを基に、表1で取り上げたマルウェアが使用するパーミッションを集計し、使用頻度の順に並べたものです。

ラベル名 使用数 パーミッション名 レベル
完全なインターネットアクセス 15 android.permission.INTERNET Dangerous
携帯のステータスとIDの読み取り 12 android.permission.READ_PHONE_STATE Dangerous
SMSメッセージの送信 9 android.permission.SEND_SMS Dangerous
おおよその位置情報(ネットワーク基地局) 7 android.permission.ACCESS_COARSE_LOCATION Dangerous
ネットワーク状態の表示 7 android.permission.ACCESS_NETWORK_STATE Normal
起動時に自動的に開始 7 android.permission.RECEIVE_BOOT_COMPLETED Normal
SMSの受信 7 android.permission.RECEIVE_SMS Dangerous
SDカードのコンテンツを修正/削除する 7 android.permission.WRITE_EXTERNAL_STORAGE Dangerous
精細な位置情報(GPS) 6 android.permission.ACCESS_FINE_LOCATION Dangerous
Wi-Fi状態の表示 5 android.permission.ACCESS_WIFI_STATE Normal
SMSの読み取り 5 android.permission.READ_SMS Dangerous
連絡先データの読み取り 4 android.permission.READ_CONTACTS Dangerous
電話番号発信 3 android.permission.CALL_PHONE Dangerous
Wi-Fi状態の変更 3 android.permission.CHANGE_WIFI_STATE Dangerous
アプリケーションを直接インストール 3 android.permission.INSTALL_PACKAGES signatureOrSystem
システムログファイルの読み取り 3 android.permission.READ_LOGS Dangerous
ブラウザの履歴とブックマークを読み取る 3 com.android.browser.permission.READ_HISTORY_BOOKMARKS Dangerous
ブラウザの履歴とブックマークを書き込む 3 com.android.browser.permission.WRITE_HISTORY_BOOKMARKS Dangerous
ショートカットのインストール 3 com.android.launcher.permission.INSTALL_SHORTCUT Normal
ネットワーク接続の変更 2 android.permission.CHANGE_NETWORK_STATE Dangerous
アプリケーションの削除 2 android.permission.DELETE_PACKAGES signatureOrSystem
端末ステータスの変更 2 android.permission.MODIFY_PHONE_STATE Dangerous
ファイルシステムのマウントとマウント解除 2 android.permission.MOUNT_UNMOUNT_FILESYSTEMS Dangerous
他のアプリケーションの再起動 2 android.permission.RESTART_PACKAGES Dangerous
端末のスリープを無効にする 2 android.permission.WAKE_LOCK Dangerous
SMSの編集 2 android.permission.WRITE_SMS Dangerous
発信の傍受 1 android.permission.PROCESS_OUTGOING_CALLS Dangerous
壁紙の設定 1 android.permission.SET_WALLPAPER Normal
バイブレーション制御 1 android.permission.VIBRATE Normal
アクセスポイント名設定の書き込み 1 android.permission.WRITE_APN_SETTINGS Dangerous
連絡先データの書き込み 1 android.permission.WRITE_CONTACTS Dangerous
ホーム設定とショートカットの読み取り 1 com.android.launcher.permission.READ_SETTINGS Normal
ショートカットのアンインストール 1 com.android.launcher.permission.UNINSTALL_SHORTCUT Normal
ホームの設定とショートカットの書き込み 1 com.android.launcher.permission.WRITE_SETTINGS Normal
表3 Androidマルウェアが使用しているパーミッション

 これらの中から、Androidマルウェアが使用する特徴的なパーミッションを紹介します。Androidアプリをインストールする際の参考にしてください。

[SMSメッセージの送信](SEND_SMS)/[SMSの受信](RECEIVE_SMS)

 [SMSメッセージの送信](SEND_SMS)はショートメッセージの送信を許可するパーミッションです。「Android端末で動作するマルウェア」の項で触れたように、メッセージの送信で金銭的利益が得られるため、マルウェアによく使用されます。また、[SMSの受信](RECEIVE_SMS)も、ボット型マルウェアがコマンドを受信するために使用する例があります。

[連絡先データの読み取り](READ_CONTACTS)

 [連絡先データの読み取り](READ_CONTACTS)はアドレス帳に登録した連絡先の読み取りを許可するパーミッションです。このパーミッションはアドレス帳の連絡先にメッセージを送るタイプのマルウェアに使用されます。

[起動時に自動的に開始](RECEIVE_BOOT_COMPLETED)

 [起動時に自動的に開始](RECEIVE_BOOT_COMPLETED)は、Normalプロテクションレベルでは目立たないパーミッションですが、ボットのような常駐指向のマルウェアに利用される、警戒すべきパーミッションです。パーミッション確認の際は、ぜひNormalパーミッションも確認し、常駐する必要性のないアプリがこのパーミッションを使用していないか注意してください。

アプリの性質を考えたときに必要ないパーミッション

 [電話番号発信](CALL_PHONE)、[他のアプリケーションの再起動](RESTART_PACKAGES)、[システムログファイルの読み取り](READ_LOGS)などは、アプリによっては使用する必要がありません。このようなパーミッションを受け入れるのは信頼できる開発元のアプリに限るなど、十分に注意してください。

 なお、Androidマルウェアが使用するパーミッションの中には、通常のアプリでもよく使用されるため、判断の難しいものがあります。それらは、前述したパーミッションとは異なり、これらのパーミッションがあるからといって単純に“危険なアプリ“と判断することはできません。以下、そのようなパーミッションを紹介します。

[完全なインターネットアクセス](INTERNET)

 このパーミッションは、情報を外部のサーバに送信するマルウェアや命令を受信するボットなどに使われます。実はこのパーミッションだけでも、パーミッションを必要としないmicroSDの読み込み機能を組み合わせると、microSD内の写真を流出するような暴露系マルウェアが作成できてしまうのです。

 しかし、一見インターネット通信を必要としないようなアプリでも、アプリ内広告のためにこのパーミッションを使用しています。例えば、Androidアプリがアプリ内広告サービス「AdMob」「AdMaker」を使用する場合、このパーミッションと[ネットワーク状態の表示](ACCESS_NETWORK_STATE)を必要とします。そのため、Androidアプリが[完全なインターネットアクセス]と[ネットワーク状態の表示]だけを要求している場合、単にアプリ内広告を使用しているだけという可能性もあります。

[携帯のステータスとIDの読み取り](READ_PHONE_STATE)

 [携帯のステータスとIDの読み取り](READ_PHONE_STATE)は、電話番号、IMEI、IMSIといったAndroid端末に保存されている情報へのアクセスを許可するパーミッションです。Androidマルウェアには、これらの情報を外部のサーバに送る挙動を取るものが少なくありません。しかしながら、[携帯のステータスとIDの読み取り]は電話の着信を検知してアプリを一時停止させるために、音楽・動画再生を行うアプリやゲームなどでも使われます。

Android端末のアップデートを実施する

 脆弱性を悪用するAndroidマルウェアや攻撃にもきちんと対策しておきたいところです。ここまで、パーミッションの確認を中心に述べてきましたが、その前提を覆すのが、脆弱性を悪用するマルウェア(「Trojan:Android/DroidDream.A」や「Trojan:Android/DroidKungFu.A」)の存在です。脆弱性を悪用することにより、パーミッションの制限を乗り越えてしまいます。

 脆弱性の悪用への対策としては、Android端末のアップデート(OSのバージョンアップを含む)が重要になります。残念ながら、携帯電話キャリアなどでは脆弱性への対策状況を発信していないため、アップデートで脆弱性が解消されるのかどうか、よく分からない部分もあります。ですが、お使いのAndroid端末で新しくアップデートプログラムが提供された場合、きちんとアップデートすべきでしょう。

 ただし、Android端末をアップデートすると、Androidアプリが最新バージョンのAndroidに対応しておらず、動作しなくなる可能性があります。アップデート時にはこの点に留意してください。

【コラム】 Android向けのセキュリティアプリはどの程度有効?

 Androidマルウェアの出現に伴い、ウイルス対策機能を持つセキュリティアプリが相次いでリリースされています。

 7種類のセキュリティアプリを対象に、既知のAndroidマルウェア4種を用いて実験したところ、いずれのアプリでも4種類のマルウェアすべてをインストール時に検出できました(注12)。報告された既知のAndroidマルウェアに対しては、セキュリティアプリでも検出できるといえそうです。

 しかしながら、既知のAndroidマルウェアがAndroid Marketから発見され次第削除されていることを考えると、まだ発見されていない(未知の)Androidマルウェアには注意すべきでしょう。しかし、こうしたセキュリティアプリが未知のAndroidマルウェアをどれだけ検出できるかは未知数です。現状ではセキュリティアプリに頼るよりも、本記事で挙げた注意点を実践し、自分の目でアプリの信頼性を確認してほしいと思います。

注12:セキュリティソフト7種のうち1種だけは、ユーザーがファイラ(例:Androidアプリ「アストロファイルマネージャ」など)でAndroidマルウェアを保存したディレクトリにアクセスしただけで、それらを検出して削除できました。



最後に

 以上、本記事ではAndroidを取り巻くマルウェア・脆弱性への攻撃といった脅威について述べてきました。すでに、Androidをターゲットにするマルウェアの存在や脆弱性への攻撃の実証が確認されていることは事実です。しかし本記事で述べた注意点を実践していれば、セキュリティ対策を実施していないパソコンに比べ、Android端末使用におけるリスクは低いと考えます。

 現状の脅威を理解したうえで、必要以上に怖がらないでAndroid端末を使いましょう。

【関連リンク】
Android セキュリティ部

http://groups.google.com/group/android-security-japan



前のページへ 1|2|3       

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

Touch Barという新UIを得た「MacBook Pro」、プレゼント!

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。