Xperia Z4やZ5のroot化が困難な原因、dm-verityとは?

この記事の賞味期限は切れています。掲載内容や情報が古い可能性があります。

dm-verity hash table

Xperiaでは、systemパーティションを書き換えようと
すると再起動してしまう、というroot化する人にとっては
面倒なプログラム、「ric」が存在することが
acro HDやGXの頃から知られていましたが、
Z3+/Z4以降ではさらに強力となりました。

これまでricはいたちごっこのように無効化する方法が
発見されては対策版のricに置き換えられて…といったことが
続いていたのですが、Z3+/Z4以降では、Googleが
導入した「dm-verity」と呼ばれるものと二段構えになります。

これによって、Xperia Z5でのroot化が困難となっています。


dm-verityとは?

dm-verityの技術的な情報は、Googleが公開しています。

dm-verity hash table

dm-verityは、GoogleがAndroid 4.4の頃から準備していた
Verified Bootという仕組みに使われるもので、
パーティションの4kブロック毎のハッシュから
ハッシュツリーを生成し、最終的にできる「root hash」と
照らし合わせてsystemの改変を検出・警告する動きをします。

Nexusシリーズではsystemの改変が検出されたときは
警告画面が出るだけで無視することも出来るようですが、
Sonyは警告画面を出さず、ロゴのあとすぐ再起動する
ブートループになるようにしています。

Xperia Z5などのroot化への影響

何らかの脆弱性を突かれてsystemがウイルスなどに
感染してしまった…という時でも、ロゴから先に進まない
ためウイルスも動作できない、というパターンの
ほうが多いはずなので、一般的な使い方を
している人にはかなり安心なセキュリティ機能となっています。

…が、root化するような逸般人にはかなり厄介です。
これまで強化が続けられてきたricは「systemを書き込み可能な
状態にするのを検出して強制再起動する」という仕組みだったので
CWM、TWRPといったリカバリから書き換えてしまえば
ricを無効化しなくてもそのまま使えるものでした。
これがdm-verityが導入されたことにより、

  1. systemを書き込み可能にマウントすると再起動する
  2. ricを無効化する(=systemを改変する)と起動しなくなる

という二段構えになったため、これまで以上に
Xperia Z4やZ5といった最新機種では、
Bootloader Lockedでのroot化が難しくなっています。

対策は?

dm-verity

Bootloader Unlockedな端末では、
CONFIG_DM_VERITYを無効にしたカーネルを
ビルドして焼くことでdm-verityを無効化できますが、
Lockedな端末では今のところ回避策はありません。

dm-verityで使われるキーはOEMにより署名され、
ユーザーが用意したキーで置き換えることが
できるオプションが用意されているようですが、
Lockedでは動作しないはずです。
また、adb disable-verityコマンドで無効化することも
出来ますが、userdebugビルドでしか動作せず、
FTFが流出でもしない限りuserdebugビルドを
Lockedでは焼けないので、使えません。

ちなみに、dm-verityは現在Z3/Z3C向けに公式テストが実施されている
Android Marshmallow Concept ROMでも導入されています。
はたして既存端末にも導入されるのでしょうか。

dm-verityは今後のAndroid端末では広く採用される
はずで、一度破られれば多くの端末で
一気にroot化が進むことになるため、
ハッカーの方々にはぜひとも解析を頑張ってもらいたいものです。
(セキュリティ的には破られないほうが安心ですが…)

なお、Androidで暗号化設定する方法はPixelPrivacyで解説されています。

Portions of this page are modifications based on work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 2.5 Attribution License.

はてブ Pocket Mastodon タイトルとURLをコピー
カテゴリ: ,

技適の無い機器の使用は自己責任です。
中国版デバイスは日本語に対応していないものが多いため、ADBコマンドでの日本語化が必要です。
root化済み・非rootそれぞれのやり方はこちらの記事を参考にしてください。