Media Player Classic FLI文件处理远程缓冲区溢出漏洞

漏洞信息详情

Media Player Classic FLI文件处理远程缓冲区溢出漏洞

漏洞简介

\”Media Player Classic(MPC)是匈牙利软件开发者Gabest所研发的一套开源的媒体播放器。该播放器能够播放VCD、SVCD及DVD等格式的文件。

Media Player Classic处理fli文件时存在缓冲区溢出漏洞,远程攻击者可能利用此漏洞控制客户端。

在FLICSource.cpp文件中的以下函数:

690 void CFLICStream::_deltachunk()

691 {

692 BYTE* tmp = m_pFrameBuffer; //m_pFrameBuffer 的长度为m_hdr.x*m_hdr.y*32>>3,

//注意m_hdr.x,m_hdr.y是从一个fli文件中读出的,是我们能控制的

693

694 WORD lines;

695 m_flic.Read(&lines, sizeof(lines)); //这里的lines是从一个fli文件中读出的

696

697 while(lines–)

698 {

699 signed short packets;

700 m_flic.Read(&packets, sizeof(packets)); // packets也是从一个fli文件中读出的

701

702 if(packets < 0)

703 {

704 if(packets&0x4000)

705 {

706 tmp += -packets * m_hdr.x;

707 lines++;

708 }

709 else

710 {

711 signed char count;

712 m_flic.Read(&count, sizeof(count));

713 tmp[m_hdr.x-1] = (BYTE)packets;

714 }

715 }

716 else

717 {

718 BYTE* ptr = tmp;

719

720 while(packets–)

721 {

722 BYTE skip;

723 m_flic.Read(&skip, sizeof(skip));

724

725 ptr += skip; //这里可以使指针快速移动

726

727 signed char count;

728 m_flic.Read(&count, sizeof(count)); // count也是从一个fli文件中读出的

729

730 if(count >= 0)

731 {

732 m_flic.Read(ptr, count << 1); //把fli文件中的内容copy到ptr指向的内存中

733 ptr += count << 1;

734 }

735 else

736 {

737 WORD c;

738 m_flic.Read(&c, sizeof(c));

739 count = -count;

740 while(count– > 0)

741 {

742 *ptr++ = c>>8;

743 *ptr++ = c&0xff;

744 }

745 }

746 }

747

748 tmp += m_hdr.x;

749 }

750 }

751 }

ptr在这个操作中没有设定边界,允许覆盖m_pFrameBuffer后面的内容,而且这些内容可以有选择地覆盖(725行),后面有些地址是new出来的对象的地址。攻击者可以选择覆盖一个对象的vtable地址,把这个地址改成能控制的地址就可以执行可控的代码。

\”

漏洞公告

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

http://guliverkli.sourceforge.net

参考网址

来源: XF

名称: mediaplayerclassic-fli-bo(36242)

链接:http://xforce.iss.net/xforce/xfdb/36242

来源: MISC

链接:http://www.team509.com/modules.php?name=News&file=article&sid=38

来源: BID

名称: 25437

链接:http://www.securityfocus.com/bid/25437

来源: SECUNIA

名称: 26591

链接:http://secunia.com/advisories/26591

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享