Sudo-rs 帮我做个三明治,请防范缓冲区溢出

文章介绍 Canonical 的 Ubuntu 25.10 默认集成由 Rust 重写的 sudo 工具 sudo-rs,以提升内存安全性并减少缓冲区溢出等漏洞风险。

Canonical 的 Ubuntu 25.10 将默认采用 sudo-rs——一个基于 Rust 重写经典 sudo 工具的版本,作为减少内存相关安全漏洞并强化核心系统组件的举措之一。

当该版本于 2025 年 10 月 9 日发布时,使用 Ubuntu Linux 的用户将体验到更小的攻击面,同时对系统安全性的信心也会有所增强。

sudo 是类 Unix 系统上的命令行工具,允许经授权的用户以更高权限(通常为 root)执行命令。此次采用 Rust 语言进行重写的目的在于确保该工具具备内存安全性。

内存安全代码可以避免缓冲区溢出、堆溢出以及释放后使用等漏洞,而这些漏洞正构成了大多数严重软件漏洞的主要来源。因此,美国政府的 CISA 以及 Microsoft 的 Mark Russinovich 等安全监管者在过去几年中持续敦促开发者使用能够提供内存安全保证的编程语言(如 Rust、Go 和 C#)来构建新项目,并在部分情况下重写已有项目。

互联网安全研究组 (ISRG) 的 Prossimo 项目早在 2020 年就启动了这些基于 Rust 重写工作的进程。作为回应,我们看到了诸如 sudo-rs 的努力,该项目得到了 AWS 的资助支持。

Rust 在 Linux 维护者社区中虽备受推崇,却也存在争议,这对长期依赖 C 和 C++ 的维护者构成了挑战,因为这两种语言无法提供同等的内存安全保障。如果 C 和 C++ 社区不能找到万无一失的方法以满足内存安全要求——尽管已有项目致力于此——那么使用这些语言的开发者将不得不花更多时间在维护甚至逐步淘汰上,而非专注于开发。

sudo 确实存在严重的内存安全漏洞,sudo-rs 重写项目的首席工程师 Marc Schoolderman 指出,并引用了由 C 语言版 sudo 开发者 Todd Miller 维护的漏洞列表。

Schoolderman 向 The Register 表示:“第一页就列出了多个内存安全漏洞(包括缓冲区溢出、堆溢出或者重复释放内存等问题),其中最早的一个可以追溯到 2001 年,当时在 Phrack 上以‘Vudo’这样风趣的名称发布,当时就极为生动地展示了攻击者如何在仅有有限权限的系统上取得完全控制。”

他接着表示:“近期的一个典型案例是 2021 年由安全公司 Qualys 发现的 ‘Baron Samedit’ 漏洞,它同 ‘Vudo’ 一样,会导致失控的特权升级。网上有许多相关网站和 YouTube 视频对此进行了解释;该漏洞编号为 CVE-2021-3156。”

Trifecta Tech Foundation 在一篇博客中表示:“选择采用 sudo-rs 符合 Canonical 致力于通过采用 Rust 来切实而有目的地提升关键系统软件韧性的承诺。Rust 是一门拥有强内存安全保证的编程语言,其消除了长期以来困扰传统基于 C 的软件的诸多漏洞。”

Trifecta Tech Foundation 主席 Erik Jonkers 向 The Register 表示:“当然,还有其他关键工具,但 sudo 是最为核心的之一;它在几乎所有支撑互联网的开源操作系统中负责调控关键特权边界。”

他说:“这一点,加上 AWS 愿意资助这项工作,是 ISRG 的 Prossimo 项目选择它的原因。对 AWS 来说,尽可能地采用内存安全代码,比如在 Amazon Linux 中,非常具有价值。而 AWS 以及如今对提高产品安全性充满兴趣的 Canonical 提供的支持,再加上开源社区的积极反馈,都证明大家对 sudo 的安全性非常关心。”

Jonkers 还指出,其他关键组件如 zlib-rs 和 ntpd-rs 已分别被 Firefox 和 Let's Encrypt 采纳。

第一版稳定的 sudo-rs 于 2023 年 8 月底发布,此后该工具已被 Chainguard 面向容器的 Linux 发行版 Wolfi Linux OS,以及重视安全的发行版如 NixOS 和 AerynOS 采用,同时也被打包到 Debian、Fedora 和 Ubuntu 中。

正如 The Register 两个月前报道的那样,Canonical 工程副总裁 Jon Seager 认为默认采用 sudo-rs 是有价值的。他解释道:“虽然性能对我来说非常重要,但这次变更的主要动力并非性能因素。这些工具处于发行版的核心,而利用 Rust 重写所实现的韧性和安全性增强才是我更看重的。”

为了评估这些基于 Rust 的新工具,Seager 协助创建了一个名为 oxidizr 的项目,该项目简化了在 Ubuntu 系统上用现代 Rust 工具替换传统 Unix 工具的过程。目前,oxidizr 可用于替换 uutils coreutils、findutils 和 diffutils,以及 sudo-rs。

Jonkers 表示:“要想实现显著改进还需要一定时间。目前市场在防御性安全、网络安全等方面的关注度较高。

“从 Google 关于 Android 转型的报告中可以看出,其影响,连同成本节省,都是巨大的。CISA 将不安全的内存语言标记为不良实践,无疑是朝着正确方向迈进了一步。在欧洲,我们正与主权科技机构共同努力,将内存安全纳入‘安全设计’政策。虽然这一转型过程需要时间,但我坚信进展正在不断推进。” 

来源:The Register

0赞

好文章,需要你的鼓励

2025

05/09

11:42

分享

点赞

邮件订阅