Zoom Whiteboard parchea la vulnerabilidad XSS

La plataforma de videoconferencia corrige la vulnerabilidad de secuencias de comandos entre sitios

Zoom corrigió una vulnerabilidad de secuencias de comandos entre sitios (XSS) que funcionaba tanto en la versión de escritorio como en la web de su aplicación Whiteboard.

Zoom Whiteboard permite a los usuarios colaborar en tiempo real en un lienzo compartido agregando y editando diferentes objetos. Whiteboard ejecuta código JavaScript tanto en el navegador como en la aplicación de escritorio.

Escapar de la desinfección

La vulnerabilidad XSS en Zoom Whiteboard fue descubierto por el investigador de seguridad Eugene Lim (también conocido como “mapache espacial”). Lim se enfoca en la superposición entre la web el móvil el escritorio y otras plataformas por lo que se interesó en investigar Zoom Whiteboard.

Whiteboard admite varios tipos de objetos incluidos texto, formas, texto enriquecido, imágenes y notas adhesivas.

Para almacenar y transferir objetos utiliza Protocol Buffer (protobuf) un estándar de marcado independiente del lenguaje y la plataforma para serializar datos estructurados. Utiliza WebSocket para transmitir objetos protobuf en todos los clientes y proporcionar actualizaciones en tiempo real en la pizarra.

Una vez recibido el cliente transforma el objeto protobuf en su componente React correspondiente y lo inserta en la interfaz de usuario.

React sanea automáticamente todos los atributos HTML contenidos en los objetos de la pizarra. Sin embargo, algunos de los objetos permiten algunas etiquetas HTML. Para algunos objetos, los desarrolladores usaron funciones de expresiones regulares personalizadas para desinfectar la entrada del usuario y eliminar las etiquetas no permitidas.

Lim descubrió que con una cadena HTML bien diseñada podía omitir la verificación de desinfección y enviar código JavaScript arbitrario a todos los demás clientes y realizar un ataque XSS.

Armando el portapapeles

Explotar la vulnerabilidad requeriría un esfuerzo complicado por parte del atacante.

“Los mensajes de WebSocket se envían en formato protobuf. Esto hace que sea complicado escribir una prueba de concepto que sea fácil de reproducir para los triagers porque necesitan interceptar la solicitud de WebSocket y modificar el mensaje protobuf correctamente antes de que se elimine la solicitud”, dijo Lim a The Daily Swig.

Para superar este desafío desarrolló una secuencia de comandos de prueba de concepto integral que utilizaba el portapapeles para crear y entregar la carga útil de XSS.

Los retos de las aplicaciones híbridas

Lim cree que hay dos factores que hacen que sea difícil encontrar y tapar esas vulnerabilidades. El primero es la amplitud y profundidad de las API web de JavaScript que admiten funciones adicionales.

“Desde WebRTC (videollamadas) hasta WebGL (gráficos 2D/3D), hay mucho más que puedes hacer en un navegador hoy en día que simplemente mostrar una alerta. Esto aumenta la superficie de ataque y el potencial de desvíos”, dijo.

Y en segundo lugar la creciente superposición entre la web y las aplicaciones nativas/de escritorio.

“Los desarrolladores necesitan proteger sus aplicaciones en múltiples plataformas lo que aumenta la complejidad, ya que JavaScript en React en Safari podría funcionar de manera ligeramente diferente a React Native con Hermes en Android”, dijo Lim.

Compruebe sus dependencias de terceros

Finalmente Lim advirtió sobre vulnerabilidades en las dependencias de terceros.

“Las herramientas de escaneo de código no detectaron la vulnerabilidad [Zoom] real porque la entrada del usuario fluyó a través de una dependencia de terceros” dijo.

Por lo general, los análisis de código en las canalizaciones de CI/CD no instalan dependencias de terceros y se ejecutan solo en el código fuente del proyecto.

“Lo importante aquí es ser muy consciente de los componentes de terceros que está utilizando y cómo los está utilizando”, dijo Lim. “Además, las expresiones regulares son muy difíciles de hacer, por lo que puede ser mejor confiar en bibliotecas como DOMPurify”.

Fuente: https://portswigger.net/daily-swig/zoom-whiteboard-patches-xss-bug