首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android内存安全漏洞数量大幅下降,Rust程序代码比例上升成关键

过去十年,内存漏洞占整个产业漏洞的65%,但Google发现从2019年到2022年,Android的内存漏洞年度总数,从223个下降到了85个,而有这项安全性进展,Google归因于Android的内存安全程序代码比例增加。

Google过去持续投资工具提高C/C++程序代码的安全性,之前几个版本,Google在Android设备上引入Scudo强化分配器、HWASAN、GWP-ASAN以及KFENCE,同时增加现有程序代码库模糊测试的覆盖率,运用这些工具发现更多C/C++程序代码漏洞,并减少未来新程序代码所包含的漏洞。

但即便Google在C/C++程序代码上做了这些努力,但他们认为这仍无法解释Android漏洞巨幅减少的变化,而Google在审视开发策略后,认为Android从内存不安全语言持续转移到内存安全语言,是这个现象的主要原因。

从Android 12开始,Google就在Android支持Rust程序语言,作为C/C++内存安全替代方案,而从那时起,Google也持续扩展Android开源项目(AOSP)中的Rust体验和使用。Google表示,他们的目标并不是把现有的C/C++程序代码都转换成为Rust,而是在新的程序代码使用内存安全语言开发。

在Android 13中,有约21%的新原生码都是以Rust开发,在AOSP中已经有大约150万行的Rust程序代码,涵盖各种功能和组件,包括Keystore2、UWB堆栈、DNS-over-HTTP3、Android虚拟化框架等组件和开源相依项目。这些都是需要系统语言开发的低端组件,如果没有Rust,Google就必须使用C++来实例。

到目前为止,在Android的Rust程序代码中发现的内存漏洞为零,Google提到,这是一个重要发现,因为过去Android漏洞密度大于1/kLOC,也就是说,每一千行程序代码至少会发现一个漏洞,与历史资料相比,Rust可能已经阻挡数百个漏洞进入产品环境。

使用C/C++开发的功能不如预想中的运行迅速,Google提到,使用非内存安全语言,反而需要额外添加安全措施,而这些措施会让程序执行的速度更慢。非内存安全的程序代码通常意味着开发者必须在安全性和性能之间权衡,像是添加沙盒、执行时缓解措施或是硬件保护等,都对程序代码的大小、内存和性能产生负面影响。

Google提到,在Android中使用Rust,能以更少的妥协优化安全性和系统健康。像是使用新的UWB堆栈能够节省数MB的内存,并以现存的程序中执行避免IPC延迟,又或是新的DNS-over-HTTP3实例,能够以安全的方法,使用更少的线程处理相同的工作量。

要从C/C++移植到Rust并不是一件简单的事,Google持续增加Rust在Android平台上的使用,为了实现更高的安全性和稳定性等目标,Google需要在更多原生码中使用Rust,目前他们正在以Rust实例用户空间HAL,并且已经将Android虚拟化框架中的虚拟机固件移植到Rust,也随着Linux 6.1对Rust的支持,便能够从核心驱动程序开始,对核心提供内存安全。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20221203A03F3G00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券