El error facilitó que los miembros se agregaran a una llamada grupal antes de que realmente respondieran
Es posible que se haya perdido la noticia sobre un error de FaceTime que se encontró hace aproximadamente un año (sitio en inglés). El error permitió a cualquier persona iniciar una llamada grupal de FaceTime con uno de sus contactos, incluso si esa persona no aceptó explícitamente la llamada.
Apple desactivó las llamadas grupales de FaceTime durante un par de días hasta que pudo emitir un parche en iOS 12.1.4. Desde entonces, los investigadores de seguridad de Google han estado ocupados encontrando el mismo error en otras aplicaciones de chat grupal, como Signal, JioChat, Mocha, Google Duo y Facebook Messenger.
El error tiene otro elemento digno de mención además de su amplia superficie de ataque: cómo se descubrió por primera vez. Eso fue gracias a Grant Thompson, un estudiante de secundaria de 14 años que asistía a la escuela en Tucson, Arizona, en ese momento. Antes del descubrimiento del error, Grant había estado jugando a Fortnite con sus amigos a través de FaceTime. Mientras configuraba una llamada grupal de FaceTime con sus amigos, notó algo extraño: podía escuchar a uno de ellos hablando antes de contestar el teléfono. Cuando Thompson luego informó del error, Apple lo ignoró inicialmente, quien finalmente le otorgó una recompensa por error solo después de que su madre persiguió obstinadamente el crédito y lo solicitó a través de su programa de desarrollo.
La mecánica subyacente del exploit
Hablemos de los detalles sobre la mecánica real del error. Para entrar en estos detalles, primero debo describir el protocolo WebRTC (sitio en inglés), que es el estándar abierto que agrega capacidades de comunicación en tiempo real a su aplicación. Admite video, voz y datos genéricos que se envían entre pares, lo que permite a los desarrolladores crear potentes soluciones de comunicación de voz y video.
La palabra clave anterior es par, que es tanto una oportunidad (permite tener chats individuales y grupales) como un problema. Debido a que cualquier conexión web no tiene estado, necesitas alguna otra forma de mantener el estado entre los puntos finales de chat; esto implica configurar las llamadas utilizando otro protocolo llamado Protocolo de descripción de sesión (SDP). Este proceso se llama señalización y, como dije, WebRTC no lo implementa.
En el año transcurrido desde el error original de FaceTime, la investigadora de seguridad Natalie Silvanovich del Project Zero de Google ha estado rastreando este problema y recientemente publicó los detalles (sitio en inglés) de su investigación. Descubrió que la forma en que las aplicaciones implementaron la señalización SDP facilitó que la parte receptora de una llamada grupal se agregara antes de contestar la llamada (o hacer cualquier cosa por su parte). También descubrió que tanto Telegram como Viber no tienen este problema debido a la forma en que estructuran sus llamadas.
Silvanovich sugiere conciencia de los desarrolladores. “Es raro encontrar documentación o tutoriales de WebRTC que discutan explícitamente la necesidad del consentimiento del usuario al transmitir audio o video desde el dispositivo de un usuario”, dice. Silvanovich admite que la hazaña no era algo con lo que se hubiera encontrado anteriormente. Con suerte, eso cambiará ahora que su investigación ha salido a la luz.
¿Debemos preocuparnos por nuestros chats de video?
Aquí es donde están las cosas con este exploit: afortunadamente, los desarrolladores han estado trabajando en correcciones. Todas las aplicaciones mencionadas en la parte superior de esta publicación se han corregido durante el año pasado, y si no las has actualizado recientemente, debes hacerlo ahora. Irónicamente, la última aplicación que eliminó este error fue Google Duo, que se actualizó hace aproximadamente un año.
El proceso para encontrar este error muestra que las fallas de seguridad pueden ocurrir en cualquier lugar y que cualquiera, incluido un jugador adolescente, puede encontrarlas.