BUGTRAQ ID: 29997 S.T.A.L.K.E.R.是由GSC Game World开发的第一人称射击游戏。 如果远程攻击者向S.T.A.L.K.E.R.游戏服务器发送了恶意报文的话,就可以触发缓冲区溢出或拒绝服务漏洞。 ---------------------------------------- A] IPureServer::_Recieve栈溢出 ---------------------------------------- 如果在游戏中接收到了以0x39字节开始的报文,就会使用MultipacketReciever::RecievePacket函数。该函数取入站报文中所指定的16位数字作为所要拷贝的字节数,报文中的数据作为源数据,并使用8k字节的栈缓冲区作为拷贝目标。S.T.A.L.K.E.R.中的每个UDP报文最大大小为1472字节,但通过游戏中所实现的LZO压缩,就可以在报文中放置32k字节的数据,这就可能在上述拷贝操作中触发栈溢出。 ---------------------------------------------- B] NET_Compressor::Decompress整数溢出 ---------------------------------------------- 这个函数用于检查报文中特定的字节是否等于0xc1,如果等于的话就会执行CRC检查并使用rtc9_decompress函数(lzo1x_decompress_dict_safe)解压数据;如果数据没有压缩的话该函数会获取报文中当前数据的大小并执行memcpy(dst, data, data_size - 1),因此发送没有数据的报文就会导致服务器由于拷贝0xffffffff (0 - 1)字节而出现崩溃。 ------------------------------------------ C] MultipacketReciever::RecievePacket INT3 ------------------------------------------ 该函数的第一个操作是检查报文中的特定字节是否等于0xe0或0xe1,如果不等于的话就会执行INT3指令,导致服务器立即终止。 01906F33 8A45 00 MOV AL,BYTE PTR...
BUGTRAQ ID: 29997 S.T.A.L.K.E.R.是由GSC Game World开发的第一人称射击游戏。 如果远程攻击者向S.T.A.L.K.E.R.游戏服务器发送了恶意报文的话,就可以触发缓冲区溢出或拒绝服务漏洞。 ---------------------------------------- A] IPureServer::_Recieve栈溢出 ---------------------------------------- 如果在游戏中接收到了以0x39字节开始的报文,就会使用MultipacketReciever::RecievePacket函数。该函数取入站报文中所指定的16位数字作为所要拷贝的字节数,报文中的数据作为源数据,并使用8k字节的栈缓冲区作为拷贝目标。S.T.A.L.K.E.R.中的每个UDP报文最大大小为1472字节,但通过游戏中所实现的LZO压缩,就可以在报文中放置32k字节的数据,这就可能在上述拷贝操作中触发栈溢出。 ---------------------------------------------- B] NET_Compressor::Decompress整数溢出 ---------------------------------------------- 这个函数用于检查报文中特定的字节是否等于0xc1,如果等于的话就会执行CRC检查并使用rtc9_decompress函数(lzo1x_decompress_dict_safe)解压数据;如果数据没有压缩的话该函数会获取报文中当前数据的大小并执行memcpy(dst, data, data_size - 1),因此发送没有数据的报文就会导致服务器由于拷贝0xffffffff (0 - 1)字节而出现崩溃。 ------------------------------------------ C] MultipacketReciever::RecievePacket INT3 ------------------------------------------ 该函数的第一个操作是检查报文中的特定字节是否等于0xe0或0xe1,如果不等于的话就会执行INT3指令,导致服务器立即终止。 01906F33 8A45 00 MOV AL,BYTE PTR SS:[EBP] 01906F36 3C E1 CMP AL,0E1 01906F38 56 PUSH ESI 01906F39 57 PUSH EDI 01906F3A 894C24 18 MOV DWORD PTR SS:[ESP+18],ECX 01906F3E 74 05 JE SHORT xrNetSer.01906F45 ; jump if 0xe1 01906F40 3C E0 CMP AL,0E0 01906F42 74 01 JE SHORT xrNetSer.01906F45 ; jump if 0xe0 01906F44 CC INT3 ; boom GSC Game World STALKER <= 1.0006 GSC Game World -------------- 目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本: <a href=http://www.stalker-game.com/ target=_blank>http://www.stalker-game.com/</a>