查看原文
其他

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

InfoQ 2021-07-02
编译 | Tina
重构核心开源软件吧,谷歌愿意给你钱。

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
今日荐文

点击下方图片即可阅读

应用上云 2 小时烧掉近 50 万,创始人:差点破产,简直噩梦


InfoQ 读者交流群上线啦!各位小伙伴可以扫描下方二维码,添加 InfoQ 小助手,回复关键字“进群”申请入群。回复“资料”,获取资料包传送门,注册 InfoQ 网站后,可以任意领取一门极客时间课程,免费滴!大家可以和 InfoQ 读者一起畅所欲言,和编辑们零距离接触,超值的技术礼包等你领取,还有超值活动等你参加,快来加入我们吧!




  • 点个在看少个 bug 👇

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存