Androidアプリの「マルウェア判定」「脆弱性検知」技術:Androidセキュリティ技術の最前線(2)(1/3 ページ)
Android端末のセキュリティ対策技術について解説する本連載。第2回はアプリの配布パッケージの概要と、アプリが「マルウェアでないか」および「脆弱性がないか」を判定する技術を紹介する。
本連載では、Android端末のセキュリティ対策技術の現状について紹介している。前回はAndroid端末を取り巻く環境や、「アプリ」「マーケット」「Android OS」「ユーザー」の各エンティティをめぐる対策について概観した。
第2回となる今回は、特にAndroidの「アプリ」に着目し、Androidアプリのリスクを評価する技術について紹介する。前回説明したように、ユーザーが入手する「APKファイル」(後述)の中には、たとえ正規マーケットから入手しても、マルウェアが混入する可能性がある。
また、マルウェアでなかったとしても、アプリに脆弱(ぜいじゃく)性があると、悪意のある第三者に攻撃を受ける可能性がある。ユーザーのリスクを軽減するためには、Androidのマルウェア判定および脆弱性検知を実施することが必要だ。そこで、これらの技術の説明に入る前に、まずはAndroidアプリの構造について振り返ることから始めよう。
Androidアプリの構造
Androidアプリは「Android Application Package(APK)」というファイル形式で流通している。このファイルの中には、下図のようにさまざまなファイルがまとめられている。APKファイルは実際には単なるzipファイルであるため、unzipコマンドなどを用いて解凍すると、その中のファイル群を得ることができる。このファイル群の中には、後述する「AndroidManifest.xml」や「classes.dex」、そして署名やレイアウトに関するファイルなどが含まれている。
これらのファイルを分析することにより、Androidアプリの脅威と脆弱性を評価することができる。各ファイルの詳しい説明については解説記事なども多数存在するため、ここでは全てのファイルには触れず、特にリスク分析に利用されることの多いAndroidManifest.xmlとclasses.dexという2つのファイルの概略を紹介しよう。
APKファイルの概要を説明する「AndroidManifest.xml」
AndroidManifest.xmlは、Androidアプリであれば必ず存在するファイルである。このファイルには、アプリに関するさまざまな情報がXML形式で記述されている。このXMLの中には、そのアプリが動作するAndroid OSのバージョンの指定情報や、アプリが利用を要求するパーミッションの一覧などが書かれている。
以下の表に、このXMLに含まれるタグをいくつか紹介する。なお、このXMLファイルはバイナリ形式に変換されているため、そのままではテキスト情報として読むことができない。テキスト情報が必要な際には、後述する「Apktool」 などの変換ツールを利用するか、もしくは「Android SDK」 に含まれる「aapt」などのツールを利用するとよい。
また、AndroidのOSは常に進化を続けており、利用できるAPIやパーミッションの種類も常に変化している。従ってリスク分析の際には、uses-sdkタグを参照し、サポートしているAPIレベルに応じたリスク分析を実施する必要がある。
主なタグ名 | 内容 |
---|---|
application | アイコンやラベル、画面テーマなどの、アプリケーション全体の設定 |
uses-sdk | アプリの動作をサポートするAPIレベルの範囲を指定 |
uses-permission | アプリが要求するパーミッションを指定 |
uses-library | アプリが利用するライブラリを指定 |
Androidアプリケーションの中間コード「classes.dex」
AndroidのアプリはJavaで開発されており、それが中間コードに変換されたものがclasses.dexである。Javaの中間コードには、リバースエンジニアリングとの相性が非常に良いという特徴がある。そのため、ソースコードを持っていなくとも、この中間コードからリバースエンジニアリングを行うことにより、コード解析を実施することができる。
分析に便利なツール群も存在
前述の通りAPKファイルは単なるzipファイルであるものの、その中のファイルはバイナリ形式で保存されているため、そのままでは分析できない。ただし現在では、分析しやすい形にファイルを変換して一括してくれるさまざまなツールが存在している。
例えば、先にも触れた「Apktool」である。apktoolを使用すると、AndroidManifest.xmlをテキスト化してくれたり、中間コードをリバースエンジニアリングしたsmaliファイルを生成してくれたりする。また、「dex2jar」を利用すればclasses.dexファイルをjarファイルに変換することも可能だ。その他にも、APKファイルの分析に必要なツールは容易に入手可能になっている。
Copyright © ITmedia, Inc. All Rights Reserved.