2012年10月21日

Androidのroot化必須アプリへのリンク・パストラバーサル攻撃

TwitterのTLに懐かし(?)のパストラバーサル攻撃の話が流れていたのでAndroidについて考えてみた。
(たどっても見つからなかったので昨日以前ぽい……)

WindowsNT系を含むPOSIX互換OSとそのファイルシステムでは、相対パスやシンボリックを悪用することで、特権(root)を持つプロセスに意図しないファイル操作を行わせる、という攻撃が昔から存在する。
たとえば、root権を持ったプロセスがシステムのファイルをバックアップ、あるいは展開する、といったサーバー保守作業の過程で、一般ユーザー(例えば共用Webサーバのをレンタルしているユーザ)がシンボリックリンクをタイミングよく作成すれば、他のユーザーやシステムファイルを抜き取ったり、上書きできる可能性がある。
こういった攻撃は古くから知られていて、TarのようなUnixの基盤的なソフトウェアでは基本的にrealpathを利用したりシンボリックリンクを識別して動作を変えるよう対策が行われている。


Androidにはsuからroot権を取得してファイル操作できるアプリには各種あるが、もしrootアクセス時に正しくシンボリックリンクやパスを扱っていないと、この攻撃に脆弱になる。

たとえば、各々のアプリが個別に持っているストレージ(/data/data/アプリ名/など)はPOSIX互換ファイルシステムに置かれるため、サンドボックスの外、たとえばシステムファイルや電話帳ファイルへのリンクを作っておき、アプリバックアップ用のアプリがroot権を取得しバックアップ操作してSDカードに保存されたタイミングで、誰でもアクセス可能なSDカードから情報を搾取することが考えられる。
逆に、/systemなどへのシンボリックリンクを作っておき、バックアップアプリが不用意に復元操作すれば、システムが破壊される恐れがある。

Androidの各アプリサンドボックスはLinuxのユーザーIDを利用しているので、通常の利用ではシンボリックリンクをどう作ろうとリンク先のアクセス権がないので問題は無いようだ。
しかし、自分のデータ領域にアクセスしにくるroot取得アプリが動いている事がわかれば、意図的にroot必須アプリを悪用することが出来るかもしれない。
DRM目的でroot取得可能かどうかやインストール済みアプリをチェックしているアプリは既に存在するので、それらの一つが悪意を持った場合、suにアクセスすること無く特権が必要なデータにアクセスしうる事になる。

自分はJavaがほとんど書けず実機検証できていないが、AndroidAPIや関連情報を見る限り実行は可能に見える。
root化できるユーザはSuperUserのダイアログをチェックできるが、この攻撃にsuへのアクセスとroot権は必要なく、ユーザーが脆弱性に気づくことは難しい。アプリ開発者が気をつけるしか無い。

Link2SDのようにLinuxのファイルシステム特性を理解してアプリ開発している人と利用者は当然考慮しているだろうが、root必須アプリにはよくよく注意したほうがよさそうだ。
(TiraniumBuckupはtar保存だったので、Tarが古かったりオプションを間違えてなければ致命的なことにはならないはず。まぁそもそもデフォルトではSDカードに固定ファイル名でバックアップするのでデータ抜き放題だけど。)
posted by ko-zu at 01:32| Comment(0) | TrackBack(0) | Android | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。