Rust 资讯:Rust 1.77.2 发布,修复 Windows 上一个高危漏洞

Rust 发布了 1.77.2 版本,属于小版本更新,最主要升级是发布了一个重要的标准库安全补丁,本次升级 Blog 由 The Rust Security Response WG(安全响应工作组团队)发布,以往都是 The Rust Release Team(发布团队),可见端倪。

关于CVE-2024-24576 漏洞:

Rust 最主要的优势就是安全,但这并不代表该编程语言就没有漏洞。安全专家近日发现了追踪编号为 CVE-2024-24576 的漏洞,攻击者可以利用 Rust 标准库中的漏洞通过命令注入攻击 Windows 系统。 该漏洞是由于操作系统命令和参数注入缺陷造成的,攻击者可在操作系统上执行潜在的恶意命令。

GitHub 已将此漏洞评为"严重",最高 CVSS 基线得分为 10/10。未经身份验证的攻击者可以在无需用户交互的情况下以低复杂度的攻击远程利用此漏洞。

Rust 安全响应工作组获悉,1.77.2 版之前的 Rust 标准库在使用"Command"在 Windows 上调用批处理文件(带有"bat"和"cmd"扩展名)时,无法正确转义参数。能够控制传递给生成进程的参数的攻击者可以通过绕过转义来执行任意 shell 命令。对于那些在 Windows 上使用不受信任的参数调用批处理文件的人来说,此漏洞的严重性至关重要。但不影响其他平台或使用。

Command::argCommand::args API 在其文档中声明,无论参数的内容如何,参数都将按原样传递给生成的进程,并且不会由 shell 进行评估。这意味着将不受信任的输入作为参数传递应该是安全的。在 Windows 上,其实现比其他平台更复杂,因为 Windows API 仅提供一个包含派生进程的所有参数的单个字符串,并且由派生进程来分割它们。大多数程序使用标准 C 运行时 argv参数,这实际上会导致参数分割方式基本一致。但一个例外是"cmd.exe"(用于执行批处理文件),它有自己的参数分割逻辑。这迫使标准库对传递给批处理文件的参数实现自定义转义。不幸的是,Rust 的转义逻辑不够彻底,有可能传递恶意参数,导致任意的 shell 命令可以执行。由于"cmd.exe"的复杂性,Rust 团队暂时没有找到在所有情况下都能正确转义参数的解决方案。因此,他们必须提高失控代码的可靠性并修改 Command API。如果命令 API 在创建进程时无法安全地转义参数,则会返回InvalidInput错误。该修复包含在 Rust 1.77.2 中。

Rust 安全响应工作组补充道:"要注意批处理文件的新转义逻辑在保守方面会出错,并且可能会拒绝有效参数。如果您自己实现转义或仅处理受信任的输入,那么在 Windows 上您还可以使用CommandExt::raw_arg方法来绕过标准库转义逻辑。"

具体原因

简单的说就是 Rust 的 std::process::Command 没有正确转义 Windows 上批处理文件的参数。

1.77.2 之前的版本,在 Windows 上使用命令 API 调用批处理文件(带有 bat 和 cmd 扩展名)时,Rust 标准库没有正确转义参数。这会造成的可怕的影响,那就是攻击者可以控制传递到生成进程的参数,然后绕过转义来执行任意的 shell 命令(Commands),在 Windows 上调用批处理文件时使用的是不可信任的参数,因此该漏洞是个非常高危的漏洞。不过好在其他平台或使用不受影响。

鉴于如此高危漏洞,Rust 安全响应工作组随后发布安全公告。随即发布了 1.77.2 标准库安全补丁,修复了存在于 Windows 系统上的问题,并表示其它平台或者用途不受影响。

注:如果对细节感兴趣,推荐阅读下面2篇文章

参考资料

相关推荐
_小猪沉塘4 小时前
L11&12&13 【哈工大_操作系统】内核级线程&内核级线程实现&操作系统之“树”
操作系统
网络研究院6 小时前
Android 安卓内存安全漏洞数量大幅下降的原因
android·安全·编程·安卓·内存·漏洞·技术
姜学迁9 小时前
Rust-枚举
开发语言·后端·rust
凌云行者9 小时前
rust的迭代器方法——collect
开发语言·rust
l1x1n011 小时前
No.2 笔记 | 网络安全攻防:PC、CS工具与移动应用分析
安全·web安全
醉颜凉13 小时前
银河麒麟桌面操作系统V10 SP1:取消安装应用的安全授权认证
运维·安全·操作系统·国产化·麒麟·kylin os·安全授权认证
QMCY_jason16 小时前
Ubuntu 安装RUST
linux·ubuntu·rust
小小工匠17 小时前
Web安全 - 路径穿越(Path Traversal)
安全·web安全·路径穿越
不灭锦鲤19 小时前
ssrf学习(ctfhub靶场)
网络·学习·安全
碳苯20 小时前
【rCore OS 开源操作系统】Rust 枚举与模式匹配
开发语言·人工智能·后端·rust·操作系统·os