Androidアプリの「マルウェア判定」「脆弱性検知」技術Androidセキュリティ技術の最前線(2)(3/3 ページ)

» 2016年03月28日 05時00分 公開
前のページへ 1|2|3       

Androidアプリの脆弱性検知技術

 さて、ここまではAPKファイルのマルウェア判定技術に関して説明してきたが、冒頭に述べた通り、マルウェアでなかったとしても、アプリに脆弱性があると、悪意のある第三者に攻撃を受ける可能性がある。従って、脆弱性の有無についても検出することが望まれる。

 ソフトウェアに関する脆弱性情報については、日本の情報処理機構(IPA)が管理している「Japan Vulnerability Note(JVN)」や、米国National Institute of Standards and Technology(NIST)が管理している「National Vulnerability Database(NVD)」にデータの問い合わせをすることで、情報を収集することができる。

 しかし残念ながら、これらの情報の大半はPCに関するものであり、Androidの脆弱性に関する情報は限られているのが現状である

 では、開発者やユーザーが自らAndroidアプリの脆弱性の有無を判断するにはどのようにすればよいのだろうか? 一般ユーザーには難しいが、ある程度コーディング知識のある人であれば、日本スマートフォンセキュリティ協会(JSSEC)が発行している「Androidアプリのセキュア設計・セキュアコーディングガイド」を利用するのは1つの手だ。上述の通り、APKファイルはある程度リバースエンジニアリングが可能であるため、そもそものソースコードが危険なコーディングをしていないかをガイドラインに沿ってチェックすることができる。また、上記以外にも同様のガイドが複数存在しているため、こうした各種のコーディングガイドを利用できるだろう。

 ということは、これらのコーディングガイドからソースコードが順守すべきルールを抽出し、それをチェックするツールを構築すれば、脆弱性チェックをある程度自動化することも十分可能である。実は筆者が所属する情報通信研究所(NICT)のチームでは、こうした考えの下、Androidアプリのリスク分析を行うツール開発も行っている。以下では筆者のチームが開発したツールを紹介する。

Androidのリスク分析試作機

 ここまでAndroidアプリのマルウェア判定や脆弱性検知に関する各種技術を紹介してきたが、これらの技術はお互いの弱点を相互補完する関係にある。そこで筆者のチームでは、上述の全ての技術を組み合わせてAPKのリスクを総合的に評価するツールを構築している。本ツールでは、Android端末にインストールされている全てのアプリケーションを監視し、その1つ1つに対してリスク評価を実施する。

 リスク評価は、「脅威」と「脆弱性」の両面から実施され、「脅威」の評価では、そのアプリがマルウェアであるか否かを3段階で評価する。ここでいう3段階評価とは、信号を意識した「赤」「黄」「無点灯」の評価で、そのアプリがほぼ確実にマルウェアであると考えられる際には「赤」を、マルウェアの可能性があると考えられる際には「黄」を、現在の評価エンジンでは特にリスクを検知できない場合は「無点灯」評価を実施する。「脆弱性評価」でも、同様の3段階で評価を実施する。

 また、「脅威」と「脆弱性」の評価エンジンは独立しており、各評価エンジンに自由に各種の分析手法を組み込むこともできる。これは、現在のリスク分析手法が将来にわたって最適なものではないと考えられることや、現時点においても1つの分析手法では完璧なリスク評価ができないことから、ツールに拡張性を持たせたいと考えてのことだ。下図は実際のアプリのスナップショットである。

図3 NICTで開発中のAndroidアプリのリスク評価システム(プロトタイプ)

 左端の図は、あるアプリのリスクの総合評価であり、「脅威」「脆弱性」それぞれの評価に基づく総合リスク評価がなされている。この「脅威」「脆弱性」に関する評価結果の信号をタップすると、それぞれの評価の裏付けとなる詳細情報が表示される(中央および右図)。

 中央の「脅威」評価では、複数の評価基準が実装されている。現時点では、「DroidRisk評価」「SVMに基づくマルウェア評価」「ブラックリストURLチェック」などを実装している。SVMに基づくマルウェア評価もしくはブラックリストURLチェックに引っ掛かった場合、脅威評価は「赤」となり、そうでなくともDroidRisk評価に引っ掛かる際には脅威評価は「黄」となる。この例では、DroidRiskとSVMの両方に引っ掛かっているため、脅威評価は「赤」となっている。右の「脆弱性」評価の方では、JVNに登録されている脆弱性情報はないものの、コーディングガイド違反をしている項目に赤信号評価がなされている。

 筆者らの組織は研究開発機関であるため、全てのコンポーネントを自前で準備するのは人的リソースの点から難しい。しかし、脅威分析アルゴリズムのような自動分析技術の活用や、JVNなどのオープンな情報を再利用、他の組織との連携によって、効果的なツールを作ろうと試みている。

 例えば、脆弱性分析については台湾の「Institute for Information Industry(III)」と連携している。彼らは台湾や日本だけでなく、主要各国のコーディングガイドを調査し、そこから6000を超えるコーディングルールを抽出している。彼らとの連携により、これらのルールに照らし合わせて脆弱性チェックを実施することも可能となった。

残された課題

 Androidアプリのリスク分析は、Androidユーザーのセキュリティを確保するために非常に重要なものであり、今後も継続的な技術革新が必要である。しかしながら、その発展に関しては、いくつか課題もある。ここでは、それらの課題について共有しよう。

誤評価への対策

 評価結果は、必ずしも正確なものでない場合も多い。現在の技術は、統計もしくは機械学習をベースにしている以上、どうしても「false-positive」あるいは「false-negative」といった誤った評価をしてしまう可能性が少なからず存在する。実験環境では問題ないとしても、評価結果をエンドユーザーに共有するとなると、こうしたリスクは見過ごせない。安全/危険なアプリのホワイト/ブラックリストを常にアップデートしていくなど、オペレーションレベルでの対策を講じた上で、統計や機械学習技術の活用を考えていく必要がある。

データセットの収集・分析の課題

 Androidアプリ技術の研究開発には、多数のデータセットが必要である。十分なデータセットがなければ、十分な統計情報や特徴情報を収集することができず、さまざまな方式の有効性を検証することができない。しかしながら、データセットの収集・分析に当たっては、著作権をはじめとする各種の障壁が存在しているため、法整備面なども考慮した対応が求められる。

何をもってマルウェアと定義するかは判断が難しい

 今回はアプリの特徴をベースにマルウェアかどうかを分析するいろいろな手法を紹介したが、「そもそも何をもってアプリをマルウェアと定義するか」により、各アルゴリズムの評価結果は異なってしまう。例えば、「VirusTotal」というオンラインのウイルス評価エンジンがあるが、そこでマルウェアとされているものの中には、広告を強制表示するいわゆる「Adware」も多く含まれている。これはマルウェアに含まれるのだろうか? 実際に評価ツールを運用する際には、各個人、組織の目的や状況に応じ、何をもってマルウェアとするのかの定義についても慎重に考える必要があるだろう。

 さて、Androidのセキュリティについて考える本連載。今回はユーザーがリスクのあるAPKファイルを利用しないための技術やツールについて紹介した。次回は、マルウェア作成者側の視点に立ち、「リパッケージ」という技術に着目したAndroidアプリの分析技術について説明する。

著者プロフィール

高橋 健志(たかはし たけし)

国立研究開発法人 情報通信研究機構

海外の大学、欧州系外資企業での勤務を経て、2009年より現職。現在はスマートフォンセキュリティやセキュリティオートメーションに関する研究開発に従事する他、国際標準化活動にも注力。標準化団体「Internet Engineering Task Force(IETF)」の「Managed Incident Lightweight Exchange (MILE)」ワーキンググループにおいてco-chairを務める。CISSP、PMP、博士(国際情報通信学)。

班 涛(ばん たお)

国立研究開発法人 情報通信研究機構

2006年より現職。機械学習の研究開発に従事する他、その適用領域としてAndroidやWindowsなどを対象としたマルウェア分析の研究開発にも注力。また、中国やニュージーランドの大学との共同研究をはじめ、国際連携活動も積極的に展開している。博士(工学)。


前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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