摘要
Rust标准库中发现的一个重大安全缺陷 'BatBadBut',使得Windows系统面临被攻击的风险。
有关该漏洞的信息标记为CVE-2024-24576,其CVSS(通用漏洞评分系统)评分达到 10.0,这表明该漏洞极其严重。然而,它仅在使用不受信任的参数调用Windows批处理文件的场景中产生影响。
“当使用 Command API 在Windows上调用带有 bat 和 cmd 扩展名的批处理文件时,Rust标准库并没有正确处理转义参数,”Rust 安全响应小组在2024年4月9日发布的警告中表示。
“如果攻击者能够控制传递给子进程的参数,那么他就可以通过绕开转义的方式执行任意的shell命令。”所有在1.77.2之前版本的Rust都受到了这个问题的影响。
安全研究员RyotaK因发现并向计算机紧急响应团队协调中心(CERT/CC)报告该漏洞而被认可。RyotaK指出,这个漏洞——被命名为BatBadBut——影响了多个编程语言,当编程语言封装了Windows内的CreateProcess函数并为命令参数增加了转义机制时,该问题就会发生。
鉴于不是所有的编程语言都处理了这个问题,开发者在Windows上执行命令时需保持警惕。
RyotaK向用户提出的建议是:“为了防止批处理文件被意外执行,您应该考虑将这些文件移到一个不在PATH环境变量中的目录。”
“采取这一措施,除非指定了批处理文件的完整路径,否则就不会意外地执行这些批处理文件。”