MS14-019 – 通过.cmd或.bat文件修复二进制劫持问题
命令文件(.cmd)和批处理文件(.bat)可以直接作为输入传递给CreateProcess函数,就像它们是可执行文件一样。CreateProcess会自动使用cmd.exe来运行输入的.cmd或.bat文件。
今天,通过安全公告MS14-019,我们修复了一个漏洞。在特定场景下,攻击者可以通过在受攻击应用程序的当前工作目录(CWD)中放置一个cmd.exe的副本来劫持cmd.exe。
这种漏洞的典型攻击向量与DLL劫持类似,即通过WebDav/SMB共享打开应用程序特定的文件,从而自动调用目标应用程序(由于文件关联)。目标应用程序只有在直接对.cmd或.bat文件调用CreateProcess时才会受到此漏洞的影响,无论文件位于何处。这意味着攻击者不需要控制.cmd或.bat文件本身。另一个利用此漏洞的重要条件是,应用程序必须将关联文件所在的目录设置为当前工作目录(CWD)。
目前,我们尚未发现任何受此漏洞影响的应用程序。但我们理解此漏洞可能对某些应用程序带来的安全风险,因此我们将其作为一个重要严重性公告进行修复。
我们的修复方案是,在创建进程时,始终调用系统目录中的cmd.exe来处理输入的.cmd或.bat文件。这一修复可能会影响那些直接对.bat或.cmd文件调用CreateProcess并依赖应用程序目录或CWD中的非系统版本cmd.exe的应用程序。这些应用程序应在调用CreateProcess时传递cmd.exe的完整路径,并将.cmd或.bat文件作为输入参数传递。
如果应用程序仅传递cmd.exe来运行.cmd或.bat文件作为输入,也可能存在类似的二进制劫持风险。本公告不涉及此类易受攻击的使用方式,因为这是应用程序特定的问题(未传递cmd.exe的完整系统路径)。此类应用程序应修复为传递cmd.exe的完整路径,或仅传递.cmd或.bat文件作为输入。
- Swamy Shivaganga Nagaraju,MSRC工程团队
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码