第527回:root化 とは
「root化」(ルーティング、rooting とも)とは、本来ユーザーモードでのみ使用可能なシステムを、特別な権限を持ったモードで使用できるようにしてしまうことです。携帯電話、特にスマートフォンでは、通常、ユーザーモードでしか使えず、ユーザー自身、現在使っているモードを意識することもありません。しかし、システムなどを書き換える目的で、root化するプログラムが出回っているケースがあります。
このroot化するプログラムでは、通常、「特権昇格の脆弱性」が利用されます。“脆弱性”とは、かつて本連載「ケータイ用語の基礎知識 第202回:脆弱性 とは」でご紹介したように、ソフトウェアの使用や実装の欠陥の中でもセキュリティ上の問題をはらむものを指す言葉です。「root化」は、ソフトウェアの欠陥を悪用して、実現している場合が多いのです。
■特権昇格の脆弱性とは
「特権昇格の脆弱性」とは、OSの典型的な脆弱性の1つです。サーバーやパソコン、そして携帯電話にもOSが搭載されていますが、そのOSに含まれる脆弱性の1つです。OSに存在しがちな脆弱性としては、「リモートコード実行の脆弱性」「サービス拒否の脆弱性」「情報漏洩の脆弱性」などがあります。
サーバーや、パソコンなどの場合、「リモートコード実行の脆弱性」「サービス拒否の脆弱性」のほうが、深刻度としては高いと認識されることが多く、悪用されるのも圧倒的にこれらです。これは、リモートコード実行では、悪意あるコードを標的のコンピュータへ送り込めば、リモートから自由自在にプログラムを実行することができるからです。
iOS(iPhone)やAndroidでもこれらに分類される脆弱性が発見されており、セキュリティ団体などで脆弱性と認識されているものもありますが、CVE(Common Vulnerabilities and Exposures、脆弱性識別子)として登録されていたとしても、悪用されているのは、「特権昇格の脆弱性」が多いようです。
サーバー、パソコン、スマートフォンのいずれにも共通しているのは、そのOSの「ユーザーモード」と「特権モード」の存在方法です。iOSやAndroidでは、その大元となったUNIXで特権ユーザーのことを「root」と表現するため、これらのプラットフォームでは「root」といえば特権ユーザーを意味します。
通常、ユーザーモードでは限られたことしかできません。特定のプログラムやアプリが実行できない、といったことがあります。たとえばユーザーモードでは画面表示をコントロールするビデオメモリや、システムメモリには直接アクセスできません。しかし画像を表示したい、あるいは携帯電話の時刻を修正したいというような操作ができないと困ります。そこで、通常のアプリ/プログラムで「画像を表示して」「時刻をこのように設定して」などと操作すると、OS内部では、CPUを“特権モード”に切り替えて操作し、再びユーザーモードに戻す、といったやり方があります。
OSにありがちな脆弱性の1つ「特権昇格の脆弱性」は、このOS内部で特権モードになった後、ユーザーモードに戻さず、特権モードのままにしておくような脆弱性のことです。
通常、OS開発では、こうした状態にならないようにしています。特権モードになり、それをユーザーが操作できる状況になると、「一度電源を切ると二度と起動しない」「カメラのシャッター音を強制的にオフにする」といったことができるようになってしまいます。ユーザーが何でもできる、という状況は、一見すると便利なようですが、悪用しようとしたときも何でもできる状況ですので、大変危険です。
しかし、開発メーカーが制限している状況を解除して“何でもできるようにしたい人”は存在します。そうしたユーザーの中には、脆弱性を研究し、特権モードにする方法を開発する人がいます。こうしたプログラムが「root化」用プログラムです。
このroot化プログラムには大きく2つの危険性があります。それは
- メーカーが危惧するような危険が携帯電話に起こること
- 脆弱性を利用していることで、目的外の悪用も可能であること
です。
たとえば、メーカーが危惧するような危険とは、先述の「一度電源を切ると二度と起動しない」「システムハングアップ」「シャッター消音」などです。そして後者については、「リモートコード実行の脆弱性」と組み合わせれば、特権モードにした携帯電話に対し、外部からアドレス帳へアクセスして、そこに登録されている人全員にメールを送るウイルスを仕込むこともできます。
バージョン2.2以下のAndroidをroot化するプログラム「VISIONary+」が脆弱性「Exploit/DiutesEx.A」を利用したウイルスに準じたものであるとして検出された画面。ちなみに脆弱性DiutesExはすでにAndroid 2.3で修正されており、最新のシステムアップデートをしていれば脆弱性を悪用されることはない |
そのため、一般的にウイルス対策ソフトでは、すでに知られているroot化プログラムを「特権昇格の脆弱性を利用する悪意のプログラム」としてウィルスに準じるものとして検知します。
root化プログラムで利用されている脆弱性は、既知の脆弱性として、OS開発側はそれ以降にリリースするバージョンで必ず修正します。そのため、あるバージョンで動作するroot化プログラムは、その次のバージョンでは動作しません。root化プログラムを実行した後、電源を再投入したときにroot化プログラムが常駐しようとして、デバイスリセットがかかってしまい、結果的に、その携帯電話が二度と使えない状態になることもあり得ます。
「普通はできないこと」に対して誘惑はあるでしょうが、こうした脆弱性を突くようなプログラムは使うべきではない、と肝に銘じておくべきでしょう。
2011/8/9 10:57