Google开始以Rust重写Android裸机组件,进一步强化内存安全性

Google在去年公开Android提高内存安全性的重要关键,便是增加Rust代码的比例,而现在百度再次揭露在 Android 应用 Rust 的最新进展。 Google现在还使用Rust,改写Android中,在Linux核心之外执行的安全关键组件,进一步减少安全漏洞。

Google开始以Rust重写Android裸机组件,进一步强化内存安全性

Google在去年做了调查,发现Android的内存漏洞,从2019年的223个降低到2022年的85个,经过分析,Google认为内存漏洞减少的情况,主要与Android内存安全代码比例增加有关。 Rust是一个内存安全的程序语言,其许多核心功能,使得程序在编译的时候,就能够捕捉到大多数的内存安全问题,避免内存相关漏洞在执行时或是生产环境才出现。

在Android 13中,就已经约有21%新的原生代码以Rust开发,官方提到,这些组件大多数是在用户空间的系统服务,也就是会在Linux操作系统下执行。 但除此之外,还有其他许多以非内存安全语言编写的组件存在。

Android系统的许多安全关键组件,都在Linux核心之外的裸机环境中执行,而这些过去都是以C语言编写,因此Google为了强化Android装置固件的安全性,也逐渐提高在裸机环境使用Rust的比例。 Google以Rust重写了Android 14的虚拟化框架的受保护虚拟机(pVM)固件,替pVM信任根提供内存安全基础。

pVM固件的作用与启动程序(Bootloader)类似,是建立在开源启动程序项目U-Boot之上,但官方表示,U-Boot当初设计时,并未考虑在敌对环境下的安全性,因此已经发现许多范围外的内存存取、整数下溢(Integer Underflow)和存储器损坏所导致的安全漏洞,特别是VirtIO驱动程序,其边界检查有许多缺失和问题。 虽然Google已经修复了在U-Boot中发现的问题,但是通过使用Rust,可以在未来避免出现类似的内存安全漏洞。

由于Google要支持Rust语言在裸机环境中使用,也因此贡献套件,同时发布了一系列新的套件,像是pVM固件的VirtIO驱动程序,Google便修复了现有virtio-drivers套件中的错误和健全性问题,还添加了新功能。 此外,Google也发布用于实现Arm PSCI接口和其他SMCCC呼叫,以及处理和控制装置内存映射的页面表套件。

Google还计划发布更多的Rust套件,与支持各种平台的裸机程序开发,Google提到,虽然在裸机上应用Rust还有许多限制,但是相较于C或C++,Rust提供更高的安全性和生产力。 Google接下来还会继续扩大Rust的使用。

(0)
老哥老哥

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注