[conquest] Re: security bugs in conquest

Jon Trulson jon at radscan.com
Sat Mar 3 15:46:07 MST 2007


On Fri, 2 Mar 2007, Luigi Auriemma wrote:

>
> Hey,
>
> I have found a couple of bugs in the latest version of the Conquest
> client 8.2a
>

         Damn :)

> The problems are the following:
>
> 1)
> stack buffer-overflow in metaGetServerList
> the buffer of 1024 bytes called buf can be overflowed by a server entry
> longer than that size.
> exists also an overflow in the servers buffer but it's static and so
> doens't seems possible to use this bug for executing malicious code.
>
> from meta.c:
>
> int metaGetServerList(char *remotehost, metaSRec_t **srvlist)
> {
>  static metaSRec_t servers[META_MAXSERVERS];
>  ...
>  char buf[1024];               /* server buffer */
>
>  ...
>
>  off = 0;
>  while (read(s, &c, 1) > 0)
>    {
>      if (c != '\n')
>        {
>          buf[off++] = c;
>        }
>      else
>        {                       /* we got one */
>          buf[off] = 0;
>
>          /* convert to a metaSRec_t */
>          if (str2srec(&servers[nums], buf))
>            nums++;
>  ...
>

         Ok, that was stupid.  Will fix.

>
> 2)
> memory corruption with SP_CLIENTSTAT
> the instructions which handle this type of packet don't sanitize the
> snum and unum value passed by the server.
> the problem of snum is more simple and quick to see since it's handled
> immediately when the packet is received allowing the writing of a byte
> (scstat->team) in some memory positions outside the Ship structure:
>
> from client.c:
>
> void processPacket(Unsgn8 *buf)
>    ...
>    case SP_CLIENTSTAT:
>      scstat = (spClientStat_t *)buf;
>      Context.snum = scstat->snum;
>      Context.unum = (int)ntohs(scstat->unum);
>      Ships[Context.snum].team = scstat->team;
>      clientFlags = scstat->flags;
>      break;
>    ...
>
> Let me know if you need other info.
>

         Yeah, this problem is all over the place as well.  Will fix
         these too for the next release (8.2b).

> I wait your reply.
>

         Thanks for finding these!  If you find anymore, please do not
         hesitate to let me know...

-- 
Jon Trulson
mailto:jon at radscan.com 
#include <std/disclaimer.h>
"No Kill I" -Horta




More information about the Conquest mailing list