19/7/2019

Diario del desarrollador: Análisis retrospectivo de las trampas

En nuestro diario del desarrollador, echaremos un vistazo a las vulnerabilidades del juego, cómo las hemos resuelto y qué significan esas correcciones para futuras vulnerabilidades.

CALENDARIO

11 Y 12 DE MAYO

  • A principios de mayo, tres vulnerabilidades llamaron la atención en la comunidad Rainbow Six Siege: la del escudo de Clash, la de las minas Claymore y las de los escudos desplegables.  
  • Al revisar la situación durante el fin de semana, el equipo vio claro que esto era un problema prioritario.

13 DE MAYO

  • El equipo empezó a investigar las vulnerabilidades.  Nuestro primer paso fue reproducir de forma precisa y coherente las vulnerabilidades a nivel interno para comprender el problema, y entonces identificar la raíz del problema.
  • La investigación inicial reveló que necesitábamos más tiempo para comprender el alcance del problema, y dedujimos que una corrección inmediata no iba a ser posible.
  • A medida que la vulnerabilidad se extendía por la comunidad, empezamos a trazar planes para mitigar el impacto a corto plazo.

15 DE MAYO

  • Los jefes del proyecto Rainbow Six Siege se sentaron a hablar sobre las vulnerabilidades. Teníamos que determinar, de forma cuantitativa según los datos recogidos, el alcance y el impacto exactos de las vulnerabilidades en el juego.

16 DE MAYO

  • Tras revisar los datos, la mañana del 16 de mayo tomamos la decisión de desactivar a Clash, las Claymore y los escudos desplegables.
  • Varios equipos aparcaron su trabajo habitual mientras explorábamos opciones para crear e implementar una solución que desactivase a Clash, las minas Claymore y los escudos desplegables.
  • Empezamos a poner a prueba cualquier solución posible a medida que se iban completando. Identificamos cinco posibles formas de abordar el problema, y tras varios intentos fallidos, por fin encontramos la solución en nuestro último enfoque.

17 DE MAYO

  • Tras dos rondas de pruebas inmediatas que resultaron ser un éxito, activamos los mecanismos que desactivaban a Clash, las Claymore y los escudos desplegables como primera respuesta de emergencia.

24 DE MAYO

  • Nos dimos cuenta de que corregirlo por completo nos llevará más tiempo, ya que afecta a los procesos esenciales del sistema, sobre todo al orden en que los paquetes se envían al servidor. Sin embargo, al comprender que la desactivación de Clash y los dispositivos fundamentales impactaban mucho en el juego, los equipos empezaron a trabajar en paralelo para crear soluciones a prueba de fallos que se podían introducir de forma segura.

JUNIO

  • Durante las semanas siguientes, volvieron a surgir informes de vulnerabilidades.
  • Pero con los cambios ya en su sitio, podíamos reaccionar con rapidez a los nuevos informes y desactivar a Clash y a IQ.
  • En este punto, el equipo ya había completado una corrección operacional para la causa subyacente de las vulnerabilidades. Las pruebas internas habían arrojado resultados positivos, pero antes teníamos que llevarlos al servidor de pruebas para una revisión a mayor escala antes de implementar los cambios con seguridad en el servidor online.

JUNIO-JULIO

  • A finales de junio se aplica la Disposición Global para PC, y más tarde (en julio), para consolas.
  • Durante este tiempo, observamos el rendimiento de la Disposición Global y comprobamos si había algún signo que indicase un retroceso.

CAMBIOS Y SOLUCIONES A PRUEBA DE FALLOS

Mientras parte del equipo trabajaba en una corrección, otra parte había empezado a desarrollar soluciones a prueba de fallos a corto plazo al principio del proceso para crear una solución inmediata más sostenible. Estos cambios y soluciones tenían el objetivo de abordar solo los métodos de vulnerabilidad, pero no pretendían ser una solución completa. Al contrario, fue una decisión tomada por el equipo tras sopesar el coste de la desactivación de Clash y dos dispositivos en la salud del juego. Se lanzaron en los servidores online poco después con el reto de que la comunidad informarse de más casos.

La decisión de desactivar agentes y configurar equipamientos no la tomamos a la ligera. Tenemos que respetar el tiempo y el esfuerzo que los jugadores han empleado en desbloquear contenido del juego, y ser conscientes del enorme impacto que ha tenido eliminar mecánicas esenciales del juego en el objetivo y el ecosistema de Rainbow Six Siege. Pero dadas las circunstancias, tuvimos la sensación de que corregirlo por completo no era una solución aceptable: teníamos que anular las vulnerabilidades y normalizar el estilo de juego para los jugadores de la forma más segura y rápida posible.

Las soluciones a pruebas de fallos tenían que satisfacer diversos requisitos: tenían que ser “quirúrgicas”, de forma que no causaran ningún tipo de retroceso ni daño colateral no intencionado, fácilmente modificables para una respuesta rápida, y cuyas pruebas pudieran ser mínimas para ofrecerlas rápidamente. Los cambios de agentes y dispositivos fueron nuestra primera respuesta para abordar con rapidez las vulnerabilidades, pero éramos conscientes de que era una solución de último recurso y de muy corto plazo, mientras preparábamos y poníamos a prueba nuestras soluciones a prueba de fallos.

¿QUÉ ES LA DISPOSICIÓN GLOBAL?

Cada agente, dispositivo, granada, escudo, cámara, pared y planta de Rainbow es un objeto. Cada objeto de Rainbow Six Siege envía un mensaje (paquete) al servidor cuando se da cualquier paso o se realiza cualquier acción. Por ejemplo, cuando te equipas con tu dispositivo, tu agente envía los mensajes “Estoy equipándome con mi dispositivo” y “Estoy usando mi dispositivo” en forma de secuencia. Al mismo tiempo, tu dispositivo también está enviando al servidor simultáneamente mensajes como “dispositivo activado” y “dispositivo colocado”. El servidor envía estos mensajes a los demás jugadores de tu partida.

Antes, el orden en que se entregaban estos mensajes al servidor solo estaba garantizado por cada objeto del juego. Esto significa que también existía la posibilidad de que hubiese fallos cuando los mensajes se perdían o se entregaban de forma equivocada al servidor. Las vulnerabilidades se aprovechaban de ese flujo en nuestro protocolo de red enviando varias acciones de forma simultánea (spamming), lo que aumentaba la probabilidad de que esos mensajes de red no llegaran a recibirse correctamente. Como consecuencia, la réplica errónea en el servidor suponía que en las partidas no se mostrase de forma correcta la acción adecuada y esperada.

Nuestra solución al problema, la Disposición Global, modifica el motor de la red para ordenar de forma global todos los mensajes. Los mensajes también se envían en múltiplos para garantizar que los datos se envían de forma eficaz. Esto significa que ahora, cada partida recibirá la misma secuencia de mensajes, y la réplica estará sincronizada para todos los jugadores de la partida.

Al ver que todas las vulnerabilidades que existían estaban relacionadas con este proceso central, teníamos que ser muy meticulosos a la hora de abordar la Disposición Global. Teníamos que asegurarnos de que no habría daños secundarios derivados del cambio. Por fin, aunque el cambio a la Disposición Global impone cierta carga adicional sobre el ancho de banda, creemos que los beneficios merecen la pena, ya que esta carga adicional es un coste pequeño, de modo que decidimos proceder.

LO QUE ESTO SIGNIFICA DE CARA AL FUTURO

Con la Disposición Global aplicada, las acciones se replican de manera uniforme para todos los jugadores de una partida, ya que ahora están ordenados a nivel global y no a nivel de cliente. Hemos valorado y sopesado el coste adicional de ancho de banda, y aunque se incrementará ligeramente, no afectará a tu experiencia de juego. Esto debería impedir más problemas con la entrega de mensajes fuera de servicio y vulnerabilidades similares.

Las vulnerabilidades y su impacto en la comunidad también han resaltado la importancia de los cambios de agentes y dispositivos, y nuestra necesidad consiste en tener un mayor control sobre la configuración de los agentes y los dispositivos en los servidores online. Desde entonces hemos empezado a dedicar más recursos para satisfacer esta necesidad y garantizar que podemos responder con rapidez a la situación en el caso de que surjan nuevas vulnerabilidades.

Visita todos nuestros canales

facebook icontwitter iconyoutube icontwitch icon