Dojo
最新
最佳
搜索
订阅
解道Jdon
架构设计
领域驱动
DDD介绍
DDD专辑
战略建模
领域语言UL
领域事件
商业分析
工作流BPM
规则引擎
架构师观点
数据工程
产品经理
系统思维
微服务
微服务介绍
微服务专辑
模块化设计
SOA
API设计
clean架构
SpringBoot
分布式事务
事件溯源
Kafka消息
Kubernetes
DevOps
编程设计
GoF设计模式
模式专辑
面向对象
函数式编程
编程语言比较
编程工具比较
形式逻辑
前端编程
Reactive编程
Jdon框架
Rust语言
人工智能
Web3
模因梗
幽默梗
程序员吐槽
面试技巧
Java入门
数字化转型
认知偏差
道德经
更多话题
谷歌的安卓13大幅度从C/C++迁移到Rust
22-12-02
banq
从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上内存损坏错误罕见的未来干杯!
1
Android安卓
RUST语言