首页 -> 安全研究

安全研究

安全漏洞
Microsoft Windows LoadImage API整数溢出漏洞

发布日期:2004-12-23
更新日期:2004-12-28

受影响系统:
Microsoft Windows XP Professional SP1
Microsoft Windows XP Professional
Microsoft Windows XP Home SP1
Microsoft Windows XP Home
Microsoft Windows NT 4.0SP6a
Microsoft Windows NT 4.0SP6
Microsoft Windows NT 4.0SP5
Microsoft Windows NT 4.0SP4
Microsoft Windows NT 4.0SP3
Microsoft Windows NT 4.0SP2
Microsoft Windows NT 4.0SP1
Microsoft Windows NT 4.0
Microsoft Windows 2003
Microsoft Windows 2000SP4
Microsoft Windows 2000SP3
Microsoft Windows 2000SP2
Microsoft Windows 2000SP1
Microsoft Windows 2000
描述:
BUGTRAQ  ID: 12095

WINDOWS的USER32库的LoadImage系统API允许加载一个bmp,cur,ico,ani格式的图标来进行显示。

LoadImage系统API在处理畸形图片格式时存在问题,远程攻击者可以利用这个漏洞触发整数溢出导致堆缓冲区被覆盖,精心构建提交数据可能以用户进程权限执行任意指令。

如果将图片格式里说明的大小设置为0xfffffffc-0xffffffff,当由LoadImage系统API进行解析的时候,可触发整数溢出。

     LoadImage函数的定义如下
       HANDLE LoadImage(      
        HINSTANCE hinst,
        LPCTSTR lpszName,
        UINT uType,
        int cxDesired,
        int cyDesired,
        UINT fuLoad);
    lpszName参数是用户指定的图标文件,uType参数可以指定为IMAGE_BITMAP加载一个BMP文件,IMAGE_CURSOR加载一个cur或ani文件,IMAGE_ICON加载一个ico文件。
    
      在LoadImage内部对这bmp,cur,ico,ani格式的长度的解析并没有做有效的检查,产生错误的代码如下:
      由ANI或CUR触发的时候:
          .text:77D56178                 mov     eax, [ebx+8]                   <------------读取我们设置的值
    .text:77D5617B                 mov     [ebp+dwResSize], eax        
    .text:77D5617E                 jnz     short loc_77D56184
    .text:77D56180                 add     [ebp+dwResSize], 4             <------------加4,整数溢出
    .text:77D56184
    .text:77D56184 loc_77D56184:                           ; CODE XREF: sub_77D5608F+EFj
    .text:77D56184                 push    [ebp+dwResSize]                 <-----------分配错误的堆内存
    .text:77D56187                 push    0
    .text:77D56189                 push    dword_77D5F1A0
    .text:77D5618F                 call    ds:RtlAllocateHeap

      其后的数据拷贝则是按我们给定的值进行拷贝,导致了堆的溢出。
          .text:77D561A9                 mov     ecx, [ebx+8]
    .text:77D561AC                 mov     esi, [ebx+0Ch]
    .text:77D561AF                 add     esi, [ebp+arg_0]
    .text:77D561B2                 mov     edx, ecx
    .text:77D561B4                 shr     ecx, 2
    .text:77D561B7                 mov     edi, eax
    .text:77D561B9                 rep movsd
    .text:77D561BB                 mov     ecx, edx
    .text:77D561BD                 and     ecx, 3
    .text:77D561C0                 rep movsb

攻击者可以构造恶意的bmp,cur,ico,ani格式的文件,嵌入到HTML页面,邮件中,发送给目标用户,成功利用该漏洞则可以获得系统的权限。

<*来源:Flashsky (flashsky@xfocus.org
  
  链接:http://marc.theaimsgroup.com/?l=bugtraq&m=110382891718076&w=2
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

Flashsky (flashsky@xfocus.org)提供了如下测试方法:

http://www.xfocus.net/flashsky/icoExp/index.html

建议:
厂商补丁:

Microsoft
---------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://www.microsoft.com/technet/security/

浏览次数:4025
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障