逆转三星的 H-Arx 管理程序框架 - 第 1 部分

主要观点:移动设备在深度防御和缓解方面引领安全行业,内核不可信,需将秘密和敏感数据移出内核并通过 API 保护。一些公司让更可信的虚拟机监控程序为客户内核提供完整性保护,如三星的基于虚拟化的安全。本文聚焦三星 Exynos 移动虚拟机监控程序安全平台(Real-time Kernel Protection,RKP)的实现,包括其权限模型、历史演变、加载过程、插件加载、插件与核心通信、超调用传递等方面。

关键信息

  • 移动设备的权限模型:ARMv8 架构有四个异常级别和两个安全状态,通过 TrustZone 实现安全世界和非安全世界的切换。
  • 历史演变:从 2018 年前的 vmm.elf 到 2018 - 2020 年的 uh.bin,再到 2020 年后的 H-Arx 和 Rust,虚拟机监控程序功能逐渐模块化。
  • 加载过程:SBOOT 负责初始化虚拟机监控程序,通过加载 harx.bin 和 uh.bin 插件来实现,harx.bin 加载到 0xc0000000 运行在 EL2,uh.bin 加载到 0xc1400000 运行在 EL2。
  • 插件与核心通信:插件通过 entrypoint 与 H-Arx 核心交互,核心通过回调数组提供插件 API,插件可调用这些 API 与核心通信。
  • 超调用传递:H-Arx 核心有 HVC 处理程序,uh.bin 的 plugin_api_register_hvc_handler()回调用于通知 RKP 处理超调用,uh.bin 存储 EL2 系统寄存器并通过表查找调用应用特定的处理程序。

重要细节

  • 权限模型中各异常级别和安全状态的特点及相互关系。
  • 不同版本虚拟机监控程序的结构变化,如 uh.bin 的格式和 header 信息。
  • 加载过程中 SBOOT 的相关函数及字符串,如 load_init_harx()函数。
  • 插件加载过程中 uh.bin 和 harx.bin 的格式解析,包括 header 结构和各段信息。
  • 插件与核心通信中回调数组的内容及各 API 函数的作用。
  • 超调用传递中 uh.bin 的 entrypoint 及相关函数的使用,以及不同保护模块的命令和功能。

参考资料:包括多个相关博客文章和代码仓库链接。

阅读 8
0 条评论