論文のまとめ
背景
Android OSではAndroid Marketからダウンロードした
アプリケーションをインストールする際アプリケーションの実行権限を承認する(パーミッションの許可)
ことでアプリケーションインストールの可否を行うが、
一度アプリケーションをインストールするとその後の挙動についてユーザは知ることができない。
そのため、内部でどのような動作をしているかわからず管理者権限奪取や個人情報の流出が起こりうる。
これに対し本論文では、実行中アプリケーションの情報アクセス、機能をフックするようAndroid Frameworkを書き換えることでリアルタイムにその挙動を制御できるようにしようとする。
何でこんなことが起きるのか(私の憶測です。)
学部生なので当たり前のことも書きます。なぜiOSではあまり問題にならず、Android OSでは問題がでるのか?
原因として
- AppStoreに比べ、Google Playは審査が甘い。またAndroidの場合公式ストア以外のストア、WEBサイトからのアプリの入手が容易である。
- Android OSはLinuxカーネルを利用し、しかもオープンソースのため脆弱性の所在がすぐ分かる。
という二点が考えられる。
1.
に関してだが、AppleのiOSは原則としてAppStoreのみからアプリケーションのインストールが可能である。
そしてその審査は結構厳しい。友人が作ったアプリの審査が通らなくてひぃひぃいっているのを聞いたこともある。
それに対しAndroidでは、公式ストア以外に、au、Amazonなどベンダや企業などがストアを開きアプリの公開を行っている。
さらには、個人でさえもWEBサイトでアプリを公開しユーザはダウンロードすることができる。
これは明らかに危険でしょう。
Androidは脆弱性報告すくないけどアプリが放任なのでマルウェア沢山、iOSは脆弱性報告多いけどAppStoreが頑張って食い止めている、という状態でしょう。
課題
現在のパーミッション承認にどのような課題があるのか??
1.パーミッション全部認証しないとインスコできない
→承認したくない部分もしないといけない。
2.認証するパーミッションがいつどこにどのように用いられているかユーザは知ることができない。
→個人情報の不正送信、管理者権限の奪取が行われていてもそんなの分からない!!
3.パーミッションの粒度が大きい(一つの承認がカバーする範囲がでかすぎる)。
→パーミッション単位の中でも認証したいものとしたくないものがあるよね?
というあたりです。
Apex[6],Saint[7],SEAF[8]ではインストール後のパーミッションの変更を行えるようにすることで
1.の解決をしようとしたが、結局2.,3.(個人的には2.が大きいような気がする)の課題の解決はされていない。
じゃあ、どうするか?(提案手法です。)
最初に述べましたが、簡単にいうと許可したパーミッションの部分をアプリケーションが実行するときには、
確認ダイアログを出しましょう。
というあたりです。
最終更新:2013年06月25日 19:47