当前位置: 主页 > 漏洞公告 >

PaintShop Pro Photo X2 FPX文件解析堆溢出漏洞

时间:2010-02-04  来源:绿盟科技   点击:
 

受影响系统:

    Corel PaintShop Pro Photo X2 Ultimate 12.50

描述:BUGTRAQ  ID: 37980

PaintShop Pro Photo X2是一套兼具完整功能与简易操作的专业级数码影像编辑软件。

PaintShop Pro Photo X2错误的相信了FPX文件中用户控制的数据并在拷贝数据时用作了循环计数器,这可能导致堆溢出。

首先,应用以常数调用malloc()分配了0xC08字节长的缓冲区:

/-----
[Module: JPEGACC.dll]

095F4D97  |.  68 080C0000   PUSH 0C08
;size of the buffer to be allocated
095F4D9C  |.  E8 9F4D0000   CALL JPEGACC.095F9B40
;call to malloc()
095F4DA1  |.  83C4 04       ADD ESP,4
095F4DA4  |.  894424 10     MOV DWORD PTR SS:[ESP+10],EAX
;saves the pointer returned by malloc()

- -----/

之后将FPX文件中的数据拷贝到了上述分配的缓冲区。在以下反汇编代码可见FPX文件中0x1406偏移处所分配的字节被解释为内部循环的循环计数器,以确定应调用多少次拷贝操作。拷贝操作是在09264C50地址的调用中执行的,拷贝到缓冲区的数据也是部分从FPX文件的0x1416偏移处开始获取的。

/-----
[Module: JPEGACC.dll]

09264DD2  |>  8B6C24 24     /MOV EBP,DWORD PTR SS:[ESP+24]
09264DD6  |.  33D2          |XOR EDX,EDX
09264DD8  |.  8A55 00       |MOV DL,BYTE PTR SS:[EBP]                ;
byte at offset 0x1406 in the FPX file (user controlled)
09264DDB  |.  45            |INC EBP
09264DDC  |.  8BFA          |MOV EDI,EDX                             ;
EDI=inner loop counter, byte at offset 0x1406 (user controlled)
09264DDE  |.  896C24 24     |MOV DWORD PTR SS:[ESP+24],EBP
09264DE2  |.  85FF          |TEST EDI,EDI
09264DE4  |.  74 28         |JE SHORT JPEGACC.09264E0E
09264DE6  |.  7E 26         |JLE SHORT JPEGACC.09264E0E
09264DE8  |.  8D68 08       |LEA EBP,DWORD PTR DS:[EAX+8]
09264DEB  |>  8B5424 28     |/MOV EDX,DWORD PTR SS:[ESP+28]          ;
EDX starts pointing to offset 0x1416 of the FPX file
09264DEF  |.  33C0          ||XOR EAX,EAX
09264DF1  |.  8BCE          ||MOV ECX,ESI
09264DF3  |.  55            ||PUSH EBP
09264DF4  |.  8A02          ||MOV AL,BYTE PTR DS:[EDX]               ;
reads bytes starting from offset 0x1416 (user controlled)
09264DF6  |.  46            ||INC ESI
09264DF7  |.  53            ||PUSH EBX
09264DF8  |.  42            ||INC EDX
09264DF9  |.  50            ||PUSH EAX
09264DFA  |.  51            ||PUSH ECX
09264DFB  |.  895424 38     ||MOV DWORD PTR SS:[ESP+38],EDX
09264DFF  |.  E8 4CFEFFFF   ||CALL JPEGACC.09264C50                  ;
copies user-controlled data to the buffer
09264E04  |.  83C4 10       ||ADD ESP,10
09264E07  |.  4F            ||DEC EDI                                ;
is the loop counter == 0?
09264E08  |.^ 75 E1         |\JNZ SHORT JPEGACC.09264DEB             ;
if not, repeat the copy operation
09264E0A  |.  8B4424 10     |MOV EAX,DWORD PTR SS:[ESP+10]
09264E0E  |>  D1E6          |SHL ESI,1
09264E10  |.  43            |INC EBX
09264E11  |.  83FB 08       |CMP EBX,8
09264E14  |.^ 7E BC         \JLE SHORT JPEGACC.09264DD2

- -----/

内部循环的每次迭代都会将0x80个对象拷贝到缓冲区,每次大小为8个字节,也就是大小为0xC08字节的缓冲区最多只能处理三次迭代,因此如果用户受骗打开的FPX文件中0x1406偏移处的字节值大于3就可以触发溢出,向缓冲区末尾后的某些位置写入可控字节。在退出外部循环后,应用会进入另一个循环,向缓冲区写入几个值为0的dword,此处的迭代次数为拷贝到缓冲区的对象数,也就是乘以0x80。

/-----
[Module: JPEGACC.dll]

09264E26  |.  8BD6          MOV EDX,ESI                              ;
EDX = number of objects copied to the buffer
09264E28  |>  C701 00000000 /MOV DWORD PTR DS:[ECX],0
09264E2E  |.  83C1 08       |ADD ECX,8
09264E31  |.  4A            |DEC EDX
09264E32  |.^ 75 F4         \JNZ SHORT JPEGACC.09264E28

- -----/

如果所处理的FPX文件如上所述触发了缓冲区溢出,这个循环也会写过缓冲区的限制,破坏内存内容,包括临近的块元数据,最终在应用试图通过调用 ntdll.RtlFreeHeap释放所分配的缓冲区时导致内存访问破坏。

/-----
[Module: ntdll.dll]

7C9108D3    8902            MOV DWORD PTR DS:[EDX],EAX

Access violation when writing to [00000000]

- -----/

<*来源:Francisco Falcon
 
  链接:http://marc.info/?l=bugtraq&m=126507516309185&w=2
*>

建议:厂商补丁:

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

http://www.corel.com/servlet/Satellite/us/en/Product/1184951547051

[来源:服务器安全维护网 ServerSteam.com ->> 责任编辑:FuanAdmin]

更多相关

常见问题

服务项目

服务器安全维护:服务器安全技术服务!(服务器配置、服务器安全配置、服务器安全方案)

成功案例

联系我们

    安全应急响应中心:

  • 专家信箱:sec@serversteam.com
  • 专家热线:13542743816
  • 安全客服:0755-82894338
  • 应急传真:0755-82894338
  • 地址:深圳市福田区群星广场A座
首页 - 合作伙伴 - 服务条款 - 服务承诺 - 业务流程 - 漏洞公告 - 技术支持 - 常见问题 - 安全法规 - 百度新闻 - 联系我们
支持单位:深圳市雪鹿信息技术开发有限公司 服务器安全应急中心 服务器安全资讯网 中华人民共和国工业和信息化部备案许可证:[粤ICP备09049593号]
Copyright © 2004 -2010 Server Security Safeguard Site. &. ShenZhen XueLu Co,LTD All Rights Reserved. Record ICP No:GD No.09049593 Design By: Berlin