web-dev-qa-db-ja.com

Androidは、カスタムシステムサービスのインストールをどのように妨げますか?

セキュアブートプロセスを理解しようとしています。ファームウェアがロックされており、OSイメージの署名付きインストールのみを実行するとします。この「イメージ」は、システムに必要なすべてのバイナリの圧縮されたバンドルです。したがって、これらがインストールされると、ファイルシステムに配置されます。その後、他のバイナリをデバイスにコピーできないのはなぜですか。システムは、それが元のインストールの一部ではないことをどのように認識しますか?

Androidは、読み込まれる前に個々のバイナリの署名検証を行いますか?これがないと、どのように実行できるかわかりません。

ロード時にバイナリ署名の検証がないと仮定すると、私はこれを考えることができます-ルートファイルシステムは読み取り専用でマウントされ、SUを実行するときにSUサービスのみがrwモードで再マウントできます。また、「mount」および「su」プログラムは、(他のプログラムの中でも)インストールの一部にはなりません。これは、誰かがカスタムバイナリをルートパーティションにインストールするのを防ぐのに十分ですか?

3
user220201

古いバージョンのAndroidでは、この保護は存在せず、デバイスの多くのルートエクスプロイトがこれを有利に使用していました。新しいバージョンのAndroidは、カーネルで dm-verity を使用して、各ブロックの署名されたハッシュをチェックすることにより、システムパーティションの一部が改ざんされていないことを確認します。また、この機能をカーネルから単純に削除しないように、ブートローダーを経由してSoCに戻る信頼のチェーンがあります。