2

谷歌的安卓13大幅度从C/C++迁移到Rust

 1 year ago
source link: https://www.jdon.com/63586
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

谷歌的安卓13大幅度从C/C++迁移到Rust


从Android 12起,谷歌宣布在Android平台中支持Rust编程语言,作为C/C++的内存安全替代语言。
谷歌的目标不是将现有的C/C++转换为Rust,而是随着时间的推移将新代码的开发转移到内存安全的语言。

Android 13 是第一个添加到版本中的大部分新代码都采用内存安全语言的 Android 版本。
Rust 不是Android 中唯一使用的内存安全语言(Java 和 Kotlin 也算在内),但它是一个主要的语言。

在Android 13中,约21%的新原生代码(C/C++/Rust)使用Rust。Android开源项目(AOSP)中总共有大约150万行Rust代码,涉及新的功能和组件,如Keystore 2、新的超宽带(UWB)堆栈、DNS-over-HTTP 3、Android的虚拟化框架(AVF)和各种其他组件及其开源依赖项。这些是需要系统语言的低级组件,否则这些系统语言将以C++实现。

到目前为止,Android的Rust代码中没有发现内存安全漏洞。
我们不希望这个数字永远为零,但考虑到两个Android版本中新Rust代码的数量,以及使用它的安全敏感组件,这是一个重要的结果。它表明Rust正在实现其防止Android最常见漏洞来源的预期目的。在许多Android的C/C++组件(例如媒体、蓝牙、NFC等)中,历史漏洞密度大于1/kLOC(每千行代码1个漏洞)。根据这一历史漏洞密度,使用Rust可能已经阻止了数百个漏洞进入生产环境。

从C/C++迁移是一项挑战,但我们正在取得进展。Rust在Android平台上的使用正在增长,但这并不是故事的结束。为了实现在Android范围内提高安全性、稳定性和质量的目标,我们需要能够在需要本地代码的代码库中的任何地方使用Rust。我们正在Rust中实现用户空间HAL。我们正在添加对受信任应用程序中Rust的支持。我们已将Android虚拟化框架中的虚拟机固件迁移到Rust。随着Linux 6.1对Rust登陆的支持,我们很高兴能将内存安全性引入内核,从内核驱动程序开始。

我们在Java中看到的漏洞类型主要是逻辑错误,如上所述,严重性通常较低。接下来,我们将探索Rust更丰富的类型系统如何帮助防止常见类型的逻辑错误

随着Android从C/C++迁移到Java/Kotlin/Rust,我们预计内存安全漏洞的数量将继续下降。为Android上内存损坏错误罕见的未来干杯!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK