Androidアプリをめぐるセキュリティ対策技術について解説する本連載。第3回は、不正アプリが生み出される仕組みとそれを妨害するための対策について解説する。
Androidのセキュリティ対策技術を紹介する本連載。第2回では、主に「アプリがマルウェアでないか」「アプリに脆弱(ぜいじゃく)性が存在しないか」を判定する技術について解説した。
第3回となる今回は、前回と同様に「アプリ」のセキュリティに着目し、「リパッケージ」によって正規のアプリになりすましたマルウェアが作成される危険性や、リパッケージの自動化によりマルウェアが大量生産されている現状を説明。リパッケージ対策の現状および今後について解説する。
「リパッケージ」とは、リバースエンジニアリング技術を用いて、パッケージ済みのアプリを改ざんし、再パッケージ化する行為である。
前回も触れた通り、Androidはそのオープンな仕様や、中間コードと仮想マシンによる処理系といったさまざまな要因から、アプリのリバースエンジニアリングに対する技術的なハードルが低いことが知られている。そのため、多くのアプリが第三者による不正な改ざんの脅威に晒されている。
アプリ改ざんの被害の中でも、特に危険性が高いのが「リパッケージによって作成される“正規アプリのふりをした”マルウェア」である。攻撃者は、マーケットから正規のアプリをダウンロードし、リパッケージによって悪性の機能を持ったコードを埋め込むことで、「ユーザーから見ると元の正規アプリのように動作するが、裏で悪意のある活動を行うマルウェア」を作成することができる(図1)。
攻撃者は多くの場合、人気の高い正規アプリに対してリパッケージを行うため、ユーザーの感染数が増えやすいという問題がある。また、リパッケージにより作成されたマルウェアは見かけ上、元のアプリと同じように動作するため、ユーザーが感染に気付きにくく、結果として端末内に長期的に潜伏する可能性が高い。
リパッケージマルウェアによる被害は、2011年始めごろから継続的に報告されている。例えば、Android史上初のボットタイプのマルウェアとして知られる「Geinimi」や、一時期公式マーケット上で公開されていた「DroidDream」は、リパッケージによって作成されたマルウェアであることが分かっている。そして近年でも、攻撃者がリパッケージによってマルウェア亜種を作成していることが、「Symantec 2015 年インターネットセキュリティ脅威レポート 第 20号」の中で明らかにされている。
このように、リパッケージは攻撃者にとってポピュラーなマルウェア作成手段の1つであるが、近年ではその手法の高度化も進んでおり、「リパッケージ処理の自動化によってマルウェアを機械的に生成する」といった事例も確認されている。
「Dendroid」は、Androidを標的としたRAT(Remote Administration Tool)タイプのマルウェアだが、「Binder」と呼ばれる自動リパッケージを行うツールが含まれていたことが知られている。このBinderには専用のGUIが付属しており、ごく簡単な操作で、任意のアプリに対して遠隔操作機能を持った悪性コードを埋め込むことが可能となる。
別の事例として、中国のサードパーティマーケットで「Android.Troj.mdk」が拡散した際には、7000種類以上の正規アプリに対してリパッケージが行われたことが報告されている。被害に遭った正規アプリの数から考えて、攻撃者が1つ1つのアプリに対して手動でリパッケージ処理を行ったとは考えづらい。従って、これらのマルウェアは自動化されたリパッケージによって大量生産されたものと思われる。
以上のような事例から、攻撃者にとって、リパッケージ処理の自動化は容易なものとなっており、昨今のAndroidマルウェア亜種の爆発的増加の原因となっていることがうかがえる。
第1回でも述べた通り、リパッケージへの対策を考える上では、「ユーザー」や「アプリ」「マーケット」をはじめとするさまざまな視点からの検討が必要であるが、今回は特に、「アプリ開発者の視点」から、リパッケージ対策について考えたい。
リパッケージ対策を考える上で特に意識しておきたいのが、攻撃者がアプリの改ざんを行うときに掛かる「コスト」である。一般的に、高度な技術力を持った攻撃者が高いコストを掛けてリパッケージを行った場合、前述したようなAndroidアプリのリバースエンジニアリングの容易さや、現在のアプリマーケットのエコシステムの関係上、不正を完全に防ぐのは難しい。
しかし、攻撃者によるリパッケージのコストを増加させることができれば、いわゆる「カジュアルハック」や、前述したような「自動化されたリパッケージによるマルウェア大量生産」の被害を軽減することは可能である。では、リパッケージのコストを増加させるためには、どのような手段が考えられるだろうか?
Copyright © ITmedia, Inc. All Rights Reserved.