Rust 中 sudo 和 su 的实现旨在提高这些实用程序的安全性。
三个月前,我们曾在博客上分享了ISRG创建“Sudo-rs”项目的消息。ISRG是Let's Encrypt项目的发起者,致力于推动提高互联网安全性的技术发展。
在那篇出版物中,我们分享了该项目的一些细节和特点,该项目基本上旨在用 Rust 创建 SUDO 和 SU 实用程序的实现(您可以通过以下链接查阅该出版物)。
sudo-rs 的第一个稳定版本
之所以提到这一点,是因为 Sudo-rs 项目的第一个稳定版本最近发布了,Ferrous Systems 和 Tweede Golf 的工程师参与了该项目的开发,资金由 Google、Cisco 和 Amazon Web Services 提供。
对于那些不熟悉“Sudo-rs”项目的人,我可以告诉你们,它的目的是开发 Rust 版本的 SUDO 和 SU 实用程序,旨在代表其他用户执行命令,因为 SUDO 是类 Unix 操作系统中的一个控制台实用程序,用于以其他用户的权限(默认情况下是 root 超级用户)执行命令。
`sudo-rs` 中的 `sudo` 和 `su` 函数完全使用 Rust 编写。Rust 是一种在业界使用和推荐度日益提高的语言,它已成为 Android 的主要编程语言之一,甚至在 Linux 内核中也被支持作为辅助编程语言。微软方面也曾多次表示有意重写内核及其包含的部分 Windows 库。
文中提到,这些实用程序尽可能与传统的 SUDO 和 SU 实用程序兼容,使得sudo-rs 能够在符合 Ubuntu 和 Debian 默认 /etc/sudoers 配置的典型场景中,作为 SUDO 的透明替代方案。为了提供最高级别的安全性,Wolfi Linux 发行版已经用 sudo-rs 取代了传统的 SUDO 软件包。
使用 Rust 语言开发 SU 和 SUDO旨在降低因不安全的内存处理而导致的漏洞风险,并消除诸如在内存区域被释放后访问该区域以及在缓冲区边界处内存不足等错误。
此外,为了确保适当的安全级别,该项目开发了一套扩展的测试套件,该套件还可以监控与原始 sudo 工具的兼容性维护情况。为了减少 sudo-rs 的攻击面和潜在漏洞数量,项目决定放弃实现很少使用的 sudo 功能。
与 SUDO 的区别在于,它默认包含 use_pty 模式;一些尚未实现的功能包括 mail_badpass以及与 sendmail 的兼容性;而一些尚未实现但将来会添加的功能包括:sudoedit 工具、NOEXEC 和 NOINTERCEPT 模式、支持将“默认”配置块链接到单个用户和命令、以及无需使用 PAM 即可进行身份验证。
值得一提的是,在 XNUMX 月份,预计能够确认实施的质量,并且还计划对 sudo-rs 代码库进行独立审计。
此外,据称第二版计划添加多用户环境下的工具,例如 NOEXEC 模式、审计日志、sudoers映射主机功能以及对最多 16 个用户组的支持。第三版计划兼容Fedora 中使用的sudoers配置,并将添加sudoedit工具,并利用 SELinux 和 AppArmor 机制来增强安全性。
最后,如果您有兴趣了解更多相关信息,可以点击以下链接查看详情。