关闭 HAL

发布于 2024-10-31 12:48:39 字数 2893 浏览 4 评论 0

更新对于安全性至关重要,但对于设备制造商而言,这些更新将是困难和昂贵的。 Project Treble 通过将底层供应商实现与核心 Android 框架分开来更轻松地进行更新。该模块化允许平台和供应商提供的组件彼此独立地更新。虽然更容易和更快速的更新是令人敬畏,但 Treble 的增加的模块化设计也旨在提高安全性。

Isolating HALs

一个 硬件抽象层 (HAL)提供设备无关的代码和设备特定的硬件实现之间的接口。HAL 通常打包为共享库,直接加载到需要硬件交互的进程中。安全边界在流程级执行。因此,将 HAL 加载到进程中意味着 HAL 正在与加载进程相同的安全上下文中运行。

在进程中运行 HAL 的传统方法意味着该进程需要每个进程中的 HAL 所需的所有权限,包括直接访问内核驱动程序。同样,进程中的所有 HAL 都可以访问与进程其余部分相同的一组权限,包括其他进程中的 HAL 所需的权限。这导致过度特权进程和 HAL 可以访问他们不应该拥有的权限和硬件。

img
图 1 在一个过程中多个 HAL 的传统方法。

将 HAL 移动到自己的进程中更好地遵守 最低权限的原则 。这提供了两个无疑的优势:

  1. 每个 HAL 都运行在自己的沙箱中,并允许访问其所控制的硬件驱动程序,并且授予进程的权限仅限于执行其所需的权限。
  2. 类似地,该程序失去对硬件驱动程序的访问以及 HAL 所需的其他权限和功能。

img
图 2 .每个 HAL 都在自己的进程中运行。

将 HAL 移植到自己的进程中对于安全性来说是非常好的,但是以客户端进程和 HAL 之间的 IPC 开销增加为代价。 改进粘合剂驱动程序 使得 HAL 和客户端之间的 IPC 成为可行。将 scatter-gather 引入到 binder 中,通过消除对序列化/反序列化步骤的需求,减少对三倍数据执行的复制操作的数量变成一倍,从而提高了每个事务的性能。Android O 还引入了 binder 域,为供应商和平台组件提供单独的通信流。应用程序和 Android 框架继续使用/ dev / binder,但是供应商提供的组件现在使用/ dev / vndbinder。平台和供应商组件之间的通信必须使用/ dev / hwbinder。

案例研究:系统服务器

核心 Android 操作系统提供给应用程序的许多服务都由系统服务器提供。随着 Android 的发展,系统服务器的职责和权限也一样,使其成为 攻击者 的有吸引力的目标。作为 Treble 项目的一部分,大约 20 个 HAL 被移出系统服务器,包括用于传感器,GPS,指纹,Wi-Fi 等的 HAL。以前,任何这些 HAL 中的妥协将获得特权的系统权限,但在 Android O 中,权限仅限于特定 HAL 所需的子集。

案例研究:媒体框架

继 Android O 之后继续努力 加强 Android Nougat 的媒体堆栈 。在 Nougat 中,mediaserver 分为多个组件,以更好地遵守最低权限的原则,音频硬件访问仅限于音频服务器,摄像机硬件访问仅限于摄像机等上。在 Android O 中,大多数直接硬件访问已经从媒体框架中完全删除。例如,音频,照相机和 DRM 的 HAL 已分别从音响服务器,摄像机和 drmserver 移出。

减少和隔离内核的攻击面

img
Linux 内核是 Android 上安全模型的主要执行者。逃脱沙箱机制的尝试往往涉及攻击内核。 对内核漏洞的 分析 ,Android 表明,它们绝大多数发生在硬件驱动程序中并达到。

特权系统服务器和媒体框架很重要,因为它们与安装的应用程序直接交互。删除直接访问硬件驱动程序会 d 难以导致 bug 出现,并为 Android 的安全模型添加了另一层防御。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

千纸鹤

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

linfzu01

文章 0 评论 0

可遇━不可求

文章 0 评论 0

枕梦

文章 0 评论 0

qq_3LFa8Q

文章 0 评论 0

JP

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文