0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

首个Rust版sudo发布!

Linux爱好者 来源:51CTO技术栈 2023-09-01 15:59 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

大家对于sudo命令太熟悉了,这个实用又危险的命令,甚至衍生出了“sudo rm -rf”类似的Linux圈的流行梗。近年来,sudo命令已经被一些开发组织盯上,开始了安全重构。现在,已经有Linux发行版本开始用上了诸如Rust等内存安全的语言重写过的sudo命令。

好消息是,就在今天,Rust版本的sudo出道了!互联网安全研究小组(ISRG)的Prossimo项目刚刚宣布了sudo-rs的第一个稳定版本。

用Rust重写的sudo到底有什么不同?目前进展如何?本文这就带领诸君一览首个用Rust重构的内存安全版的sudo -rs项目。

内存安全的sudo首个稳定版本 近两年,“内存安全软件”已经被美国政府机构提上了安全议程。而早在今年5月,就有报道称Prossimo正计划将sudo从C移植到Rust的说法。 在无处不在的 Linux 操作系统中,sudo 实用程序是工程师跨越用户和管理帐户之间隐私边界的最常用方法之一。因此,其安全性至关重要。 sudo-rs项目则是用 Rust 编写的 sudo 和 su 的、面向安全和内存安全的实现。官网声明中显示,sudo-rs 目前仅针对基于 Linux 的操作系统;运行 sudo-rs 需要 Linux 内核 5.9 或更高版本。

3677427a-487b-11ee-97a6-92fbcf53809c.png

sudo-rs 是用 Rust 编写的。所需的最低 Rust 版本是 1.70。如果所用的Linux 发行版未打包该版本(或更高版本),可以通过rustup安装最新版本。此外,开发者还需要 PAM 的 C 开发文件(比如在 Debian上的libpam0g-dev、Fedora上的pam-devel等)。

安装依赖项后,构建 sudo-rs 就变得简单了:

cargo build --release

这会产生一个二进制文件target/release/sudo。但是,此二进制文件必须设置 setuid 标志,并且必须由 root 用户拥有,才能提供任何有用的功能。同时,sudo-rs 需要 sudoers 配置文件。如果sudoers 配置文件存在,则将从该文件加载,否则将使用/etc/sudoers-rs原始位置。

与C版sudo有何不同?

sudo-rs 支持的功能比 sudo 少。其中一些是设计使然。在大多数情况下,如果你尝试不支持的操作(例如,使用未实现的配置标志或命令行选项),你将收到明显的错误。除上述情况外,用户配置/etc/sudoers需要注意:

(1)use_pty默认情况下启用,可禁用。

(2)env_reset被忽略——这总是启用的。

(3)visiblepw被忽略——这始终被禁用。

(4)verifypw目前被忽略;始终需要密码sudo -v。

(5)mail_badpass、always_set_home、always_query_group_plugin和 match_group_by_gid不适用于该版本的实现,但出于兼容性原因而被忽略。

其他一些需要注意的显著的限制:

(1)部分功能尚不支持,特别是使用和sudoedit,以及防止 shell 逃逸时的NOEXEC和NOINTERCEPT。

(2)Defaults(尚)不支持用于更细粒度控制的每用户、每命令、每主机sudoers 条目。

(3)此时 sudo-rs 始终使用 PAM 进行身份验证,你的系统必须设置为 PAM。

(4)sudo-rs 将使用sudo服务配置。这也意味着资源限制、umask 等必须通过 PAM 配置,而不是通过 sudoers 文件。

sudo-rs 将不包括原始 sudo 的 sendmail 支持。sudoers 文件必须是有效的 UTF-8。如果你发现缺少原始 sudo 的常见用例,请在我们的问题跟踪器中为其创建功能请求。

为什么要重写sudo?

其实,原始的sudo已经变得相对不安全了。最早的sudo开发始于 1980 年代(早于GNU/Linux的发布),几十年来,它已经成为在执行更改的同时将操作系统的风险降到最低的一个基本的命令工具。但因为它是 C 语言编写的,近些年来时不时就会曝出一些错误或漏洞,而这其中有专业分析估计有三分之一的安全错误都是内存管理问题。

另外,sudo有许多不常用的功能,也会为安全风险带来更多的攻击面。为此,使用Rust重写后的sudo -rs项目则大大提高了原始sudo的安全性:

(1)使用内存安全语言 (Rust),解决因内存管理而产生的的内存方面的安全错误问题;

(2)省略不常用的功能以减少攻击面;

(3)开发一个广泛的测试套件,甚至设法找到原始 sudo 中的错误。

已经有Linux发版采用了!

早在今年1月,就有企业宣布推出了内存安全版的Linux系统:Wolfi Linux,宣称能从根本上杜绝大量已知软件漏洞。而有意思的是,这家企业:Chainguard 的首席执行官 Dan Lorenc 表示,并不是完全由内存安全语言编写的,而是一个组合——“Wolfi 是使用以内存安全语言编写的新库和不安全语言编写的库的组合开发的,是内存安全的系统级实现。”

此外,Chainguard 还与互联网安全研究小组 (ISRG) 合作,为 Wolfi 创建了一个 Rustls TLS 库,可用作 libcurl 中的默认后端。所有 curl 镜像或任何其他依赖于 curl 的镜像都能够利用 Wolfi 的内存安全属性。

sudo -rs的初衷与Wolfi Linux所致力的内存安全方向完全一致,因此,Wolfi Linux系统已经可以使用 sudo -rs命令。Dan Lorenc 表示:“当我们第一次着手构建 Wolfi 时,确保内存安全始终是首要任务。”

相信之后也会有不少打算与Rust兼容的发行版也会渐渐采用sudo -rs。

开发团队的阵容也相当硬核

首先,该项目是互联网安全研究小组 (ISRG) 的 Prossimo 项目发起的,目的是为了保护关键软件的内存安全性。当时选择Rust来“保护”Sudo,也是因为sudo完美地契合以下四个条件:

(1)使用非常广泛(几乎每个服务器 / 客户端都在使用)

(2)被应用于重要的安全边界

(3)执行关键功能

(4)是否使用了内存不安全的语言编写(例如 C、C++、asm)

其次,其实这个项目早在今年5月份就有报道,Ferrous Systems 和 Tweede Golf 都是致力于软件安全的公司,前者有着非常丰富经验的Rust大神坐镇,服务了诸如mozilla、安卓等全球知名的项目;后者公司的大佬则开发过许多的开源工具包,诸如Node.js、Rust&Embedded Rust、Go、React、Symfony和Flutter,以及操作端的Docker、Ansible和Kubernetes等等。可谓实力不俗。

368c258c-487b-11ee-97a6-92fbcf53809c.png

最后,我们从项目的官网上也可以看到,亚马逊为这个项目提供了资金支持,并表示支持想内存安全软件的过渡。

值得一提的是,就连最初的基于 C 的 sudo 实用程序的维护者Todd C. Miller也参与了进来, Todd 也抽出时间为该项目提供了有关实施 sudo-rs 方面的中肯建议。

接下来计划:增加企业功能、更多发版支持

但启动这个项目要更早,是在2022年的12月份就已经启动。现在sudo-rs这个项目将获得了里程碑式的成果,从即将到来的9月份开始,这个联合开发团队将开始 2023 年 9 月的里程碑 4我们的工作计划,主要是围绕企业功能展开,比如多用户系统的安全功能(例如NOEXEC)、审核跟踪日志、sudoers的主机名匹配、支持16个以上的用户组(group_file插件)等。

36c70c92-487b-11ee-97a6-92fbcf53809c.png

第五个里程碑则可能更为诸位所期待:除了Debian/Ubuntu以外的发行版以外,Fedora版本也将提供支持,SELinux和AppArmor支持、sudoedit实现等等。

写在最后:Linux面临的安全债

Linux现在无处不在,但并不意味着万事大吉。

在Lorenc 看来,开发 “内存安全版” Linux 系统意义重大,目的在于提供一个更安全的平台来保护严重依赖 Linux 来部署应用程序的软件供应链,今天在非内存安全平台上开发应用程序是不负责任的。

“sudo utility是安全关键工具的完美示例,它既普遍应用又未被充分重视。对此类工具的安全性改进将对整个行业产生巨大影响。构建第一个 sudo-rs 版本的工作通过采用 Rust 等内存安全语言,在消除潜在安全问题方面迈出了一大步。这对于维护和维护 Wolfi 作为想要解决大多数现代供应链威胁的开发人员的默认安全基础至关重要。” 这位ChainGuard 创始人非常看好sudo-rs。

与此同时,绝大多数安全漏洞都可以追溯到涉及应用程序如何访问内存的问题。然后,网络罪犯利用这些漏洞发起攻击,例如,利用缓冲区溢出来访问数据等等。

而包括Linux之父在内的维护者们,也已经开始接受 Rust 作为 C 的替代品,来消除 Linux 内核中的这些类型的漏洞。

虽然,这些遗留代码数以万亿计,现在看起来是一项难以完成的艰巨任务,但正如同Linus在去年的开源峰会上所做的那样:在声称在6.1版本将Rust合并到主线上的同时,提前给各位打个预防针:

“以防此事搞砸了我又发脾气,先给大家道个歉!”

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11817

    浏览量

    219560
  • 操作系统
    +关注

    关注

    37

    文章

    7439

    浏览量

    129622
  • Rust
    +关注

    关注

    1

    文章

    241

    浏览量

    7651

原文标题:首个 Rust 版 sudo 发布!

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Perforce 静态分析现已正式支持 Rust语言!

    您是否正计划通过 Rust 编程来提升内存安全性,却又担心它无法覆盖所有的安全漏洞?Perforce QAC 和 Klocwork 现在已支持分析 Rust 代码,填补了开源代码检查工具在质量和治理工具链方面的空白。
    的头像 发表于 04-08 15:38 448次阅读
    Perforce 静态分析现已正式支持 <b class='flag-5'>Rust</b>语言!

    瑞为技术参编起草的具身智能领域首个行业标准正式发布

    近日,由中国信息通信研究院牵头、瑞为技术等40多家单位联合参编起草的具身智能领域首个行业标准正式发布,将于6月1日正式实施,标志着具身智能评测迈入“有标可依”的新阶段。
    的头像 发表于 04-01 11:34 390次阅读

    百度秒哒发布全球首个OpenClaw应用开发Skill

    百度秒哒发布全球首个OpenClaw应用开发Skill——“Miaoda App Builder”(秒哒Skill)。这也是业内首次将专业的应用开发能力封装为可供智能体调用的技能包,并将其作为API开放给OpenClaw生态。
    的头像 发表于 03-17 14:39 505次阅读
    百度秒哒<b class='flag-5'>发布</b>全球<b class='flag-5'>首个</b>OpenClaw应用开发Skill

    华为发布业界首个园区L4 ADN解决方案

    MWC 2026 巴塞罗那期间,华为发布业界首个园区 L4 ADN(Autonomous Driving Network,自动驾驶网络)解决方案,开拓自智网络新篇章。德国Müller基础设施 VP Aleksandr Merkinger、华为数据通信产品线园区网络领域总裁
    的头像 发表于 03-04 11:12 596次阅读

    汽车驾驶辅助系统领域首个强制性国家标准发布

    1月28日,一则消息在中国汽车安全领域引发震动:我国汽车驾驶辅助系统领域的首个强制性国家标准《轻型汽车自动紧急制动系统技术要求及试验方法》(GB39901—2025)正式发布,并将于2028年1月1日起实施。
    的头像 发表于 02-05 09:41 725次阅读

    商汤大装置助力上海发布全国规划资源领域首个基础大模型

    近日,上海量子城市空间智能建设年度成果之一——全国规划资源领域首个基础大模型“云宇星空大模型(专业版)”正式发布
    的头像 发表于 12-30 14:38 856次阅读
    商汤大装置助力上海<b class='flag-5'>发布</b>全国规划资源领域<b class='flag-5'>首个</b>基础大模型

    2025开放原子开发者大会旋武开源社区Rust分论坛成功举办

    11月22日,2025开放原子开发者大会——旋武开源社区Rust分论坛在北京顺利召开。论坛以“共建中国Rust生态”为核心主题,汇聚京东、华为、vivo、阿里、毛豆教育、DORA社区及南京大学等企业与学术机构技术专家,及众多Rust
    的头像 发表于 11-27 14:55 810次阅读

    2025开放原子开发者大会旋武社区Rust分论坛即将启幕

    在数字化转型持续深化、系统安全与性能需求愈发迫切的当下,Rust凭借强大的内存安全、高并发性能和卓越的开发者体验,正成为重塑软件开发疆界的关键力量,更是构建下一代可靠高效基础设施的核心选择。11月
    的头像 发表于 11-13 10:00 729次阅读

    RusT-Thread:基于Rust面向资源受限嵌入式设备的操作系统的实践 | 技术集结

    RT-Thread为基础,使用Rust语言重构其内核,形成了全新的RusT-Thread系统。系统采用模块化架构,涵盖内核服务、进程调度、内存管理、线程通信与时钟控制等核心
    的头像 发表于 11-07 17:37 7061次阅读
    <b class='flag-5'>RusT</b>-Thread:基于<b class='flag-5'>Rust</b>面向资源受限嵌入式设备的操作系统的实践 | 技术集结

    华为发布全球首个安心酒店创新孵化基地

    聚焦酒店隐私安全升级,华为安心酒店创新孵化基地发布会在深圳圆满闭幕。会上,来自酒店行业的企业代表、行业组织及科技伙伴齐聚一堂,围绕酒店住客隐私安全深度探讨,共同见证全球首个安心酒店创新孵化基地
    的头像 发表于 10-21 09:48 767次阅读

    RT-Thread 遇上 Rust:安全内核 RusT-Thread 的诞生

    大家好,我们是中国科学技术大学操作系统原理与设计(H)课oooooS小组。这个项目是我们的课程大作业:参考RT-Thread架构,使用Rust搭建一个原生的嵌入式操作系统内核。初识Rust是因为xk
    的头像 发表于 08-02 11:03 3720次阅读
    RT-Thread 遇上 <b class='flag-5'>Rust</b>:安全内核 <b class='flag-5'>RusT</b>-Thread 的诞生

    中汽中心牵头制定的首个网联车辆电磁兼容ISO国际标准发布

    近期,由中国牵头制定的首个网联车辆电磁兼容ISO国际标准《道路车辆 窄带辐射电磁能的抗扰性 V2X辐射抗扰度》(ISO/TR 17716:2025)以技术报告形式正式发布。该标准由中汽中心牵头完成。
    的头像 发表于 07-08 16:47 1646次阅读

    全球首个胃癌影像筛查AI模型发布

    浙江省肿瘤医院联合阿里巴巴达摩院,发布了全球首个胃癌影像筛查AI模型DAMO GRAPE,首次利用平扫CT影像识别早期胃癌病灶,并联合全国20家医院,在近10万人的大规模临床研究中大幅提升胃癌检出率。 相关论文在24日登上了国际顶级期刊《自然·医学》(Nature
    的头像 发表于 06-30 14:37 3976次阅读

    请问OpenVINO™ 是否支持 Rust 绑定?

    无法确定OpenVINO™是否支持 Rust 绑定。
    发表于 06-25 07:45

    联想集团携手合作伙伴发布国内首个文旅行业智能体

    近日,联想集团与新华联文旅、寒舍文旅集团在北京正式签署合作协议,共同发布国内首个文旅行业智能体。此次合作不仅是继武夷山、宜昌联想城市超级智能体成功发布后的又一里程碑,也标志着联想在垂直行业内领域智能体战略的加速扩展,进一步推动了
    的头像 发表于 04-30 09:21 977次阅读