发布时间:2025-11-04 23:25:04 来源:创站工坊 作者:数据库
日前,编程Rust编程语言的曝出维护者修复了一个编号为 CVE-2022-21658的高危漏洞,该漏洞让攻击者可以从易受攻击的漏洞录系统删除文件和目录。该漏洞影响Rust 1.0.0到Rust 1.58.0,攻击近期发布的轻松Rust 1.58.1版本已修复了该漏洞。

Rust编程语言维护者发布的删除安全公告称:“Rust安全响应工作组已接到通知,获悉 std::fs::remove_dir_all标准库函数易受启用符号链接跟随的文件竞态条件攻击(CWE-363)。攻击者可以利用这个安全问题,和目欺骗特权程序删除攻击者原本无法访问或删除的编程文件和目录。” 安全公告指出std::fs::remove_dir_all已经含有防范递归删除符号链接的曝出机制,但它们并没有正确实施。b2b信息网漏洞录
“遗憾的攻击是,该检查机制在标准库中未正确实施,轻松导致了TOCTOU(Time-of-check Time-of-use)竞态条件。删除标准库不是文件告诉系统别跟随符号链接,而是先检查它要删除的东西是不是符号链接,否则它将继续递归删除目录。这暴露了竞态条件:攻击者可以创建一个目录,并在检查和实际删除之间将该目录换成符号链接。虽然这种攻击在首次尝试时可能不会得逞,但在试验中能够在几秒钟内可靠地执行这种攻击。” Rust 维护者表示。站群服务器
攻击者利用该漏洞的原理是:假设对系统拥有非特权访问权限的攻击者想要删除一个名为sensitive/的系统目录,但他没有操作权限,就可以利用该漏洞,找到一个特权程序来删除其有权访问的目录(名为temp/),创建从temp/foo到sensitive/的符号链接,等待上述特权程序删除foo/。特权程序将跟随从temp/foo到ensitive/的符号链接,同时递归删除,从而导致sensitive/被删除。
参考链接:
https://securityaffairs.co/wordpress/127135/security/rust-programming-language-flaw.html