点击上方“C语言与CPP编程”,选择“关注/置顶/星标公众号”
干货福利,第一时间送达!
最近有小伙伴说没有收到当天的文章推送,这是因为微信更改了推送机制,导致没有星标公众号的小伙伴刷不到当天推送的文章,无法接收到一些比较实用的知识和资讯。所以建议大家加个星标⭐️,以后就能第一时间收到推送了。
谷歌表示,过去六年来,其优先考虑内存安全软件开发的努力已大幅减少安卓操作系统中的内存安全漏洞数量。
在最近发布的 报告 中,谷歌透露,因内存安全问题导致的安卓漏洞比例已从 2019 年的 76% 下降至预计 2024 年底的 24%,这显著低于行业标准的 70%。
这是安卓代码风险状况的显著改善,安卓安全团队成员 Jeff Vander Stoep 和谷歌高级软件工程师 Alex Rebert 将此归功于采用了 安全编码(Safe Coding)。这是一套软件开发实践,旨在通过内存安全编程语言(包括 Rust)、静态分析和 API 设计来避免引入漏洞。
据安卓团队观察,Rust 变更的回滚率不到 C++ 的一半。
Vander Stoep 和 Rebert 说:“前几代人向安全编码所做的转变可以通过开发代码时所做断言的可量化性来体现。”
“安全编码使我们能够对代码的属性以及基于这些属性可能发生或不可能发生的情况做出强有力的断言,而不是关注所应用的干预措施(如缓解和模糊测试),或试图利用过去的表现来预测未来的安全性。”
使用 C#、Go、Java、Python、Swift 和 Rust 等内存安全编程语言开发软件是安全编码的重要组成部分。在大型代码库中,大多数的严重安全漏洞都源于缓冲区溢出等内存安全缺陷。这一认识促使公共和私营部门广泛推动减少内存安全漏洞的发生。
为了实现这一目标,我们主要建议避免使用 C 和 C++,因为这两种语言需要手动进行内存管理,除非开发人员特别敬业,否则容易导致内存漏洞。(这一点在 C/C++ 社区中也得到了关注,内存安全 已成为 该社区的首要任务。)
对谷歌而言,国际内存安全运动 意味着在安卓和其他项目中更多地采用 Rust 进行开发,这在大多数情况下能够提供内存安全保障而不影响性能。同时,这种做法还提高了工作效率。
Vander Stoep 和 Rebert 说到,“安全编码将缺陷查找工作进一步向左转移,甚至在代码提交之前,从而提高了代码的正确性和开发人员的工作效率”。
“我们看到这种转变体现在一些重要的指标上,比如回滚率(因意外错误导致的代码紧急回退)。安卓团队观察到,Rust 变更的回滚率不到 C++ 的一半。”
对于拥有大量不安全遗留代码的企业来说,好消息是可能不需要用新语言重写旧代码。正如 Vander Stoep 和 Rebert 所指出的,漏洞是有半衰期的——它们会随着时间的推移而衰减。他们说,“举例来说,根据平均漏洞寿命,5 年前的代码比新代码的漏洞密度低 3.4 倍(基于研究结果中的寿命)到 7.4 倍(基于在安卓和 Chromium 中观察到的寿命),”。
这并不是说旧漏洞会奇迹般地变得不可利用。相反,漏洞总体密度的降低,这是统计上的胜利,但并不意味着安全有了保障。
即便如此,通过使旧代码与内存安全代码实现互操作,以及使用内存安全语言编写新代码,现有漏洞的自然衰减率往往会使大型代码库随着时间的推移变得更加安全,而无需进行繁琐的代码修订。如果你停止制造新的内存安全漏洞,旧的漏洞至少在总体上就不会成为问题。
Vander Stoep 和 Rebert 说,“在新代码中采用安全编码是一种范式转变,使我们能够利用漏洞的固有衰减特性来发挥我们的优势,即使在大型现有系统中也是如此。”
“这个概念很简单:一旦我们切断了新漏洞的源头,这些漏洞就会呈指数级减少,从而使我们所有的代码更加安全,提高 安全设计的有效性,并缓解与现有内存安全策略相关的可扩展性挑战,使这些策略能够更加有效和更加有针对性地得到应用。”
Thomas Claburn,The Register 网络杂志的资深记者。他的专长在于政府信息技术、软件开发以及人工智能的伦理使用。Thomas 在技术出版领域拥有近 30 年的经验,曾担任过从杂志版块编辑到特约编辑的多种职务。
原文链接:
https://www.theregister.com/2024/09/25/google_rust_safe_code_android
—— EOF —— 你好,我是飞宇。日常分享C/C++、计算机学习经验、工作体会,欢迎点击此处查看我以前的学习笔记&经验&分享的资源。
我组建了一些社群一起交流,群里有大牛也有小白,如果你有意可以一起进群交流。
欢迎你添加我的微信,我拉你进技术交流群。此外,我也会经常在微信上分享一些计算机学习经验以及工作体验,还有一些内推机会。
加个微信,打开另一扇窗
经常遇到有读者后台私信想要一些编程学习资源,这里分享 1T 的编程电子书、C/C++开发手册、Github上182K+的架构路线图、LeetCode算法刷题笔记等精品学习资料,点击下方公众号会回复"编程"即可免费领取~
感谢你的分享,点赞,在看三连