Android 这两年的甜点代号越来越腻味,上个月 Android 8.0,以代号 Oreo(奥利奥)的方式问世了,奥利奥感觉比牛轧糖、棉花糖之类的都要甜。可能许多普通消费用户并不关心 Android 的大版本号迭代,因为“痛点创新”新功能出现的机会不多,或者大部分新特性是针对开发者的。不过实际上就安全方面的更新,这次可是前所未有的。
Duo Security 高级研究与开发工程师 Kyle Lady 表示:“在 Android O 系统中,谷歌针对 Android 系统框架进行了大规模重构。不少变动未来数年内,都会影响到用户、开发者以及设备制造商。”
不少移动行业专家都表示,这次引入的Project Treble 对谷歌而言是安全方面的里程碑。它将供应商的某些具体实施方案(第三方制造商写的设备专用、更低层级的软件)与 Android 系统框架进行了剥离。Project Treble 的一大目标就是让 Android 安全更新流程“流线化”。
如上面提到的,Project Treble 的存在就是为了让 OEM 厂商和配件制造商,以更为简单、快速和低成本的方式发出 Android 更新。这个项目把硬件专用的驱动、固件(比如三星、高通这些企业提供的手机组件固件和驱动)与 Android 系统本身进行了分离。
这样一来,谷歌发布操作系统补丁,就不需要再为了芯片适配之类的问题去等那些供应商了。谷歌表示,Android 的这种模块化构建方式,对于那些很老的硬件设备而言--可能 OEM 合作伙伴都已经不再做支持了--提供更新支持,还是相当有价值的。
有了 Project Treble,谷歌将 Android 系统框架和供应商的实施方案划分成了不同的流程,而且双方采用某种标准供应商介面来实现互通。这种“供应商介面”本身也会进行版本更新,也就是说新版 Android 系统框架对于更老的设备而言,会尽可能做到最小的变更。
将 Android 做进一步切分的策略,能够实现更为高效的组件管理,同时对安全而言也是有价值的。这本身就是 Project Treble 期望达到的目标,也是谷歌减少 Android 攻击面策略的组成部分。
Android 平台安全负责人 Nick Kralevich 在先前的 Black Hat 大会上说:“要减少攻击面,有很多事要做。比如怎么确定一款应用只干了应该干的事情?如何让暴露在外的部分最小化?如何在 Android 系统中控制流程,并遵循最小权限原则?”
在 Project Treble 中,谷歌进一步进行了组件切分,还在媒体框架中为音频、摄像头和 DRM server 引入了新的硬件抽象层(HAL)。有了这些硬件抽象层,Android 框架切分成了更多独立进程和沙盒,且不会访问系统内核,这对攻击者而言,要通过漏洞组合来入侵设备,难度就大了很多。
用户空间的攻击面是减少了,所以攻击者有时更倾向于在 Android 内核中找漏洞,很多研究人员也是这么干的。2014 年,谷歌说内核漏洞占到所有上报漏洞的 4%,而现如今这个数字已经提升到了 39%。
Android O 在这部分也做了努力,通过引入 seccomp filter(安全计算)来限制内核访问。seccomp 是种安全特性,而 filter 系统会采用一个可配置策略对内核做调用。谷歌表示,关闭未使用的系统调用能够减少内核攻击。
Android 开发团队安全工程师 Paul Lawrence 今年早前就说过:“在 Android 设备支上,内核对于实施 Android 安全模型来说起到举足轻重的作用。安全团队致力于加固 Android 的用户空间,对进程做隔离和降权,所以内核越来越成为攻击的重点。” Seccomp 令未使用的系统调用对应用软件不可访问,这样一来有潜在威胁的 App 也就无法施展恶意行为了。
就 App 权限问题,谷歌这次也做了调整。许多攻击者入侵设备的一个主流方案就是在某个 App 中构建恶意程序。虽然谷歌已经在 Play Store 中设立了不少认证关卡,但其实 FreeBuf 先前也报道过不少 Play Store 中的恶意程序,更何况很多用户还会从第三方下载 App。
一般来说,用户自己从第三方下载 App 安装,需要首先在系统中设置允许未知来源安装。这个权限设定在系统中是全局生效的,要么就是不允许第三方来源来装,要么就是完全允许。
奥利奥系统在这一点上做了改进,用户可以针对单个应用设定这部分权限,也就是说如果攻击者借用路过式下载方案,意图在用户设备上安装恶意程序,用户可以自行决定是否下载以及其权限设定如何。
这其实也是 Android O 在应用权限方面的调整,谷歌表示这项特性是针对系统警告窗口功能所做的安全加强。原本开发者利用系统警告特性来开发一款 App,可以实现在所有其它 Android 应用上方显示弹窗。
FreeBuf 先前就曾报道过有开发者利用这一特性进行钓鱼或者勒索,比如欺骗用户输入身份凭证,或者宣称窗口将永远存在,要求受害者支付赎金才让窗口消失。而在新版的 Android O 系统中,系统警告层会加入提醒,点击就能移除弹出窗口。
早在 2013 年,Android 其实就已经有验证启动系统了,这项功能是为了保证设备软件(从硬件信任根直到系统分区)的完整性,启动过程在进入下一个阶段之前,前一个阶段都会先验证下一个阶段的完整性和真实性--所以早前的不少设备如果由用户刷入第三方固件,就会面临警告或者验证不通过,无法启动设备的问题。
在最新的奥利奥系统中,验证启动进行了升级,系统现在会阻止用户启动到更早版本的系统--因为某些攻击者可能采用回滚系统的方式来攻击,毕竟老版本的系统会包含一些已经公开的漏洞。
应用与移动设备管理厂商利用这项特性,也可以在此过程中保护其硬件区域安全了。总的说来,这就能够确保系统通过了验证启动,检查设备已经按照要求打了相应的补丁,此后再授权用户访问引用应用或者企业资源。
Lookout 安全研究人员 Andrew Blaich 还说,奥利奥系统现如今在网络连接时还会阻止使用更老的、不安全的协议:“HTTPS 连接的 SSLv3 已经不再受到支持,也就能够阻止设备及其应用,使用哪些可能泄露敏感数据的不安全协议。”同时,他还说谷歌还加固了某些网络连接 API,避免更早 TLS 版本可能泄露敏感数据的问题。
当前,Android Oreo 仅针对某些 Google Pixel 手机开放。谷歌表示,未来 6 个月内,Android O 会推给第三方旗舰设备,包括来自三星、LG 和 HTC 的手机。不过 Android O 要大面积惠及移动设备可能需要花很长时间,毕竟 Android 碎片化问题不是一天两天了。好比 Android 7.0 是去年 8 月份推出的,到现如今一年多,从 Duo Security 的数据来看,仅一半设备用上 7.0。
还没有评论,来说两句吧...
发表评论