4月9日,Rust安全响应工作组收到通知,Rust标准库在使用Command API在Windows上调用批处理文件(bat和cmd扩展名)时,未能正确转义参数。攻击者能够控制传递给生成进程的参数,通过绕过转义来执行任意shell命令。
该漏洞(CVE-2024-24576,CVSS评分为最高的10分)由安全研究员RyotaK发现并报告,可被未经身份验证的攻击者在远程、低复杂度攻击和无用户交互的情况下利用。
据公告(https://blog.rust-lang.org/2024/04/09/cve-2024-24576.html),在Windows上,如果程序代码或其依赖项调用执行带有不受信任参数的批处理文件,则1.77.2之前的所有Rust版本都会受到影响。其他平台或Windows上的其他用途不受影响。
由于cmd.exe的复杂性,Rust安全团队无法找到一个能在所有情况下正确转义参数的解决方案。因此,他们不得不改进转义代码的健壮性并修改Command API——如果Command API在生成进程时无法安全转义参数,则会返回InvalidInput错误。
Rust安全响应工作组表示会在最新发布的Rust 1.77.2中修复漏洞。另外,“如果您自己实现转义或仅处理受信任的输入,在Windows上您还可以使用CommandExt::raw_arg方法来绕过标准库的转义逻辑。” 工作组补充道。
RyotaK在给用户的建议中说,为了防止批处理文件的意外执行,用户应考虑将批处理文件移动到未包含在PATH环境变量中的目录。——在这种情况下,除非指定完整路径,否则批处理文件将不会被执行。
编辑:左右里
资讯来源:rust官网、securityonline
转载请注明出处和本文链接
球分享
球点赞
球在看