14

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

 3 years ago
source link: https://mp.weixin.qq.com/s?__biz=MjM5MDE0Mjc4MA%3D%3D&%3Bmid=2651068024&%3Bidx=1&%3Bsn=790c045b7ab5f477ae1dcf2c2ecd564e
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

3mQNVje.gif!mobile

编译 | Tina

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

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

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

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

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

n2mEfeN.png!mobile

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

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

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

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

j6bquqe.png!mobile

谷歌大力推广 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

今日荐文

点击下方图片即可阅读

Er2aEz2.jpg!mobile

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

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

fMF3qm.png!mobile

  • euei6nY.gif!mobile

    点个在看少个 bug :point_down:


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK