S.T.A.L.K.E.R多个远程溢出和拒绝服务漏洞

- AV AC AU C I A
发布: 2025-04-13
修订: 2025-04-13

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...

0%
暂无可用Exp或PoC
当前有0条受影响产品信息