CVE:CVE-2006-3873
CNNVD:CNNVD-200609-164
Internet Explorer是微软发布的非常流行的WEB浏览器。
IE新发布的补丁中出现了一个处理URL的堆溢出漏洞，远程攻击者可能利用此漏洞在用户机器上执行任意指令。
由于没有正确的使用lstrcpynA，带有MS06-042补丁的URLMON.DLL中存在堆溢出漏洞。CMimeFt::Create为CMimeFt类的新例程分配了390h字节的堆块，其中的+160h偏移处存在104h (MAX_PATH)字节的ASCII字符缓冲区：
1A4267F8 push 390h ; cb
1A4267FD call ??2@YAPAXI@Z ; operator new(uint)
如果访问URL能够导致HTTP重新定向(300到303状态)，且之后访问"Location"字段返回GZIP或deflate编码的参数数据，CMimeFt::ReportProgress就会试图使用lstrcpynA API函数将URL拷贝到104h字节的字符串缓冲区，但最多传递了824h(10进制为2084)的长度参数，这是URL通常可使用的最大长度：
1A425D41 push 824h ; iMaxLength
1A425D46 push eax ; lpString2
1A425D47 add esi, 15Ch
1A425D4C push esi ; lpString1
1A425D4D call ds:lstrcpynA
这样攻击者就可以使用恶意URL中的数据覆盖CMimeFt类例程及相邻堆块中的内容。
solution:Upgrade microsoft ie to a higher version than 6.0:sp1,and avoid the version 6.0:sp1; Upgrade microsoft windows_2000 to a higher version than *:sp4,and avoid the version *:sp4; Upgrade microsoft windows_2003_server to a higher version than 64-bit,itanium,r2,sp1,and avoid the version 64-bit,itanium,r2,sp1; Upgrade microsoft windows_xp to a higher version than *,*:sp1,*:sp2,and avoid the version *:sp1,*:sp2