1|2|3Androidマルウェアが使用するパーミッションに注意するAndroidアプリをインストールする際に最も注意すべき事柄は、アプリの「パーミッション」の確認です。Androidマルウェアはいくつか特徴的なパーミッションを使用します。Androidアプリをインストールする際には、それらのパーミッションに注意しましょう。Androidマルウェアが使用するパーミッションを取り上げる前に、まず「パーミッション」について説明します。ご存じの方は読み飛ばしていただいて構いません。■パーミッションとは「パーミッション」はAndroidプラットフォーム特有のセキュリティ機構であり、アプリが必要とする権限を開発者があらかじめ明示し、インストール時にユーザーがそれを確認することで、インストールの可否を判断できる仕組みです。Androidユーザーには、アプリのインストール時の以下のような確認画面でおなじみでしょう。インストール時のパーミッション確認画面パーミッションで許可される権限の例としては、[完全なインターネットアクセス](INTERNET)、[電話番号発信](CALL_PHONE)、[連絡先でデータの読み取り](READ_CONTACT)などがあります。本記事では[Android端末で表示されるパーミッション名(ラベル名)](Android内部で使われるパーミッション名)と表記します。Androidプラットフォームが標準で定義するものだけでも、100以上のパーミッションが存在します。ユーザーはパーミッションを個別に拒否することはできず、アプリのインストール自体の可否のみを選択できます。インストールした後に、アプリが要求するパーミッションが増減することはありません。アプリがパーミッションで許可されていない権限を実行しようとしてもエラーとなり、その権限は実行できません(注11)。■パーミッションのプロテクションレベルパーミッションにはNormal、Dangerous、Signature、SignatureOrSystemの4つのプロテクションレベルが存在します。SignatureおよびSignatureOrSystemは主にシステムアプリに使用され、ユーザーの目に付かないところで適切に処理されるため、本記事では割愛します。アプリをインストールする際にユーザーが確認できるのは、DangerousとNormalのパーミッションのみです。Dangerousはリスクが高いとされるパーミッションで、確認画面で目立つように表示されます。Normalパーミッションは折り畳まれ、目に付かない状態で表示されます。■パーミッション確認における注意点パーミッションは種類が多く、内容が分かりにくいものもあるので、面倒に感じることもあるでしょう。パーミッションの確認は怠らないようにしたいものです。ゲームアプリが[連絡先データの読み取り](READ_CONTACT)を使用しているなど、アプリの機能からして明らかに必要以上と思われるパーミッションを使用しているものには注意が必要です。疑問を感じるなら、時にはインストールを我慢することも必要でしょう。信頼できる有用なアプリも、危険なパーミッションを含めていくつかのパーミッションを使用していることがほとんどです。そのような場合、開発元の知名度やアプリの評判を頼りに判断しましょう。注11:通常はSecurityExceptionの例外が発生し、この例外を補足しない多くのアプリはそこで終了する。Androidマルウェアによく使われるパーミッションでは、Androidマルウェアが実際に使用しているパーミッションを基に、注意すべきパーミッションを確認していきましょう。表3は、セキュリティベンダ各社の公開情報などを基に、表1で取り上げたマルウェアが使用するパーミッションを集計し、使用頻度の順に並べたものです。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マルウェアに対しては、セキュリティアプリでも検出できるといえそうです。Marketから発見され次第削除されていることを考えると、まだ発見されていない(未知の)Androidマルウェアには注意すべきでしょう。したセキュリティアプリが未知のAndroidマルウェアをどれだけ検出できるかは未知数です。現状ではセキュリティアプリに頼るよりも、本記事で挙げた注意点を実践し、自分の目でアプリの信頼性を確認してほしいと思います。注12:セキュリティソフト7種のうち1種だけは、ユーザーがファイラ(例:Androidアプリ「アストロファイルマネージャ」など)でAndroidマルウェアを保存したディレクトリにアクセスしただけで、それらを検出して削除できました。最後に以上、本記事ではAndroidを取り巻くマルウェア・脆弱性への攻撃といった脅威について述べてきました。Androidをターゲットにするマルウェアの存在や脆弱性への攻撃の実証が確認されていることは事実です。本記事で述べた注意点を実践していれば、セキュリティ対策を実施していないパソコンに比べ、Android端末使用におけるリスクは低いと考えます。現状の脅威を理解したうえで、必要以上に怖がらないでAndroid端末を使いましょう。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。