【51CTO.com 独家翻译】2009年1月13日,这又是一个黑色的星期二,(微软发布补丁都通常为星期二)微软发布了2009年的首个补丁,该补丁主要是修复了在CVE上曾经发表的微软操作系统中的srv系统驱动文件中的三个攻击地址漏洞。这个Srv系统驱动文件主要功能是提供SMB网络服务,包含了139端口和445端口。
去年该补丁于2008年9月14日发表在CVE,发表号为CVE-2008-4114。该漏洞可使得远程用户通过管道发送畸形包,来获得Windows底层信息。这个漏洞是非常有趣的,它可以触发内存拷贝,但是不能溢出,这是源程序中的一个漏洞。
当目标主机接收到了这个写请求,它会尝试从本地内存中读取信息,导致操作系统整个挂掉,只有重新启动操作系统。通常微软都会等到将bug漏洞的有效代码补丁编写完毕,而将该补丁文件在下一个打包补丁中发布,例如放在的XP操作系统的SP4补丁包中。
另外的两个漏洞分别发表在CVE-2008-4834 and CVE-2008-4835,这两个有一点点不同。这两个bug都可导致内存缓冲区溢出。攻击者发送一个比0要小些的,小于缓冲区的变量的信息请求,就会达到用空字节来覆盖并填写原有的内存缓冲区。
我们通过驱动代码和缓冲区来分配核心池,我们通常都用一串空字节来腐化下一个序列的核心池的池头。这将变得更加有意思起来。微软的公示里重述了这个危害,在这次发布的补丁中,针对上述严重的代码执行漏洞做了修复。但是还需要一个针对小的控制变量的输入来覆盖和重写核心池的解决方法。
还有一些代码的控制变量工作在这个区域,这是问题的焦点。我也知道,用代码来解决这个空字节覆盖下一序列的核心池头不是那么容易。
我同意随着这些漏洞的报告的发布,他们应更快更好的推出相应的系统补丁。来有效的防止类似dos攻击的发生,或者其它的恶意攻击。但是我相信他们通过一些代码来运行,不会有什么好的结果。以下是成功的exploit输出
Successful exploitation of the NULL byte overwrite bugs will result in an exception like the following:
BAD_POOL_HEADER (19)
Arg1: 00000020, a pool block header size is corrupt.
Arg2: e2008540, The pool entry we were looking for within the page.
Arg3: e20089f0, The next pool entry. <-- OVERWRITTEN HEADER (覆盖头)
Arg4: 0c96020e, (reserved) (保留)
BUGCHECK_STR: 0x19_20
f61bac30 80543e86 00000019 00000020 e2008540 nt!KeBugCheckEx+0x1b
f61bac80 f694fad1 e2008548 00000000 f695d2b9 nt!ExFreePoolWithTag+0x2a0
f61bac8c f695d2b9 00000021 e2008550 821e5bd0 srv!SrvFreePagedPool+0x2a
f61baca0 f695771c 820d1610 e2008550 821f1038 srv!SrvFreeTransaction+0x68
f61bacb4 f6958349 00000000 821f1038 e2008550 srv!SrvDereferenceTransaction+0x6b
f61bacec f695786b 00000000 0000001e 821f1038 srv!SrvCompleteExecuteTransaction+0xd0
f61bad04 f6958115 f694be34 821f1038 821f2058 srv!ExecuteTransaction+0x333
f61bad7c f693f836 821f1040 821f2020 f694fa98 srv!SrvSmbTransaction+0x7ac
f61bad88 f694fa98 00000000 8202e200 00000000 srv!SrvProcessSmb+0xb7
SYMBOL_NAME: srv!SrvFreePagedPool+2a
MODULE_NAME: srv
IMAGE_NAME: srv.sys
kd> dd e2008540 (current entry)(当前入口)
e2008540 0c96020e 7274534c 000004a0 00000000
e2008550 04a0030c 00000000 820d1610 821e5bd0
kd> dd e20089f0 (overwritten entry header)(覆盖入口)
e20089f0 00000000 00000000 00000000 00000000
e2008a00 00000000 00000000 00000000 82270000
引用地址为:http://www.breakingpointsystems.com/community/blog/2009_microsoft_tuesday_coverage
【51CTO.COM 独家翻译,转载请注明出处及译者!】
【编辑推荐】