提前锁票 InfoQ 最具价值感的视频栏目 | InfoQ 大咖说 了解详情
写点什么

用 Rust 重构核心开源软件吧,谷歌愿意给你钱

2021 年 2 月 19 日

用Rust重构核心开源软件吧,谷歌愿意给你钱

重构核心开源软件吧,谷歌愿意给你钱。


2 月 17 日,谷歌博客发布了一则公告,表示将提供资金让开发者一起重构各类核心开源软件。


开源项目是所有现代数字基础设施的根基,其重要性不言而喻。谷歌认为内存安全漏洞是困扰无数系统的实际威胁。最近一项研究发现,每年通过安全更新解决的漏洞中,约 70% 属于内存安全问题。另外一项针对 curl 命令行工具安全问题做出的分析则表明,使用内存安全语言能够彻底解决全部 95 种 bug 中的 53 种。以 curl 改造项目作为模板,谷歌希望能重构更多的由其他语言编写的核心开源软件。


事实上,由不安全语言编写的软件中往往包含难以察觉的 bug,极有可能导致严重的后续安全隐患。为此,谷歌公司扩大了与互联网安全研究小组(ISRG)的合作关系,希望共同使用内存安全语言重构各类核心开源软件。


去年 12 月份,谷歌启动了一个名叫“Criticality Score”的项目,目的是为每个开源项目生成一个关键评分,来评估现有开源项目的重要性。评估指标包括项目的年龄、个人贡献者和组织的数量、用户的参与度以及项目依赖性等。谷歌表示鉴定这些关键项目是改进开源项目安全性计划的第一步,谷歌的 OpenSSF 组织将会为这些项目维护者提供一些资源。



今年这次重构计划,谷歌更为直接地表示将提供给大家资金,以推进其他核心开源项目的改造。但是到底是由谁来改造,是否一定是原始维护者,谷歌并没有明确说明。有网友提出疑问,如果由原开源项目之外的人员进行重构,那么资金是否就是提供给这些新开发人员(看起来是新的就业机会呢)。


对此,ISRG 的执行董事解释说:“我们计划将开源软件迁移到内存安全语言上,ISRG 作为中间人协调资金。我们选择项目,并与开源维护人员 / 开发人员一起制定计划,我们会为其筹集资金。一旦有人(例如 Google)为项目提供资金,ISRG 就与项目开发人员 / 维护人员签订工作合同。在某些情况下,可能开源维护者会参与,但我们希望能找到承包商来完成实际的工作。”


并且他再次提到了两个以前的改进项目。其中,curl 的改进,ISRG 直接资助了 curl 的作者;httpd 的改进,谷歌(通过 ISRG)资助了 httpd 提交者。ISRG 执行董事预测,未来大多数情况下,这些资金将主要流向项目维护者 / 开发人员。


不过,谷歌花钱推动重写开源软件的行为,也被一些网友质疑为“以安全名义劫持开源项目”。最初的开源项目维护者是跟谷歌和 ISRG 无关的第三方,而改造项目却是由谷歌选择自己信任的开发人员进行。并且最后用户还得从谷歌改造版本和原始版本中进行选择,如果改造项目更成功,那么在道德上相当于窃取了原始作者的作品。



谷歌大力推广 Rust


谷歌认为当前正是使用内存安全编程语言预防此类 bug 的好时机。在此之前,他们也取得了一些成果:


迄今为止,我们的免费 OSS-Fuzz 服务已经在 375 个开源项目中发现 5500 个因内存安全错误引发的漏洞。我们还组织起相应的 Bug 赏金计划,希望通过经济奖励的方式鼓励更多人使用这项模糊测试服务。我们也发布了 Syzkaller 等项目以检测操作系统内核中的 bug,并通过 gVisor 等沙箱缓解 bug 检测期间造成的实际影响。


作为相关工作的重要起点,面向 curl 的 HTTP 与 TLS 后端正在接受 Rust 语言改造,Apache httpd 也即将迎来全新 TLS 库。作为互联网的重要网关,这些代码库的安全水平将直接决定全球数百万用户的数据安全性。


目前,Rust 被普遍认为是一种关注内存安全的系统编程语言,同时结合了对性能的低程度控制与现代语言特征。因此,谷歌一直希望能够扩展 Rust 在谷歌中的应用,并且已经开始在那些对内存安全和性能要求极高的设置中使用了 Rust,包括将其用在关键的 Android 系统中。


目前,谷歌正在使用 Rust 或对 Rust 生态系统有贡献的项目包括:


  • Android 中的操作系统模块,包括蓝牙和 Keystore 2.0

  • 低级别的项目,例如 ChromeOS 中使用的 crosvm 虚拟机监视器和驱动程序(QEMU 的替代方案)

  • 为使用 Rust 的开源项目做出的贡献,例如 Mercurial 源代码控制系统

  • 固件的 FIDO 安全密钥支持


此外,还有许多其他项目正在评估 Rust 在新的库或产品中的使用情况。一些例子包括:软件国际化项目,ICU4X 部分新实验操作系统 FuchsiaGPU 字体渲染的研究


其中也包括谷歌所支持的 Rust 项目及其维护者:


  • 在 curl 中添加 Rust 代码

  • 与 ISRG 合作,将 Rust TLS 模块添加到 Apache HTTP 服务器项目


在 Rust 的推广上,谷歌不遗余力,还在今年 2 月 8 日,联合 AWS、华为、微软和 Mozilla 五家企业,宣布成立 Rust 基金会,并承诺在两年的时间里,投入 100 万美元的预算,用于 Rust 项目的开发、维护和推广,致力于为那些管理和开发该项目的维护者提供支持。


谷歌表示,“基于谷歌在 C/C++、编译器和工具链方面的长期投资,我们很高兴成为 Rust 基金会的成员。我们期待更多地参与到 Rust 社区,尤其是在整个行业的关键问题上做出更多努力,包括与 C++ 的互操作性、协调安全审查和降低 crate 更新的成本,并继续增加我们对现有 Rust 项目的投资”。


无论如何,谷歌提供资金,让开发人员用内存安全语言重写开源软件,以提升目前互联网的整体安全度,看起来也不是一件坏事。


延伸阅读:


https://security.googleblog.com/2021/02/mitigating-memory-safety-issues-in-open.html


2021 年 2 月 19 日 14:502579

评论 1 条评论

发布
用户头像
rust绝对以后的霸主。c,c++,java,c#,go都摆脱不了内存安全问题。
2021 年 02 月 19 日 21:32
回复
没有更多了
发现更多内容

架构师训练营第7周作业

叶鹏

被我玩坏的git:除了之前的工作、当网盘用,还能这么玩

小Q

Java git 程序员 架构 开发

一个草根的日常杂碎(9月21日)

刘新吾

生活 现实纪录 随笔

整合Elastic-Job(支持动态任务)

Nil

springboot SpringCloud 分布式任务调度 Elastic-job

Spring 5 中文解析数据存储篇-编程式事物管理

青年IT男

Spring5

ECMAScript 6新特性简介

程序那些事

nodejs ES6 ECMAScript 6

简述 CAP 原理

叶鹏

从零开始搭建完整的电影全栈系统(五)——WEB网站、Api以及爬虫的部署

刘强西

爬虫 网站搭建 部署与维护

18 张图,一文了解 8 种常见的数据结构

沉默王二

Java 数据结构

实战中学习浏览器工作原理 — 排版与渲染

三钻

CSS 前端 浏览器

oeasy 教您玩转linux 010304 图形界面 xfce

o

技术译文|如何将 Pulsar 用作消息队列

Apache Pulsar

开源 云原生 pulsar Apache Pulsar 消息中间件

架构师训练营第八周作业

叶鹏

常用设计模式

叶鹏

架构师训练营第四周作业

叶鹏

前端如何优雅处理类数组对象?

pingan8787

Java web前端

微服务的框架(Dubbo)架构

叶鹏

架构师训练营12周作业

叶鹏

食堂卡就餐卡系统

叶鹏

一文学懂递归和动态规划!

码农田小齐

算法 数据结构和算法

年度开源盛会 ApacheCon 来临,Apache Pulsar 专场大咖齐聚

Apache Pulsar

开源 云原生 Apache Pulsar 消息中间件

Spring 5 中文解析数据存储篇-@Transactional使用

青年IT男

spring

Springboot 定时任务

hepingfly

定时任务 springboot 注解

小白理财先转变思维理念

boshi

理财 收入 财富自由

高难度对话读书笔记—情绪篇

wo是一棵草

关于Java调用类的main方法

谷鱼

Java 包位置

anyRTC云端录制功能上线

anyRTC开发者

WebRTC 语音 直播 RTC 安卓

Python 中 \x00 和空字符串的区别,以及在 Django 中的坑

AlwaysBeta

Python django 编程

简述JVM垃圾回收

叶鹏

用户密码验证函数

叶鹏

两天,我把分布式事务搞完了

yes的练级攻略

分布式事务 seata

打造 VUCA 时代的 10 倍速 IT 团队

打造 VUCA 时代的 10 倍速 IT 团队

用Rust重构核心开源软件吧,谷歌愿意给你钱-InfoQ