• Rust爆安全漏洞 可对Windows进行命令注入攻击
  • 发布于 1周前
  • 69 热度
    0 评论
  • 卧龙生
  • 1 粉丝 42 篇博客
  •   
攻击者可以利用Rust标准库中的安全漏洞来针对Windows系统进行命令注入攻击。该漏洞是由操作系统命令和参数注入漏洞造成的,攻击者可以在操作系统上执行意想不到的潜在恶意命令。GitHub将此漏洞评为严重程度,使未经身份验证的攻击者可以在不需要用户交互的情况下进行低复杂度的远程攻击。

Rust安全响应工作组表示:“Rust安全响应工作组收到通知,Rust标准库在使用Command API在Windows上调用批处理文件(带有bat和cmd扩展名)时没有正确转义参数造成了这个漏洞。”

攻击者能够控制传递给衍生进程的参数,进而可以通过绕过转义来执行任意shell命令。如果在Windows上使用不受信任的参数调用批处理文件,则此漏洞的严重性非常严重。其他平台没有受到影响。如果程序代码或其依赖项之一调用并执行带有不受信任参数的批处理文件,则Windows上Rust 1.77.2之前的所有版本都会受到影响。

Rust安全团队在处理cmd.exe的复杂性时面临着重大挑战,因为他们无法找到在所有情况下都能正确转义参数的解决方案。因此,他们必须改进转义代码的健壮性并修改Command API。如果Command API在生成进程时不能安全地转义参数,它将返回InvalidInput错误。如果你自己实现转义或者只处理可信的输入,在Windows上也可以使用CommandExt::raw_arg方法来绕过标准库的转义逻辑。

Flatt Security的工程师Ryotak发现了这个漏洞,并将其命名为BatBadBut,他说这个漏洞也会影响以下编程语言——然而,并不是所有的编程语言都发布了补丁:
Erlang(更新)
Go(更新)
Haskell(补丁可用)
Java(未修复)
Node.js(会有补丁)
PHP(将提供补丁)
Python(更新)
Ruby(更新)

Ryotak建议:“为了防止意外执行批处理文件,应该考虑将批处理文件移动到不包含在PATH环境变量的目录中。”
在这种情况下,批处理文件将不会被执行,除非指定了完整的路径,这可以防止批处理文件的意外执行。
用户评论