Android 4.3 で強化されたセキュリティ機能

Android のすべてのリリースで、ユーザーを保護するためにさまざまなセキュリティ機能が強化されています。Android 4.3 では、次のようなセキュリティ機能が強化されました。

  • SELinux による Android サンドボックスの強化。このリリースでは、Linux カーネルの SELinux 強制アクセス制御(MAC)システムを使用して Android サンドボックスが強化されています。SELinux の強化はユーザーとデベロッパーに認識されることなく、既存のアプリとの互換性を維持しながら、既存の Android セキュリティ モデルに堅牢性を追加します。互換性を確保するため、このリリースでは SELinux の permissive モードでの使用が可能です。このモードではポリシー違反がログに記録されますが、アプリが停止したりシステムの動作に影響したりすることはありません。
  • setuid/setguid プログラムの削除。Android システム ファイルにファイルシステム機能のサポートを追加して、すべての setuid/setguid プログラムを削除しました。これにより、ルートの攻撃対象領域が減少し、潜在的なセキュリティの脆弱性が生じる可能性が低くなります。
  • ADB 認証。Android 4.2.2 以降では、ADB への接続は RSA 鍵ペアで認証されます。これにより、攻撃者がデバイスに物理的にアクセスできる ADB の不正使用が防止できます。
  • Android アプリによる setuid の制限zygote が生成したプロセスで使用する nosuid が /system パーティションにマウントされたことで、Android アプリで setuid プログラムを実行できなくなりました。これにより、ルートの攻撃対象領域が減少し、潜在的なセキュリティの脆弱性が生じる可能性が低くなります。
  • 機能の境界。Android zygote と ADB では、アプリの実行前に prctl(PR_CAPBSET_DROP)を使用して不要な機能が削除されるようになりました。これにより、シェルから起動された Android アプリは特権を取得することができません。
  • AndroidKeyStore プロバイダ。アプリで専用キーを作成できるキーストア プロバイダが Android に追加されました。これにより、他のアプリで使用できない秘密鍵を作成または保存するための API がアプリに提供されます。
  • KeyChain isBoundKeyAlgorithm。Keychain API で、システム全体で使用する鍵がデバイスのハードウェア ルート オブ トラストにバインドされていることをアプリが確認できるメソッド(isBoundKeyType)が提供されるようになりました。これにより、ルートが不正使用されてもデバイスからエクスポートできない秘密鍵を作成または保存できます。
  • NO_NEW_PRIVS。Android zygote は、prctl(PR_SET_NO_NEW_PRIVS)を使用して、アプリケーション コードの実行前に新しい権限の追加をブロックするようになりました。これにより、Android アプリは execve を介して権限を昇格する操作を実行できなくなります(Linux カーネルのバージョン 3.5 以上が必要です)。
  • FORTIFY_SOURCE の機能強化。Android x86 と MIPS で FORTIFY_SOURCE が有効化され、strchr()、strrchr()、strlen()、umask() 呼び出しが強化されました。これにより、潜在的なメモリ破損の脆弱性や終端文字のない文字列定数を検出できます。
  • 再配置の保護。静的にリンクされた実行可能ファイルの読み取り専用再配置(relro)が有効化され、Android コード内のテキストの再配置がすべて削除されました。これにより、潜在的なメモリ破損の脆弱性に対する多重防御が実現します。
  • EntropyMixer の改善。EntropyMixer で、定期的なミキシングに加えて、シャットダウンまたは再起動時にエントロピーが書き込まれるようになりました。これにより、デバイスの電源投入時に生成されるすべてのエントロピーを保持できるため、プロビジョニング後すぐに再起動するデバイスで特に役立ちます。
  • セキュリティに関する修正。Android 4.3 では、Android 固有の脆弱性に対する修正も行われています。これらの脆弱性に関する情報は、オープン ハンドセット アライアンスのメンバーに提供されています。修正プログラムは Android オープンソース プロジェクトで入手できます。また、Android の以前のバージョンがインストールされている一部のデバイスでも、セキュリティ強化のために修正プログラムが適用されている場合があります。