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篇文章

参考资料

相关推荐
维维酱18 分钟前
Rust - 读写锁 (RwLock)
rust
Source.Liu20 分钟前
【PhysUnits】15.17 比例因子模块 (ratio.rs)
rust
UestcXiye2 小时前
Rust 学习笔记:关于智能指针的练习题
rust
恰薯条的屑海鸥3 小时前
零基础在实践中学习网络安全-皮卡丘靶场(第十四期-XXE模块)
网络·学习·安全·web安全·渗透测试
20242817李臻3 小时前
20242817李臻-安全文件传输系统-项目验收
数据库·安全
DevSecOps选型指南11 小时前
2025软件供应链安全最佳实践︱证券DevSecOps下供应链与开源治理实践
网络·安全·web安全·开源·代码审计·软件供应链安全
ABB自动化11 小时前
for AC500 PLCs 3ADR025003M9903的安全说明
服务器·安全·机器人
恰薯条的屑海鸥12 小时前
零基础在实践中学习网络安全-皮卡丘靶场(第十六期-SSRF模块)
数据库·学习·安全·web安全·渗透测试·网络安全学习
阿部多瑞 ABU13 小时前
主流大语言模型安全性测试(三):阿拉伯语越狱提示词下的表现与分析
人工智能·安全·ai·语言模型·安全性测试
moongoblin15 小时前
行业赋能篇-2-能源行业安全运维升级
运维·安全·协作