Windows中Rust标准库发现“BatBadBut”漏洞


在 Rust 标准库中发现了一个名为 "BatBadBut "的严重安全漏洞,影响 Windows 上 1.77.2 之前的所有版本。该漏洞被认定为 CVE-2024-24576,CVSS 得分为 10.0,允许攻击者在使用 Command API 调用批处理文件时绕过转义机制执行任意 shell 命令。

该问题源于 cmd.exe 的复杂解析规则:

  • cmd.exe 是 Windows 上的命令提示符,在执行批处理文件时会隐式生成。
  • Rust 标准库未能正确转义 cmd.exe 的命令参数,从而导致潜在的命令注入。

Rust 安全团队承认,标准库中现有的转义逻辑不够充分,使得恶意参数有可能绕过转义,导致任意 shell 执行。如果在 Windows 上调用批处理文件时传递了不受信任的参数,那么 "BatBadBut "漏洞的严重性将被视为危急。

需要注意的是,该漏洞仅影响在 Windows 上运行的 Rust 代码,这些代码使用不受信任的参数执行批处理文件。 Windows 上的其他平台或使用不受影响。

为了解决“BatBadBut”漏洞,Rust 团队发布了版本 1.77.2,其中包含该问题的修复程序。

强烈建议在 Windows 上使用 Rust 的开发人员尽快更新至 1.77.2 版,以降低潜在命令注入攻击的风险。在将不受信任的输入作为参数传递给批处理文件之前,确保对其进行适当验证和消毒至关重要。