Alien Arena 2007是基于Quake 2引擎的GPL代码所开发的开源第一人称扮演游戏。 Alien Arena 2007在处理畸形的请求数据时存在漏洞,远程攻击者可能利用此漏洞导致拒绝服务或控制系统。 Alien Arena 2007的safe_bprintf函数没有正确地使用cprintf,允许攻击者通过发送畸形的昵称导致执行任意指令。game/acesrc/acebot_cmds.c文件中的漏洞代码如下: void safe_bprintf (int printlevel, char *fmt, ...) { int i; char bigbuffer[0x10000]; int len; va_list argptr; edict_t *cl_ent; va_start (argptr,fmt); len = vsprintf (bigbuffer,fmt,argptr); va_end (argptr); if (dedicated->value) gi.cprintf(NULL, printlevel, bigbuffer); for (i=0 ; i<maxclients->value ; i++) { cl_ent = g_edicts + 1 + i; if (!cl_ent->inuse || cl_ent->is_bot) continue; gi.cprintf(cl_ent, printlevel, bigbuffer); } } 在进行查询的时候,游戏服务器会返回很多信息,包括当前的玩家列表及其IP地址等。在获得了这些信息后,攻击者可以向上述IP和端口发送client_connect命令导致断开所有的客户端。
Alien Arena 2007是基于Quake 2引擎的GPL代码所开发的开源第一人称扮演游戏。 Alien Arena 2007在处理畸形的请求数据时存在漏洞,远程攻击者可能利用此漏洞导致拒绝服务或控制系统。 Alien Arena 2007的safe_bprintf函数没有正确地使用cprintf,允许攻击者通过发送畸形的昵称导致执行任意指令。game/acesrc/acebot_cmds.c文件中的漏洞代码如下: void safe_bprintf (int printlevel, char *fmt, ...) { int i; char bigbuffer[0x10000]; int len; va_list argptr; edict_t *cl_ent; va_start (argptr,fmt); len = vsprintf (bigbuffer,fmt,argptr); va_end (argptr); if (dedicated->value) gi.cprintf(NULL, printlevel, bigbuffer); for (i=0 ; i<maxclients->value ; i++) { cl_ent = g_edicts + 1 + i; if (!cl_ent->inuse || cl_ent->is_bot) continue; gi.cprintf(cl_ent, printlevel, bigbuffer); } } 在进行查询的时候,游戏服务器会返回很多信息,包括当前的玩家列表及其IP地址等。在获得了这些信息后,攻击者可以向上述IP和端口发送client_connect命令导致断开所有的客户端。