Windows 应用程序容易通过“BatBadBut”漏洞进行命令注入

阅读量34843

发布时间 : 2024-04-15 10:42:14

Flatt Security 发现了一个名为“BatBadBut”的严重漏洞,该漏洞可能允许攻击者将恶意命令注入 Windows 应用程序。该漏洞由 Flatt Security 的安全工程师 RyotaK 发现,影响多种编程语言。该事件已报告给 CERT 协调中心,并在 GitHub 上注册为CVE-2024-24576,严重程度评分为 10.0。

有什么问题吗?
由于存在一个名为“BatBadBut”的严重漏洞, Windows Rust开发人员被敦促更新其版本,该漏洞可能导致机器上出现恶意命令注入。该漏洞影响 Rust 标准库,当使用命令 API 在 Windows 上调用批处理文件时,该标准库会错误地转义参数。

BatBadBut 漏洞允许攻击者将命令注入到依赖“CreateProcess”函数的 Windows 应用程序中。这是因为执行批处理文件的 cmd.exe 具有复杂的解析规则,并且编程语言运行时无法正确转义命令参数。

为什么会发生?
“BatBadBut”问题是由编程语言和 Windows 操作系统之间的交互引起的。当程序调用“CreateProcess”函数时,Windows 会启动一个单独的进程“cmd.exe”来处理执行。这个单独的进程解析 .bat 文件中的命令。

供您参考,Windows 默认情况下在 PATHEXT 环境变量中包含 .bat 和 .cmd 文件,这可能会导致运行时违背开发人员的意图执行批处理文件。攻击者可以通过控制批处理文件的命令参数部分将命令注入 Windows 应用程序。为此,应用程序必须在 Windows 上执行命令,指定命令文件扩展名,控制命令参数,并且无法转义它们。

“如果存在与开发人员想要执行的命令同名的批处理文件,则某些运行时会违背开发人员的意图执行批处理文件”,Ryotak解释道。

受影响的应用程序
Haskell 进程库、Rust、Node.js、PHP 和 yt-dlp 均受此错误影响。 Rust 安全响应工作组于 2024 年 4 月 9 日接到通知,用于在 Windows 上调用批处理文件的 Rust 标准库未正确转义参数,允许攻击者通过绕过转义来执行任意 shell 命令。 Haskell、Rust 和 yt-dlp 已发布补丁。

Ryotak 报告说,这不是一个“互联网破坏漏洞”,大多数应用程序都不会受到它的影响,并且已经有几种缓解措施可用。一些编程语言通过添加转义机制来解决这个问题。另外,BatBadBut仅影响1.77.2之前的Rust版本,不影响其他平台或使用。

缓解策略:
研究人员建议开发人员在使用与外部进程交互的函数时要小心,尤其是在处理用户提供的数据时。他们建议在将用户输入合并到命令中之前对其进行验证和清理,使用安全的替代方案,并随时更新框架和库开发人员提供的最新安全补丁和修复程序。

本文转载自:

如若转载,请注明出处: https://www.hackread.com/windows-batbadbut-vulnerability-comment-injection/

安全客 - 有思想的安全新媒体

分享到:微信
+14赞
收藏
安全客
分享到:微信

发表评论

内容需知
合作单位
  • 安全客
  • 安全客
Copyright © 北京奇虎科技有限公司 三六零数字安全科技集团有限公司 安全客 All Rights Reserved 京ICP备08010314号-66