Android 21 中大约 13% 的新编译代码是用 Rust 编写的

Google 的工程师总结了将 Rust 语言开发支持引入 Android 平台的初步成果。 在 Android 13 中,大约 21% 的新添加的编译代码是用 Rust 编写的,79% 是用 C/C++ 编写的。 开发 Android 平台源代码的 AOSP(Android 开源项目)存储库包含大约 1.5 万行 Rust 代码,与 Keystore2 加密密钥存储、UWB 芯片(超宽带)堆栈等新组件相关。 、DNS-over-HTTP3 协议的实现、AVF(Android Virtualization Framework)虚拟化框架、蓝牙和 Wi-Fi 实验堆栈。

Android 21 中大约 13% 的新编译代码是用 Rust 编写的

按照之前采取的减少因内存操作错误而导致漏洞风险的策略,Rust语言目前主要用于新代码的开发,并逐步加强最脆弱和最重要的软件组件的安全性。 没有将整个平台转移到 Rust 的总体目标,旧代码仍然保留在 C/C++ 中,并且通过使用模糊测试、静态分析以及在开发中使用类似的技术来对抗其中的错误。使用 MiraclePtr 类型(绑定原始指针,对访问已释放内存区域执行额外检查)、Scudo 内存分配系统(malloc/free 的安全替代品)以及使用内存 HWAsan(硬件辅助 AddressSanitizer)时的错误检测机制, GWP-ASAN 和 KFENCE。

至于Android平台漏洞性质的统计,值得注意的是,随着不安全地使用内存的新代码的减少,因使用内存时的错误而导致的漏洞数量也在减少。 例如,内存问题引起的漏洞比例从 76 年的 2019% 下降到 35 年的 2022%。 从绝对数量来看,2019 年发现了 223 个与内存相关的漏洞,2020 年发现了 150 个,2021 年发现了 100 个,2022 年发现了 85 个(所有注意到的漏洞都在 C/C++ 代码中;在 Rust 代码中,到目前为止还没有类似的问题)成立)。 2022 年是内存相关漏洞不再占主导地位的第一年。

Android 21 中大约 13% 的新编译代码是用 Rust 编写的

由于与内存相关的漏洞通常是最危险的,因此总体统计数据也显示关键问题和可远程利用的问题数量有所减少。 与此同时,在过去 4 年里,识别与内存工作无关的漏洞的动态保持在大致相同的水平 - 每月 20 个漏洞。 由于使用内存时的错误导致的漏洞中危险问题的比例仍然存在(但由于此类漏洞的数量减少,危险问题的数量也减少)。

Android 21 中大约 13% 的新编译代码是用 Rust 编写的

统计数据还跟踪不安全地使用内存的新代码数量与内存相关漏洞(缓冲区溢出、访问已释放内存等)数量之间的相关性。 这一观察证实了这样的假设:实施安全编程技术时的重点应该是删除新代码而不是重写现有代码,因为大部分已识别的漏洞都在新代码中。

Android 21 中大约 13% 的新编译代码是用 Rust 编写的


来源: opennet.ru

添加评论