Google彻底分析所有Android漏洞,要从根本解决安全性问题

Google分享了他们强化Android安全性的思路,通过资料驱动方法,来决定对Android生态系统统部署更加全面性的安全防护措施。每月Google更新,除了修补通过漏洞奖励计划提报的漏洞之外,他们也会借由改进沙盒等措施,来防御尚未发现的漏洞。

由于Android功能在生态系统统中差异性很大,因此Google必须非常谨慎地做出决定,他们利用大量的漏洞资料,来判断所要部署的解决方案,让恶意人士更难以发动攻击。Google提到,Android漏洞奖励计划是一个非常有用的信息来源,Google安全工程师会分析通过该计划提交的所有漏洞,确定每个漏洞的根本原因和整体严重性。

其他参考的数据源还包括内外部的错误报告,这些报告会标记出易受攻击的组件,并且披露导致错误的程序代码实例,但仅依赖漏洞报告是不够的,因为资料存在偏差,安全研究人员通常会研究容易出现漏洞区块,又或是倾向研究具有相对应工具的领域,Google提到,安全研究工具在GitHub上发布,则其他研究人员也通常会使用该工具进行研究。

为了避免安全措施不会只保护漏洞探索热门区块,Google内部红队成员则会分析平台中,较少受到关注或是较复杂的部分,同时还会以连续自动模糊测试器,大规模地测试Android虚拟机和物理设备,而从这些程序发现的漏洞,Google也会彻底研究其原因和严重性,作为部署安全解决方案的依据。

通过分析漏洞资料,就可以对症下药解决一大群类似的漏洞,Google举例,像是平台某部分曾经发生大量整数溢出的漏洞,在他们对该区块部署UBSan(Undefined Behavior Sanitizer)之后,便彻底解决整数溢出的问题,又或是Android 11用来解决内存常见访问漏洞的措施,便是Google在分析漏洞后,构建内存分配器来抵御内存溢出,或是使用已释放内存(Use-After-Free)等漏洞。

Google分析漏洞并归纳出了几项相对应的措施。第一个策略是先发制人,防堵恶意人士利用漏洞的机会,Google采用像是整数溢出消毒或是边界消毒等工具,来降低记忆损毁漏洞所造成的伤害,且为了阻挡攻击者通常接连利用不同的漏洞,达到最终攻击目的,Google采用能够限制攻击者操作这些漏洞的措施,包括内存标签(Memory Tagging)、控制流程完整性(Control Flow Integrity)等,以增加利用漏洞难度。

第二个策略则是将较大特权的组件,拆分成较小的部分,经分解之后,较小组件中的漏洞,就拥有较少的系统访问权限,因此可以增加漏洞使用难度,以限制攻击者取得敏感资料或是额外特权提升的路径。

第三个策略则是使用沙盒和隔离策略,应用最低权限原则,降低漏洞的价值,让攻击者可以做的事情更少,而最后一个策略则是使用内存安全的语言,Google提到,Android收到的大部分报告,都跟内存安全有关,因此使用Java、Kotlin和Rust等语言,或是提高C/C++安全性,则可以解决内存安全问题。

Google举例其进行的安全改进工作,像是从2015年开始进行的Android媒体框架强化,在之前他们收到许多媒体框架的严重漏洞回应,其中不少漏洞都是可被远程访问的,因此Google在Android Nougat进行了大量架构分解工作,并且提高修复媒体漏洞的能力,这些工作在2020年开花结果,现在就不曾收到媒体框架中,有任何互联网可访问的严重漏洞回应。

Google主要针对三个区块强化安全性,分别为远程访问接口、核心函数库以及操作系统内核。Google提到,在每个Android版本,他们都会考量性能以及稳定性,由资料驱动决定提升生态系统安全性的行动。