Android Security | 安全综述

174 阅读1分钟

在 Android 系统中,有多种安全机制来保证系统的安全。从 Framework,到 Kernel 再到硬件。 硬件层安全机制如 TZ(TrustZone) 这里不过多讨论。这里我们暂时只讨论操作系统层面的 Android 机制。

Framework 层

  1. Android 的虚拟机隔离,每一个 App进程都运行在独立的进程空间(虚拟地址),所以内存之间相互隔离
  2. Android 的 Permission 机制,在 getService 的时候,系统会检查你这个进程是否有这个对应的 permission,如果有些 permission 涉及到系统调用,那么本质上还是依赖了 Kernel 的 UGO 权限机制。
  3. Linker Namespace,通过 Linker Namespace 限制普通应用对系统的一些私有的库的调用。

Kernel 层

  1. UGO(User、Group and Others) 权限模型, Android 基于 Linux 操作系统,对于 Kernel 来说,Android 程序也是一个单独的进程,所以也能利用 Linux 上的 UID/GID 来实现安全隔离。比如,每一个 App 进程,都会在 /data/data/ 目录下有一个单独的工作目录,并且只有自己和 SharedUserID 的 App 进程才有权限访问,这些也是基于 UGO 权限机制。
  2. SEAndroid (Security-Enhanced Android)。SEAndroid 是 Android 操作系统根据自身情况扩展了 Security-Enhanced Linux,相比于 UGO 权限模型,SEAndroid 粒度更细,更安全,即使设备在 root 的情况下,依旧能有效的限制非法访问。

举个例子,比如在进程中,使用 open 来打开一个文件,那么它至少会经过 UGO 权限模型和 SEAndroid 两层的检查

Untitled-2025-04-23-1018.png

后面会介绍的内容:

  1. Android 的 Permission 机制
  2. Android 的 Linked Namespace
  3. UGO 权限模型
  4. SEAndroid