Suscríbete para recibir notificaciones de nuevas publicaciones:

Cómo Cloudflare verifica el código que los usuarios reciben de WhatsApp Web

10/03/2022

5 min de lectura

¿Cómo sabes que el código que descarga tu navegador web cuando visitas un sitio es el código que el sitio web quería que ejecutaras? A diferencia de una aplicación móvil descargada de una tienda de aplicaciones de confianza, la web no ofrece el mismo grado de garantía de que el código no ha sido manipulado. Hoy, estamos encantados de asociarnos con WhatsApp para ofrecer un sistema que garantiza a los usuarios que el código que se ejecuta cuando visitan WhatsApp en la web es el código legítimo de WhatsApp.

El aumento del uso de WhatsApp en navegadores y el creciente número de usuarios en riesgo, entre ellos periodistas, activistas y defensores de los derechos humanos, motivaron a WhatsApp a tomar medidas para ofrecer garantías a los usuarios que utilizan la versión para navegador. Se pusieron en contacto con nosotros para que les ayudáramos a elevar los estándares contra terceros que pretenden poner en riesgo o manipular de alguna manera el código responsable del cifrado de extremo a extremo de los mensajes entre los usuarios de WhatsApp.

¿Cómo funcionará? Cloudflare guarda un hash del código que los usuarios de WhatsApp deben ejecutar. Cuando los usuarios ejecutan WhatsApp en su navegador, la extensión WhatsApp Code Verify compara un hash de ese código que se está ejecutando en su navegador con el hash que tiene Cloudflare, lo que les permite ver fácilmente si el código que se está ejecutando es el que debería ser.

La idea en sí, comparar los hash para detectar la manipulación o incluso los archivos corruptos, no es nueva, pero sí lo es automatizarla, implementarla a escala y asegurarse de que "funciona" para los usuarios de WhatsApp. Dado el alcance de WhatsApp y la confianza implícita depositada en Cloudflare, queremos explicar en detalle cómo funciona realmente este sistema desde una perspectiva técnica.

Antes de entrar en materia, hay un aspecto importante que hay que señalar de manera explícita. Cloudflare ofrece un parámetro de auditoría de confianza para respaldar Code Verify. Los mensajes, chats u otro tipo de tráfico entre los usuarios de WhatsApp nunca se envían a Cloudflare, es decir, siguen siendo privados y están encriptados de un extremo a otro. Ni los mensajes ni el contenido multimedia transitan por la red de Cloudflare como parte de este sistema, una propiedad importante desde la perspectiva de Cloudflare en nuestro papel como tercero de confianza.

Facilitamos la verificación

Volvamos a 2003, cuando se lanzó Fedora, una popular distribución de Linux basada en Red Hat. Te interesa descargarla, pero quieres asegurarte de que es la "auténtica" Fedora, y que la descarga no es una versión "falsa" que desvía tus contraseñas o registra tus pulsaciones de teclas. Vas a la página para iniciar la descarga y ves un hash MD5 (considerado seguro en ese momento) junto a la descarga. Una vez se completa la descarga, se ejecuta "md5 fedora-download.iso" y se compara el resultado hash con el hash de la página de descarga. Coinciden, todo va bien y procedes a instalar Fedora en tu equipo.

Pero espera un segundo. Si el mismo sitio web que proporciona la descarga también proporciona el hash, ¿no podría un actor malintencionado reemplazar tanto la descarga como el hash con sus propios valores? La comprobación "md5" que ejecutamos anteriormente se validaría, pero no hay garantía de que tengamos la versión "real" (no manipulada) del software que pretendíamos descargar.

Alojar el hash en el mismo servidor que el software sigue siendo habitual en 2022

Hay otros enfoques que intentan mejorar este planteamiento, por ejemplo, proporcionar firmas que los usuarios puedan comprobar que se firmaron con claves públicas "conocidas" alojadas en otro lugar. Alojar esas firmas (o "hashes") con un tercero de confianza eleva drásticamente los estándares en lo que respecta a la manipulación, pero ahora requerimos que el usuario sepa en quién confiar y conozca herramientas como GnuPG. Eso no nos ayuda a confiar y verificar el software a la escala de la red de Internet moderna.

Aquí es donde entran en juego la extensión Code Verify y Cloudflare. La extensión Code Verify, publicada por Meta Open Source, automatiza esta tarea. Calcula localmente el hash criptográfico de las bibliotecas que usa WhatsApp Web y compara ese hash con el de una fuente de terceros de confianza (Cloudflare, en este caso).

Te lo mostramos en esta imagen para aclarar un poco cómo funciona y cómo interactúan cada una de las tres partes: el usuario, WhatsApp y Cloudflare.

Diagrama de los cuatro pasos para verificar el código de la web WhatsApp

Hay cuatro pasos principales para verificar que el código no ha sido manipulado:

  1. WhatsApp publica la última versión de sus bibliotecas JavaScript en sus servidores y el hash correspondiente a esa versión en el parámetro de auditoría de Cloudflare.
  2. Un cliente web de WhatsApp obtiene las últimas bibliotecas de WhatsApp.
  3. A continuación, la extensión del navegador Code Verify obtiene el hash de esa versión de Cloudflare a través de una conexión segura e independiente.
  4. Code Verify compara el hash "conocido" de Cloudflare con el hash de las bibliotecas que ha calculado localmente.

Si los hashes coinciden, como debería ocurrir en casi cualquier circunstancia, el código está "verificado" desde el punto de vista de la extensión. Si por el contrario los hashes no coinciden, significa que el código que se ejecuta en el navegador del usuario es diferente del código que WhatsApp pretende ejecutar en todos los navegadores de sus usuarios.

La seguridad tiene que ser fácil

Es este proceso, y el hecho de que esté automatizado en nombre del usuario, lo que ayuda a proporcionar transparencia de forma escalable. Si los usuarios tuvieran que obtener, calcular y comparar manualmente los hashes, solo una pequeña parte de usuarios técnicos detectarían alteraciones. Para un servicio tan grande como WhatsApp, no sería un enfoque particularmente accesible o intuitivo.

Este enfoque también tiene paralelismos con una serie de tecnologías que se utilizan hoy en día. Una de ellas es la Integridad de subrecursos en los navegadores web. Cuando se obtiene un activo de terceros (como un script o una hoja de estilo), el navegador valida que el activo devuelto coincida con el hash descrito. Si no es así, rechaza la carga de ese activo, lo que evita que los scripts potencialmente en riesgo desvíen los datos del usuario. Otro ejemplo es el proyecto Transparencia de certificados y los proyectos relacionados de Transparencia binaria. Ambos proporcionan transparencia auditable públicamente para los activos críticos, incluidos los certificados WebPKI y otros blobs binarios. El sistema descrito en este artículo no se adapta a activos arbitrarios, pero estamos explorando formas de ampliar este servicio para que sea más general y útil, como la Transparencia binaria.

Nuestra colaboración con el equipo de WhatsApp es solo el comienzo del trabajo que estamos haciendo para ayudar a mejorar la privacidad y la seguridad en la web.  Nuestro objetivo es ayudar a otras organizaciones a verificar que el código que se entrega a los usuarios es el que deben ejecutar. Proteger a los usuarios de Internet a escala y garantizar la privacidad son principios fundamentales de lo que hacemos en Cloudflare, y esperamos continuar con este trabajo a lo largo de 2022.

Protegemos redes corporativas completas, ayudamos a los clientes a desarrollar aplicaciones web de forma eficiente, aceleramos cualquier sitio o aplicación web, prevenimos contra los ataques DDoS, mantenemos a raya a los hackers, y podemos ayudarte en tu recorrido hacia la seguridad Zero Trust.

Visita 1.1.1.1 desde cualquier dispositivo para empezar a usar nuestra aplicación gratuita y beneficiarte de una navegación más rápida y segura.

Para saber más sobre nuestra misión para ayudar a mejorar Internet, empieza aquí. Si estás buscando un nuevo rumbo profesional, consulta nuestras ofertas de empleo.
Security (ES)Privacy (ES)

Síguenos en X

Matt Silverlock|@elithrar
Mari Galicer|@mmvri
Cloudflare|@cloudflare

Publicaciones relacionadas

12 de abril de 2024, 13:00

Cómo Cloudflare evitará que los clientes se vean afectados por el próximo cambio en la cadena de certificados de Let's Encrypt con su sólida canalización de certificados

La cadena de certificados con firma cruzada de Let's Encrypt expirará en septiembre. Esta novedad afectará a los dispositivos heredados con almacenes de confianza obsoletos...

08 de marzo de 2024, 2:22

Log Explorer supervisa los eventos de seguridad sin almacenamiento de terceros

La eficacia conjunta de nuestros análisis de seguridad y Log Explorer permite a los equipos de seguridad analizar, investigar y supervisar los ataques a la seguridad de forma nativa en Cloudflare. De esta forma, conseguimos reducir el tiempo de resolución y el coste total de propiedad para nuestros...

05 de marzo de 2024, 14:02

Protege tus activos expuestos con nuestro Centro de seguridad: resumen para los CISO

Hoy nos complace anunciar un nuevo conjunto de capacidades en nuestro Centro de seguridad para abordar directamente un desafío común: garantizar una implementación completa en toda tu infraestructura. Consigue información precisa sobre dónde y cómo optimizar tu postura de seguridad ...