CVE-2022-21658
rustlang 中 std::fs::remove_dir_all 的竞态条件
- 已发布
- 2022年1月20日
- 已更新
- 2025年4月22日
- 分配 CNA
- GitHub_M
- 观察到的证据
- 2026年8月4日
初级CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:N/I:L/A:H低 · 未来 30 天
- 百分位
- 70.4%
- 型号日期
- 2026年9月21日
EPSS 是统计估计,而不是确定性或影响衡量标准。将其与 CVSS、KEV 状态、暴露程度和您的环境相结合。
总结
Rust 是一种多范式、通用编程语言,专为性能和安全性而设计,尤其是在安全并发方面。Rust 安全响应工作组(Security Response WG)接到通知,标准库函数 `std::fs::remove_dir_all` 存在一个可导致符号链接跟随(symlink following)的竞态条件漏洞(CWE-363)。攻击者可能利用此安全问题,诱骗具有特权的程序删除攻击者原本无法访问或删除的文件和目录。Rust 1.0.0 至 Rust 1.58.0 均受此漏洞影响,其中 1.58.1 包含修复补丁。请注意,以下构建目标没有可用的 API 来妥善缓解该攻击,因此即使使用已打补丁的工具链,它们仍然存在漏洞:macOS 10.10(Yosemite)之前的版本以及 REDOX。我们建议所有人尽快更新至 Rust 1.58.1,尤其是开发预期在特权环境中运行的程序(包括系统守护进程和 setuid 二进制文件)的人员,因为这些程序受此漏洞影响的风险最高。请注意,在调用 `remove_dir_all` 之前在代码库中添加检查并不能缓解该漏洞,因为这些检查本身也容易受到与 `remove_dir_all` 相同的竞态条件影响。现有的缓解措施在非竞态条件下按预期工作。
来源
1cve-2022-21658 的 PoC
负责任的使用
仅在您拥有或有权测试的系统上使用漏洞信息。 Kitploit 链接到公共研究元数据,并且不存储漏洞代码或恶意负载。