
ダイレクトブート機能は、暗号化されたデバイスでのAndroidシステムファイルの実行のタイムリーな準備を担当します。 Androidの以前のバージョンではFull Disc Encryption(FDE)暗号化方式、つまりデバイスのメモリ全体の暗号化が使用されていたため、ローダーはデバイスロック解除コードを知ってシステムファイルを復号化する必要がありました(Androidはデバイスロック解除コードを暗号化キーのコンポーネントとして使用します)。 このスキームでは、ユーザーはデバイスの再起動後にロック解除コードを2回入力する必要がありました。1回目はシステムファイルのロックを解除し、2回目はデバイス自体のロックを解除します。
ダイレクトブートの実装は、Android 7がFDE暗号化の使用からファイルごとの暗号化、つまり個々のファイルへの切り替えになったことに起因しています。 この暗号化スキームは、iOSで長い間使用されてきました。
内部では、ファイルベースの暗号化により、このユーザーエクスペリエンスが向上します。 この新しい暗号化スキームでは、システムストレージエリアと各ユーザープロファイルストレージエリアがすべて個別に暗号化されます。 すべてのデータが単一のユニットとして暗号化されたフルディスク暗号化とは異なり、プロファイルベースの暗号化により、システムはデバイスキーのみを使用して通常の機能状態に再起動できます。 必須アプリは、再起動後に制限された状態で実行するようにオプトインできます。ロック画面の資格情報を入力すると、これらのアプリはユーザーデータにアクセスして完全な機能を提供します。
出所
もう1つのセキュリティの改善は、MediaServerと呼ばれる悪名高いシステムサービスに関するものです。 このコンポーネントは高い権限で動作し、さまざまなマルチメディアコンテンツの再生を担当します。 この脆弱性は、ブログで書いたAndroidセキュリティアップデートで定期的にクローズされました。 オーバーフローサニタイズと呼ばれるセキュリティ機能は、libstagefrightライブラリで発見されたAndroid脆弱性のクラス全体を閉じるのに役立ちます。 このライブラリはMediaServerを使用します。 MediaServerのもう1つのセキュリティの改善は、コンポーネントのマルチメディアスタック全体の動作に関係しています。各コンポーネントは、独自のサンドボックス環境から独立しています。
まず、ClangのUndefined BehaviorSanitizerの一部である整数オーバーフローサニタイズを組み込むことにより、報告されたlibstagefrightバグの大半を占める脆弱性のクラス全体を防ぎます。 整数オーバーフローが検出されるとすぐに、攻撃を停止するためにプロセスをシャットダウンします。 次に、メディアスタックをモジュール化して、さまざまなコンポーネントを個々のサンドボックスに配置し、各サンドボックスの権限を強化して、ジョブの実行に必要な最小限の権限を付与しました。 この封じ込め手法では、スタックの多くの部分で妥協することにより、攻撃者がアクセス権を大幅に減らし、カーネルの攻撃対象領域を大幅に減らすことができます。

図 Android 7では、MediaServerサービスはさまざまなサブシステム(マルチメディアスタック)に分割され、制限された権限と制限された環境(サンドボックス)で機能します。 サービスに権利を割り当てるための新しいシステムは、必要な権利のみをアプリケーションに設定できるため、セキュリティの点ではるかに効果的であることがわかります。 新しいバージョンでは、libstagefrightライブラリは、最小限のシステム権限を持つMediaCodecServiceサービスで機能します。 したがって、Android 7のこのコンポーネントの脆弱性を利用しても、攻撃者に結果はもたらされません。
新しい検証済みブート機能は、ブートローダーの整合性を厳密に制御し、侵害された場合にデバイスがブートするのを防ぎます。 seccompとして知られるLinuxカーネルのサンドボックスメカニズムも改善されました 。 さらに、 SELinuxセキュリティサブシステムの構成設定が改善されました。 これらの対策の両方により、サンドボックスアプリケーションのセキュリティメカニズムを完全に閉じることができ、エクスプロイトによって使用される他の攻撃方法が正常に動作するリスクを減らすことができます。
Androidカーネルのセキュリティ改善については以前に書きました 。 カーネルモード仮想メモリ(カーネルDEP)のDEPの実装、カーネルモードコードのユーザー仮想メモリページへのアクセスをブロックできるSMAP型の機能が含まれます。 いくつかの新しい機能は、Attack Surface Reduction(ASR)として知られる手法に関連しており、脆弱性のクラス全体の悪用の成功を大幅に減らすことができます。 ASRの一部として。 Android 7は、デバイスのデフォルトのデバッグアクセスの削除をサポートし、アプリケーションがioctl関数を使用して特定のコマンドを使用することも禁止します。
Android 7を「無線で」アップデートするメカニズム(OTAアップデート)も改善されました。 更新のサイズがよりコンパクトになり、インストール時間が大幅に短縮されました。 インストール時間の短縮は、新しいバージョンに「アプリケーションの準備」フェーズがないためです。これは、Androidの以前のバージョンの更新プログラムのインストールプロセスで最も時間がかかりました。

安全である。