バージョン5.0未満のAndroidにシステム権限で任意のコードを実行できる脆弱性

バージョン5.0未満のAndroidに、細工したデータを受け渡すことでシステムサービスプロセス上で任意のコードを実行させられるという脆弱性が存在することが明らかになった。
有害アプリにこの脆弱性を利用されれば、確認画面を表示することなく任意のアプリパッケージをインストールするなど、一般アプリの権限では実行できない処理を実行されてしまう恐れがある。
脆弱性は6月にAndroidの開発元に報告されており、Android 5.0では修正済みだが、4.x以前のAndroidでは今のところ修正されていないとのこと。Androidの開発元で修正されたとしても、端末へのアップデートが提供されるまでには時間がかかったり、アップデートが提供されない可能性もある。
脆弱性が未修正の端末では、有害アプリをインストールしてしまわないように、怪しいアプリのインストールは控えたり、セキュリティソフトでスキャンするなど、徹底した対策を心掛けよう。



001

この脆弱性は、パーミッション(権限)を一切与えられていないアプリでも悪用できるので注意が必要だ。セキュリティアプリでスキャンするなどして、十分に安全が確認されてからインストールや起動を行うようにしよう。


002

発見者によるメーリングリストへの投稿で、脆弱性の詳細が説明されている。
それによると、単純なバイト列の形に「シリアライズ」して受け渡されたデータを様々な種類のオブジェクト(構造化されたデータ)に復元する「ObjectInputStream」という機能が、シリアライズ可能な種類かどうかを確認せず、送り手が指定した通りのオブジェクトを生成してしまうのが大本の原因のようだ。
生成されたデータは正しく処理できずに破棄されるが、その際に種類ごとに定められた「デストラクタ」処理が実行される。
「android.os.BinderProxy」という種類のオブジェクトのデストラクタは、オブジェクトのプロパティとして保持されている数値をメモリ上のアドレスと見なして、そこからたどれるアドレスに格納されたデータをプログラムとして実行するようになっている。
システムプロセス上の特定のアドレスに任意のデータを書き込む方法があれば、書き込んだデータのアドレスをプロパティにセットしたBinderProxyをシリアライズして受け渡すことで、書き込んだデータ内のコードを実行させられるのだ。

Full Disclosure: CVE-2014-7911: Android <5.0 Privilege Escalation using ObjectInputStream

Reddit.comのコメント欄での発見者を交えた議論

関連記事

2014年11月21日09時20分 公開 | カテゴリー: セキュリティ | キーワード:, | Short URL
このエントリーをはてなブックマークに追加

最新記事