Denegacion de servicio en Call Of Duty: Modern Warfare 3

Se ha descubierto una vulnerabilidad en el juego Call Of Duty: Modern Warfare 3 (CoDMW3) que podría provocar una denegación de servicio en los servidores públicos y privados utilizados para el modo multijugador, además de un problema de ejecución de código en el motor gráfico CryENGINE 3.

En la reciente conferencia de seguridad Power of Community (POC2012) de Seúl, varios especialistas de ReVuln presentaron varios fallos de seguridad en múltiples juegos on-line. 

Por ejemplo, ReVuln dice que logró comprometer una computadora explotando un bug en el juego Nexuiz. Sin embargo, la compañía aún no ha publicado detalles sobre las vulnerabilidades encontradas, sólo un video para demostrar que el exploit hecho a medida es funcional. 

De acuerdo con ReVuln, los fallos están dentro de CryENGINE 3, un motor de videojuegos que es usado por Nexuiz y muchos otros juegos. Esto significa que otros juegos que están basados en CryENGINE 3 también podrían ser potencialmente afectados.

Como parte de su presentación, los investigadores de seguridad también demostraron como un 0-day un ataque de denegación de servicio (DoS) al servidor del popular juego de PC Call Of Duty: Modern Warfare 3.
Para el modo online, CoDMW3 se comunica principalmente a través del protocolo UDP y el puerto 27015 con mensajes cifrados y utiliza DemonWare para comprobar y autenticar a los usuarios. Cuando el servidor recibe un paquete querysessioninfo o queryserverinfo, lo descifra y envía al servidor DemonWare.

El fallo es un error de desreferencia a puntero nulo en el lado del servidor que podría causar que dicho servidor se bloqueara, causando de este modo una denegación de servicio. Veamos un poquito más a nivel técnico:

El formato del paquete udp es el siguiente:

• 32-bit magic number
• 32-bit encryption init seed
• IPv4 address of the server
• net_queryPort of the server
• 8-bit DemonWare version (0x02)
• 8-bit opcode: 0x01 for querysessioninfo or 0x02 for queryserverinfo
• 64-bit query number (random)
• 64-bit query number (random)
• 32-bit timestamp plus delta
• public client IPv4 address
• 64-bit xor’ed MD5 hash
• 16-bit CRC

Cuando el servidor recibe un paquete servequerryinfo o sessionquerryinfo, éste lo reenvía descifrado al server maestro DEMONWARE.

Para que sea un paquete DEMONWARE válido, debe contener dos valores de 64 bits que deben ser diferentes de los valores contenidos en los paquetes anteriores enviados por el cliente. Un paquete válido debe tener:
  • CRC correcto, net_queryPort, hash y la versión
  • Dirección IP origen que debe coincidir con la ip pública almacenada de uno de los clientes
  • Fecha y hora dentro de los 60 segundos del rango esperado por el servidor
  • Los números aleatorios de la consulta
  •  Puerto aleatorio de origen de los paquetes

Después de 55 paquetes, el servidor se bloquea debido a una desreferencia puntero NULL. 
Los paquetes UDP pueden ser suplantados y la vulnerabilidad afecta tanto a servidores públicos como a privados.

Hay que tener en cuenta que los servidores de CoDMW3 son públicos y se enumeran en el maestro, por lo que un atacante puede utilizar esta información para acabar con todos los servidores públicos a la vez.


Comentarios