根据谷歌安全消息,十多年来,内存安全漏洞一直占整个产品和整个行业漏洞的 65% 以上。但近期在 Android 上,内存安全漏洞显着减少,并且相关的漏洞严重性也有所下降。
“从 2019 年到 2022 年,内存安全漏洞的年度数量从 223 个下降到 85 个,”Android 安全工程师 Jeffrey Vander Stoep 在博客文章中说道。Jeffrey 表示,这种下降与放弃内存不安全编程语言的努力相吻合,这里的“内存不安全编程语言”指的是 C/C++。
从去年的 Android 12 开始,Rust 成为了 Android 平台语言。Jeffrey 表示,现在在 Android 13 中,添加到该版本中的大部分新代码都是用内存安全语言——Rust、Java 或 Kotlin 编写的。
随着 Android 内存不安全代码越来越少,内存安全漏洞占 Android 漏洞的比例从 2019 年的 76% 下降到 2022 年的 35%。2022 年是内存安全漏洞不再是 Android 大部分漏洞代表的第一年。
“虽然有相关性并不一定意味着有因果关系,但值得注意的是,由内存安全问题引起的漏洞的百分比似乎与用于新代码的开发语言密切相关。”Jeffrey 说道。
据悉,在 Android 13 中,大约 21% 的新原生代码(C/C++/Rust)是 Rust。AOSP 中大约有 150 万行 Rust 代码,涵盖了各种新功能和组件,例如 Keystore2、新的超宽带 (UWB) 堆栈、DNS-over-HTTP3、Android 的虚拟化框架 (AVF) 以及各种其他组件及其开源依赖项。这些是需要系统语言的低级组件,否则这些组件将在 C++ 中实现。迄今为止,在 Android 的 Rust 代码中发现的内存安全漏洞为零。
不过,Jeffrey 也表示,谷歌的目标不是将现有的 C/C++ 转换为 Rust,而是随着时间的推移,将新代码的开发转移到内存安全语言。
谷歌并不是唯一一家认识到内存安全代码好处的大型科技公司。Meta 层表达过对 Rust 的赞赏。几个月前,微软 CTO Mark Russinovich 宣布不应再使用 C/C++ 来启动新项目,并表示应该在需要没有垃圾收集的语言的地方部署 Rust。
参考链接:
https://security.googleblog.com/2022/12/memory-safe-languages-in-android-13.html