WhatsApp ha estado en la mira de los expertos en los últimos meses, no solo por la grave vulneración mediática que sufrió Jeff Bezos, sino que también por reportes que indican varias vulnerabilidades durante 2019.
Es justamente una de esas fallas del año pasado, descubiertas en el mes de agosto, la que permitía que el servicio de mensajería accediera a tus archivos de Windows o Mac si estabas usando la versión web.
Tras el descubrimiento de la vulnerabilidad por parte de la gente de Checkpoint, el experto en javascript, Gal Weizman, se dedicó a investigar este asunto de seguridad, y mostró interesantes conclusiones de ese estudio, como por ejemplo, que la versión web de la plataforma de mensajería está hecha con Electron, una herramienta que permite crear apps basadas en webs, lo que además es un estándar bastante recurrente como código para otras plataformas.
Además, Electron tiene su base en Chromium, el motor de Google Chrome el cual, como cualquier otro software, tiene problemas de seguridad.
Lo primero que descubrió Weizman con esos antecedentes es que, «Al usar la web de WhatsApp, puedo encontrar la línea de código donde se forma el objeto que contiene los metadatos del mensaje, manipularlo y luego dejar que la aplicación continúe en su flujo natural de envío de mensajes, creando así mi mensaje al pasar por alto el mecanismo de filtrado de la interfaz de usuario».
Después descubrió, tal como ocurrió en el hackeo de Bezos, que al insertar un enlace de una dirección web, se podía manipular el objetivo final, es decir, redireccionar a cualquier sitio que yo quisiera, con un disfraz y una dirección que parecía la real encima: «Uno puede manipular fácilmente las propiedades del banner antes de enviarlo al receptor».
Luego usando javascript, lograba insertar el código malicioso XSS.
«Afortunadamente para WhatsApp, los navegadores basados en Chromium agregaron un mecanismo de defensa contra los javascript:
URI justo cuando encontré esta vulnerabilidad. Desafortunadamente para WhatsApp, en otros navegadores como Safari y Edge, esta vulnerabilidad todavía estaba abierta».
Finalmente introdujo una forma de vulnerar el Content Security Policy (CSP) de WhatsApp, que es otra capa de seguridad.
Las conclusiones de Gal Weizman tras hacer esto por su cuenta fueron:
- Si su aplicación utiliza banners de vista previa enriquecidos y esos banners están diseñados en el lado de envío, su filtrado en el lado de recepción debe ser perfecto. No puede permitir que se carguen URL extrañas en el lado receptor sin asegurarse de que sean legítimas.
- Las reglas de CSP son súper importantes y podrían haber evitado gran parte de este desastre. Si las reglas de CSP estuvieran bien configuradas, la potencia obtenida por este XSS habría sido mucho menor. Poder evitar la configuración de CSP le permite a un atacante robar información valiosa de la víctima, cargar cargas útiles externas fácilmente y ¡mucho más!
- Si va a utilizar Electron, DEBE asegurarse de que se actualice con cada actualización de Chromium. Y esta es tan importante: las actualizaciones de Chromium no son solo nuevas características interesantes, en la mayoría de las actualizaciones de Chromium, se están reparando vulnerabilidades graves. Cuando se actualiza Chromium, tu aplicación basada en Electron también debe actualizarse, de lo contrario, dejarás a tus usuarios vulnerables a vulnerabilidades graves sin ningún motivo.