写点什么

谷歌发布最新报告: Rust 可显著减少安全漏洞

  • 2024-10-16
    北京
  • 本文字数:1529 字

    阅读完需:约 5 分钟

大小:735.69K时长:04:11
谷歌发布最新报告: Rust 可显著减少安全漏洞

谷歌表示,过去六年来,其优先考虑内存安全软件开发的努力已大幅减少安卓操作系统中的内存安全漏洞数量。

 

在最近发布的报告中,谷歌透露,因内存安全问题导致的安卓漏洞比例已从 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

 

声明:本文为 InfoQ 翻译整理,未经许可禁止转载。

2024-10-16 16:5010493

评论

发布
暂无评论

scrapy学习之爬虫练习平台3

LLLibra146

Python 爬虫 python 爬虫 Scrapy

区块链是未来数字经济标志性的发明技术

CECBC

区块链 数字经济

【面经】面试官:做过性能优化的工作吗?你会从哪些方面入手做性能优化呢?

冰河

面试 性能优化 JVM 高并发 高性能

Java9 新特性 - 下篇

hepingfly

Java 新特性

DDIA 读书笔记(4)多节点数据复制方案

莫黎

读书笔记

想不通(关于人生的突发奇想)

干啥啥不行的赢

YOLODet 最强PyTorch版的YOLOv5、YOLOv4、PP-YOLO、YOLOv3复现

wuzhihao7788

学习 AI 目标追踪

scrapy学习之爬虫练习平台5

LLLibra146

Python 爬虫 python 爬虫 Scrapy

Scrapy中process_request返回request和None的区别

LLLibra146

Python 爬虫 python 爬虫 Scrapy

芯片破壁者(十九):显卡的战国与帝国

脑极体

图解 | 不得错过的Binder浅析(一)

哈利迪

android

一站式低延迟直播连麦解决方案

anyRTC开发者

音视频 WebRTC 直播 RTC sdk

智能驾驶看湘江:中国智能网联汽车产业的“长沙样本”

脑极体

巨建华:区块链+金融的难点

CECBC

区块链 金融

甲方日常 43

句子

工作 随笔杂谈 日常

专业级沙箱与恶意样本的自动化分析

京东科技开发者

云计算 监控 虚拟化

scrapy学习之爬虫练习平台4

LLLibra146

Python 爬虫 python 爬虫 Scrapy

架构师训练营第七周作业

邓昀垚

聊点缓存——Part 1

姜雨生

redis 缓存

马云被约谈,阿里大数据的羹怎么分给每一个人?

CECBC

区块链 大数据

【原创】Spring Boot终极篇《上》

田维常

spring Boot Starter

数据库JDBC:PreparedStatement

正向成长

JDBC SQL预处理 PrepareStatement

scrapy学习之爬虫练习平台爬取

LLLibra146

爬虫 python 爬虫 Scrapy

scrapy学习之爬虫练习平台2

LLLibra146

Python 爬虫 python 爬虫 Scrapy

OpenShift 4 监控技术栈解析

东风微鸣

Kubernetes Prometheus openshift 可观察性 Thanos

程序员面试题为什么出得天花乱坠,实际工作中这些根本用不到?

Java架构师迁哥

【原创】Spring Boot终极篇《下》

田维常

spring Boot Starter

复盘逆袭之路!三个月时间深造,怒斩拼多多、字节、蚂蚁金服破50W年薪Offer(含自学路线图)

Java架构追梦

Java 学习 架构 面试 数据结构与算法

【原创】Spring Boot 如何手写stater

田维常

spring Boot Starter

YOLODet--YOLO系列网络结构图(YOLOv5,YOLOv4,PPYOLO,YOLOv3)

wuzhihao7788

学习 AI 目标追踪

搞定秒杀,只需要这几步!!

架构师修行之路

缓存 分布式 微服务 秒杀

谷歌发布最新报告: Rust 可显著减少安全漏洞_编程语言_Thomas Claburn_InfoQ精选文章