Android 4.2 "Jelly Bean"には、Google Play Store以外からインストールされるアプリについてもマルウェアかどうかを検出する"Application Verification Service"機能が導入されているが、その実力がいかほどなものかを検証した研究レポートが発表され話題になっている。果たして、既存のアンチマルウェア製品を置き換えることは可能なのだろうか。
同レポートは米ノースカロライナ州大学(NC State University)のコンピュータサイエンス学部准教授のXuxian Jiang氏が発表したもの。比較的地味といわれるAndroid 4.2のアップデートだが、その中でも隠れた目玉機能としてフィーチャーされていたのがApplication Verification Serviceだ。大量のマルウェア登録が問題となって以降、GoogleのアプリストアであるPlay Storeではマルウェアチェックプログラムが導入され、名目上は同ストアからダウンロードするアプリは安全ということになっている。一方でAndroidは仕組み上、Google Play以外のアプリストアを利用したり、自らアプリパッケージを導入することが容易になっており、ここから導入された"野良"アプリを経由してマルウェアの侵入口となっているケースが報告されている。Application Verification Serviceはこの穴を塞ぐもので、Google Play経由以外で導入されるすべてのアプリに対してマルウェア検査を行う機能を提供する。
Application Verification Serviceのメカニズム
Jiang氏の解説によれば、Application Verification Serviceは数段階のステップで検出作業を行うようになっている。同サービスの利用にあたっては必ずGoogle Play Storeのアプリが導入されている必要があり、検査対象となるアプリをインストールした段階でPlay StoreアプリがApplication Verification Serviceを司るGoogle側のクラウドに問い合わせを行い、その結果を受けてアラートを発したりするなど、各種アクションを起こすようになっている。まず当該アプリをインストールしたタイミングでパッケージインストーラがPlay Storeアプリ内のApplication Verification Clientに問い合わせを行い、次に同クライアントがサーバに必要情報を送って問い合わせをするという中継方式をとる。この際、クライアントがサーバに送る情報はアプリ名、サイズ、SHA1 (ハッシュ値)、バージョン情報、関連URLといったアプリ固有情報に加え、デバイスIDやIPアドレスといった付加情報も含まれるようだ。これら情報を基にサーバはデータベースとのマッチングを行い、その結果をクライアントに返す。
検査の結果は主に3種類あり、問題なしでパスするケース、次に"Potentially Dangerous"として警告メッセージと確認を求めるダイアログが表示されるケース、そして"Dangerous"と判定されてインストールそのものがブロックされるケースだ。Application Verification Serviceは必須ではなくオプション扱いだが、デフォルトでは"オン"になっている。機能のオン/オフは設定メニューのセキュリティから「Verify apps」を選択する。ここで「Agree」を選択すると、すべてのインストールアプリに対して同サービス経由での検査が実施される。
サンプルを基に分析した結果……
今回の研究レポートの趣旨は、このApplication Verification Serviceがどの程度の精度を持っており、どういったアルゴリズムでマルウェア判定を行っているかを分析することだ。そこでAndroid Malware Genome Projectを介して集められたマルウェアのサンプル1260検体(49ファミリ)を同サービスに通し、実際にマルウェアとして検出するかを調べている。詳細はレポートのリンク内の表にあるが、全1260サンプル中、マルウェアとして判定できたのはわずか193と、判定率で15.32%と非常に残念な結果に終わっている。
次に同レポートでは、Application Verification Serviceとその競合となるアンチウイルス製品との検出比較を行っている。先ほどのマルウェアの49ファミリから検体をランダムで抽出し、Application Verification Serviceに検査をかけると同時に、Googleが今年2012年9月に買収したVirusTotalサービスを使って複数のマルウェア検出エンジンとの比較を行っている。VirusTotalではアップロードされたファイルのハッシュタグを基に複数のマルウェア検出エンジンを使って横断検索を行うシステムとなっており、これを使って代表的な検出エンジン10種(Avast、AVG、TrendMicro、Symantec、BitDefender、ClamAV、F-Secure、Fortinet、Kaspersky、Kingsoft)と同時比較している(レポート内の表はランダムに順番が割り当てられており具体的にどの結果がどの製品と結びついているかは明示されていない)。結果、ほとんどの製品で80~100%の水準で検出を成功させているのに対し、Application Verification Serviceでは20.41%と非常に低い水準に収まっている。
以上からJiang氏はApplication Verification Serviceについて、非常に初期段階のサービスであり、今後も大いに改良の余地があると結んでいる。同氏は分析の結果から、Application Verification Serviceが"Potentially Dangerous"と"Dangerous"の判定を行う基準として、SHA1のハッシュ値とパッケージ名に極度に依存している傾向があると推測している。ハッシュ値はパッケージ内のちょっとした改変ですぐに変化するため、マルウェア制作者にとっては多少の内容の変更でバリアント(変種)を簡単に生み出して検査をバイパスできる。ゆえにハッシュ値を使ったデータベースのマッチングだけでは、蓄積したデータ量に検出率が大きく左右されることになり、今回のような結果につながった可能性がある。この精度は検出時に転送するデータの内容にも左右されるほか、現状ではApplication Verification Clientそのものがマルウェア検出機能を持っていないという問題もあり、サーバとクライアント側で動作のバランスをどう調整するのか改良の余地が多分にありそうだというのが同氏の考えだ。
なお、以上からもわかるように、サードパーティ製アンチウイルス製品の効果が、Application Verification Serviceがある現時点においても非常に有効だ。適時組み合わせてセキュリティ対策を行っていくといいだろう。
(記事提供: AndroWire編集部)