Android 4.3 中的安全增強功能

每個 Android 版本都包含數十項安全增強功能以保護用戶。以下是 Android 4.3 中提供的一些安全增強功能:

  • 使用 SELinux 增強的 Android 沙箱。此版本使用 Linux 內核中的 SELinux 強制訪問控制系統 (MAC) 增強了 Android 沙箱。 SELinux 加固對用戶和開發人員來說是不可見的,它為現有的 Android 安全模型增加了健壯性,同時保持與現有應用程序的兼容性。為確保持續兼容,此版本允許在許可模式下使用 SELinux。此模式會記錄任何違反策略的行為,但不會破壞應用程序或影響系統行為。
  • 沒有 setuid/setgid 程序。為 Android 系統文件添加了對文件系統功能的支持,並刪除了所有 setuid/setguid 程序。這減少了根攻擊面和潛在安全漏洞的可能性。
  • 亞行身份驗證。從 Android 4.2.2 開始,與 ADB 的連接使用 RSA 密鑰對進行身份驗證。這可以防止在攻擊者可以物理訪問設備的情況下未經授權使用 ADB。
  • 限制 Android 應用程序的 Setuid。 /system 分區現在為 zygote 產生的進程掛載 nosuid,防止 Android 應用程序執行 setuid 程序。這減少了根攻擊面和潛在安全漏洞的可能性。
  • 能力邊界。 Android zygote 和 ADB 現在使用 prctl(PR_CAPBSET_DROP) 在執行應用程序之前刪除不必要的功能。這可以防止 Android 應用程序和從 shell 啟動的應用程序獲取特權功能。
  • AndroidKeyStore 提供程序。 Android 現在有一個密鑰庫提供程序,允許應用程序創建專用密鑰。這為應用程序提供了一個 API 來創建或存儲其他應用程序無法使用的私鑰。
  • KeyChain 是BoundKey 算法。 Keychain API 現在提供了一種方法 (isBoundKeyType),允許應用程序確認系統範圍的密鑰已綁定到設備的硬件信任根。這提供了一個創建或存儲無法從設備導出的私鑰的地方,即使是在 root 入侵的情況下。
  • 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 現在除了定期混合外,還會在關機/重啟時寫入熵。這允許保留設備通電時生成的所有熵,並且對於在配置後立即重新啟動的設備特別有用。
  • 安全修復。 Android 4.3 還包括針對 Android 特定漏洞的修復。有關這些漏洞的信息已提供給開放手機聯盟成員,Android 開源項目中提供了修復程序。為提高安全性,一些裝有較早版本 Android 的設備也可能包含這些修復程序。