标准库安全公告 (CVE-2024-43402)

标准库安全公告 (CVE-2024-43402)

💡 原文英文,约400词,阅读约需2分钟。
📝

内容提要

Rust安全响应WG披露了CVE-2024-24576,即在Windows上调用批处理文件时,std::process::Command在转义参数时出现错误。修复不完整的严重性较低,需要特定条件才能触发。受影响的版本是所有1.81.0之前的Rust版本。

🔎

延伸解读

触发条件与风险场景

要触发此不完整修复的漏洞,需同时满足多个条件:在Windows上调用批处理文件、文件名末尾包含空格或句点、并向其传递不受信任的参数。Windows在解析路径时会自动去除末尾的空格和句点,导致原始修复的检查被绕过。尽管CVSS评分可能较高,但实际利用门槛较高,因此严重性被评定为低。

临时缓解措施

若你使用Rust 1.77.2或更高版本且受此问题影响,可以手动去除批处理文件名末尾的空格(ASCII 0x20)和句点(ASCII 0x2E),从而绕过不完整的修复并启用原有的CVE-2024-24576缓解措施。这是一种临时应对方案,适用于无法立即升级Rust版本的情况。

版本影响与修复计划

所有低于1.81.0的Rust版本均受影响,但仅当代码或依赖在Windows上调用名称末尾带空格或句点的批处理脚本并传入不受信任参数时才会触发。Rust 1.81.0计划于2024年9月5日发布,届时标准库将更新,对所有批处理文件调用应用CVE-2024-24576的缓解措施,无论文件名末尾字符如何。

❓

Q&A

CVE-2024-24576是什么问题?

CVE-2024-24576涉及在Windows上调用批处理文件时,std::process::Command错误转义参数的问题。

CVE-2024-43402的严重性如何?

CVE-2024-43402的严重性较低,因为需要特定条件才能触发不完整的修复。

如何绕过CVE-2024-24576的不完整修复?

如果使用Rust 1.77.2或更高版本,可以通过去除批处理文件名末尾的空格和句点来绕过不完整的修复。

受影响的Rust版本有哪些?

所有1.81.0之前的Rust版本都受到影响。

Rust 1.81.0的发布计划是什么?

Rust 1.81.0计划于2024年9月5日发布,将更新标准库以应用CVE-2024-24576的缓解措施。

谁负责披露CVE-2024-24576漏洞?

Kainan Zhang负责地向Rust安全响应WG披露了CVE-2024-24576漏洞。

🏷️

标签

➡️

继续阅读