互联网Android系统中的五大类风险

米花 发表 于:7年前 浏览量:187

以下内容节选自《Android安全机制解析与应用实践》一书

没有一个软件系统是绝对安全的,总体而言,Android系统中的风险可概括为五大类。根据以下建议对每种风险做好防范工作。


第一类风险是滥用应用程序权限。关于这类风险有如下防范策略建议。

  • 应用程序认证

认证是防范恶意程序的有效手段之一。在理想状态下,一个应用程序在认证之前必须经过完整的测试与代码审查,确认其权限使用的合理性,这自然对恶意软件起到了有力的防范作用。但是,认证的费用高昂,程序复杂,并不具备广泛的实用性。

  • 选择使用应用程序权限

如 果能够在安装阶段,确认某一应用程序仅使用必需的最小权限,也就是遵循最小权限原则,则受到恶意软件攻击的可能性必将大大降低!对于有经验的用户这也许是 一种选择,但对于广大的普通用户,恐怕没人懂得如何验证应用程序要求的权限是否合理,在多数情况下用户会直接授予所要求的权限。因此需要开发者在申请或设 定权限时,严格遵循最小权限原则。

  • 自动静态分析与代码验证

设计一种自动分析应用程序特性的工具,分析应用程序的功能以及不同应用程序之间的差别,以判断其合法性。

第 二类风险是攻击Linux内核与系统库函数的漏洞。目前,针对这种风险,采用更严格的访问控制机制,第6章介绍的限制操作系统用户权限的 SE Android,是一种实际且有效的选择。最危险的攻击就是利用系统漏洞获取根用户或超级用户权限,进而控制整个系统。SE Android恰好通 过控制根用户或超级用户权限实现对安全性的增强,即使攻击者获取了根用户权限,但可能的危害范围不至于无限扩大。但是,某些系统命令由于正常使用的需要, 可能无法完全禁用,攻击者如果恰好获得该类命令的使用权,则SE Android的功能就十分有限了。

第三类风险是破坏私有数据的可用性、数据隐私性以及完好性。可以采取以下策略进行防范。

  • 登录

使用登录用户口令解锁移动设备的某些功能,以防止安全威胁。这是一种常见的有效方式,尤其是用于保护隐私数据信息。但是,当设备遗失时,如果尚未使用口令解锁设备,则保护作用存在;如果解锁之后才遗失设备,则口令保护完全无效。

  • 防火墙

防 火墙可以保障用户私有信息不会经由网络连接被泄露。通常,对网络连接传输的内容使用无状态或有状态的分析,可以发现是否有私密信息正被泄露,因此可以切断 传输线路。由于防火墙工作在操作系统内核中,因此无法直接为外部攻击所侵害。同时防火墙可以与SE Android提供的访问控制机制协同工作,提供更高 级别的保护。但是,恶意软件并非只能通过网络接口泄露隐私信息。比如,通过短信/彩信的发送,防火墙就无作用了。

  • 数据加密

数据加密是保护隐私数据的最佳手段。由于只有信息所有者才有密钥,因此即使设备失窃,隐私信息的安全仍然得到保障。

  • 上下文敏感的访问控制(CAAC,Context Aware Access Control)

CAAC可以根据设备使用的内部与周边环境决定访问权限,比如设备使用的地点、所登录的移动网络、是否连接Wi-Fi等。但是,如果攻击恰好发生在允许访问的环境下,则此类方式无效。

  • 远程管理

从 安全角度,远程管理能力是必须严格限制使用的。但是,与防火墙、CAAC机制相结合,远程管理实际可以提升安全性。例如,设备遗失后,可以通过远程管理机 制开启防护机制,保护数据安全。即使在日常使用中,远程管理也可能发现肆虐移动网络的蠕虫,通过启动防火墙等机制限制蠕虫的活动。但是,所有的远程管理都 需要在受到攻击的过程中,或受到攻击之前有人为参与,而且需要耗费设备的资源,以及远程管理的人力资源等,费用不菲。

第四类风险是耗尽系统资源,可以采取如下的防范手段。

  • 资源管理

系 统资源管理的安全方案可以进一步降低耗尽系统资源类风险的危害。其机制是公平分配每个应用程序所需的系统资源。当然,可以根据应用程序的重要性与对资源的 需求情况加以分配。比如,电话应用程序非常重要,因此需要得到更多的CPU时间。如果CPU时间、存储空间限额、网络与磁盘输入输出限流,则“拒绝服务” 类型的攻击可被避免。但是,高效实现此类机制仍然十分困难,因此应用较少。

  • 入侵检测/防护系统

基于宿主(host)的入侵检测系统可以通过资源使用的异常情况,检测各种耗尽电池、内存与CPU时间的恶意软件。但是,高级的恶意软件通常伪装为正常软件,不易检测。

第五类风险是入侵专用网络连接。建议采用如下的防范策略。

  • 虚拟专网(VPN)

虚拟专网使用成熟的信息认证码与加密,保护通信的安全,可以防止针对网络的攻击。

  • 远程管理

一个集中式的远程管理中心可以增强安全保护能力,但远程管理中心的人为因素可能成为另类的安全隐患。

  • 上下文敏感的访问控制(CAAC)

在内网或虚拟专网的环境下,结合CAAC的机制,可以更好地保护数据安全。比如,当检测到外网环境时,适时启动数据传输加密机制等。

以 上均为宏观上采取的防范策略,就实施细节而言,重要的是开发者需具备基本的安全意识,充分认识到安全性也是软件开发周期的一个重要环节,编写安全的代码是 开发者所必须具备的一项职业技能。虽然不可能确保所编写的代码100%安全,但也要尽可能地使用户对Android系统和应用程序放心。

具 体而言,无论是系统工程师还是应用工程师,在Android平台上致力于实现功能的同时,应更深入地理解所编写的应用程序将如何与Android系统或其 他应用程序安全地交互;如何安全地存储数据到SQLite;如何保护用户数据尤其是敏感数据的安全,避免恶意软件的攻击;如何处理有限的内存、电池电量; 如何充分理解权限机制,使用户清楚应用程序需要哪些权限。所有的这些都是开发流程中必不可少的部分。

本文由 米花发表。转载请注明出处:https://www.mihua.net/list/0/3590.html

发表评论

您的昵称:

猜你喜欢

最近更新