《Android安全攻防指南》第2章 Android的安全设计与架构 (3)

《Android安全攻防指南》

(2.4-2.5节)

在仔细观察了Android的设计与架构之后,我们已经清楚地了解到,Android操作系统是一种非常复杂的系统。设计者坚持了最低权限原则,也就是说任何特定组件都应该只能访问它真正所需要访问的东西。在本书中,你将看到他们使用这一原则的大量证据。不过,这虽然有助于提高安全性,却也增加了复杂性。

进程隔离和减少特权往往是安全系统设计中的基石。无论对于开发者还是攻击者,这些技术的复杂性也让系统都变得更加复杂,从而增加两方的开发成本。当攻击者在打磨他的攻击工具时,他必须花时间去充分了解问题的复杂性。对于像Android这样一个系统,单单攻击一个安全漏洞,可能不足以获取到系统的完全控制权。攻击者可能需要利用多个安全漏洞才能达到目的。总之,要成功地攻击一个复杂系统,需要一个复杂的漏洞利用。

一个能够很好地说明这一点的真实例子是,用于root HTC J Butterfly手机的“diaggetroot”漏洞利用。为了获取root访问控制权,它利用了多个互为补充的安全问题。这个特殊的漏洞利用会在第3章中详细讨论。

本章概述了Android安全设计和架构。我们引入了Android沙箱及Android使用的权限模型,包括Android对Unix系统UID/GID映射关系的特殊实现AID,以及在整个系统中实施的限制和权能。

我们也深入介绍了Android的逻辑层次,包括应用层、Android框架层、DalvikVM、用户空间原生代码和Linux内核。对于每个层次,我们都讨论了主要组件,特别是那些与安全相关的组件。我们强调了Android开发者对Linux内核所作出的重要添加与修改。

本章对Android总体设计较高层次上的介绍将有助于理解后续章节,这些章节将进一步深入到本章介绍的层次和组件中。

下一章将解释如何完全控制Android设备的方法及其理由。我们将讨论几种通用的方法,并介绍一些依赖于特定安全漏洞的已公开技术。