Canonical 的 Ubuntu 25.10 將默認(rèn)采用 sudo-rs——一個(gè)基于 Rust 重寫經(jīng)典 sudo 工具的版本,作為減少內(nèi)存相關(guān)安全漏洞并強(qiáng)化核心系統(tǒng)組件的舉措之一。
當(dāng)該版本于 2025 年 10 月 9 日發(fā)布時(shí),使用 Ubuntu Linux 的用戶將體驗(yàn)到更小的攻擊面,同時(shí)對(duì)系統(tǒng)安全性的信心也會(huì)有所增強(qiáng)。
sudo 是類 Unix 系統(tǒng)上的命令行工具,允許經(jīng)授權(quán)的用戶以更高權(quán)限(通常為 root)執(zhí)行命令。此次采用 Rust 語言進(jìn)行重寫的目的在于確保該工具具備內(nèi)存安全性。
內(nèi)存安全代碼可以避免緩沖區(qū)溢出、堆溢出以及釋放后使用等漏洞,而這些漏洞正構(gòu)成了大多數(shù)嚴(yán)重軟件漏洞的主要來源。因此,美國政府的 CISA 以及 Microsoft 的 Mark Russinovich 等安全監(jiān)管者在過去幾年中持續(xù)敦促開發(fā)者使用能夠提供內(nèi)存安全保證的編程語言(如 Rust、Go 和 C#)來構(gòu)建新項(xiàng)目,并在部分情況下重寫已有項(xiàng)目。
互聯(lián)網(wǎng)安全研究組 (ISRG) 的 Prossimo 項(xiàng)目早在 2020 年就啟動(dòng)了這些基于 Rust 重寫工作的進(jìn)程。作為回應(yīng),我們看到了諸如 sudo-rs 的努力,該項(xiàng)目得到了 AWS 的資助支持。
Rust 在 Linux 維護(hù)者社區(qū)中雖備受推崇,卻也存在爭議,這對(duì)長期依賴 C 和 C++ 的維護(hù)者構(gòu)成了挑戰(zhàn),因?yàn)檫@兩種語言無法提供同等的內(nèi)存安全保障。如果 C 和 C++ 社區(qū)不能找到萬無一失的方法以滿足內(nèi)存安全要求——盡管已有項(xiàng)目致力于此——那么使用這些語言的開發(fā)者將不得不花更多時(shí)間在維護(hù)甚至逐步淘汰上,而非專注于開發(fā)。
sudo 確實(shí)存在嚴(yán)重的內(nèi)存安全漏洞,sudo-rs 重寫項(xiàng)目的首席工程師 Marc Schoolderman 指出,并引用了由 C 語言版 sudo 開發(fā)者 Todd Miller 維護(hù)的漏洞列表。
Schoolderman 向 The Register 表示:“第一頁就列出了多個(gè)內(nèi)存安全漏洞(包括緩沖區(qū)溢出、堆溢出或者重復(fù)釋放內(nèi)存等問題),其中最早的一個(gè)可以追溯到 2001 年,當(dāng)時(shí)在 Phrack 上以‘Vudo’這樣風(fēng)趣的名稱發(fā)布,當(dāng)時(shí)就極為生動(dòng)地展示了攻擊者如何在僅有有限權(quán)限的系統(tǒng)上取得完全控制。”
他接著表示:“近期的一個(gè)典型案例是 2021 年由安全公司 Qualys 發(fā)現(xiàn)的 ‘Baron Samedit’ 漏洞,它同 ‘Vudo’ 一樣,會(huì)導(dǎo)致失控的特權(quán)升級(jí)。網(wǎng)上有許多相關(guān)網(wǎng)站和 YouTube 視頻對(duì)此進(jìn)行了解釋;該漏洞編號(hào)為 CVE-2021-3156。”
Trifecta Tech Foundation 在一篇博客中表示:“選擇采用 sudo-rs 符合 Canonical 致力于通過采用 Rust 來切實(shí)而有目的地提升關(guān)鍵系統(tǒng)軟件韌性的承諾。Rust 是一門擁有強(qiáng)內(nèi)存安全保證的編程語言,其消除了長期以來困擾傳統(tǒng)基于 C 的軟件的諸多漏洞。”
Trifecta Tech Foundation 主席 Erik Jonkers 向 The Register 表示:“當(dāng)然,還有其他關(guān)鍵工具,但 sudo 是最為核心的之一;它在幾乎所有支撐互聯(lián)網(wǎng)的開源操作系統(tǒng)中負(fù)責(zé)調(diào)控關(guān)鍵特權(quán)邊界。”
他說:“這一點(diǎn),加上 AWS 愿意資助這項(xiàng)工作,是 ISRG 的 Prossimo 項(xiàng)目選擇它的原因。對(duì) AWS 來說,盡可能地采用內(nèi)存安全代碼,比如在 Amazon Linux 中,非常具有價(jià)值。而 AWS 以及如今對(duì)提高產(chǎn)品安全性充滿興趣的 Canonical 提供的支持,再加上開源社區(qū)的積極反饋,都證明大家對(duì) sudo 的安全性非常關(guān)心。”
Jonkers 還指出,其他關(guān)鍵組件如 zlib-rs 和 ntpd-rs 已分別被 Firefox 和 Let's Encrypt 采納。
第一版穩(wěn)定的 sudo-rs 于 2023 年 8 月底發(fā)布,此后該工具已被 Chainguard 面向容器的 Linux 發(fā)行版 Wolfi Linux OS,以及重視安全的發(fā)行版如 NixOS 和 AerynOS 采用,同時(shí)也被打包到 Debian、Fedora 和 Ubuntu 中。
正如 The Register 兩個(gè)月前報(bào)道的那樣,Canonical 工程副總裁 Jon Seager 認(rèn)為默認(rèn)采用 sudo-rs 是有價(jià)值的。他解釋道:“雖然性能對(duì)我來說非常重要,但這次變更的主要?jiǎng)恿Σ⒎切阅芤蛩亍_@些工具處于發(fā)行版的核心,而利用 Rust 重寫所實(shí)現(xiàn)的韌性和安全性增強(qiáng)才是我更看重的。”
為了評(píng)估這些基于 Rust 的新工具,Seager 協(xié)助創(chuàng)建了一個(gè)名為 oxidizr 的項(xiàng)目,該項(xiàng)目簡化了在 Ubuntu 系統(tǒng)上用現(xiàn)代 Rust 工具替換傳統(tǒng) Unix 工具的過程。目前,oxidizr 可用于替換 uutils coreutils、findutils 和 diffutils,以及 sudo-rs。
Jonkers 表示:“要想實(shí)現(xiàn)顯著改進(jìn)還需要一定時(shí)間。目前市場(chǎng)在防御性安全、網(wǎng)絡(luò)安全等方面的關(guān)注度較高。
“從 Google 關(guān)于 Android 轉(zhuǎn)型的報(bào)告中可以看出,其影響,連同成本節(jié)省,都是巨大的。CISA 將不安全的內(nèi)存語言標(biāo)記為不良實(shí)踐,無疑是朝著正確方向邁進(jìn)了一步。在歐洲,我們正與主權(quán)科技機(jī)構(gòu)共同努力,將內(nèi)存安全納入‘安全設(shè)計(jì)’政策。雖然這一轉(zhuǎn)型過程需要時(shí)間,但我堅(jiān)信進(jìn)展正在不斷推進(jìn)。”