Están entre nosotros: explorando vulnerabilidades y código malicioso en Zoom para Windows

¿Quién agregó esta "pasa" a Zoom?


Recientemente, a menudo se escuchan los siguientes comentarios:

"Nosotros / yo no usamos Zoom para conversaciones confidenciales"



Pero, ¿qué sucede si a alguien además de la privacidad de la sesión de Zoom le importa la integridad de los datos en su dispositivo? Y no en vano, porque resultó que hay razones para esto. No solo están en juego los datos de la conferencia Zoom, sino también la integridad y confidencialidad de todo lo que un participante de la conferencia guarda en su computadora.

Entonces, pasé dos tardes (un total de aproximadamente 5-6 horas) diseccionando Zoom para Windows (versión 4.6.11 (20559.0413)). Estaba involucrado solo en análisis estático, no observando la aplicación en tiempo real. Pero eso fue suficiente para mí. Todo lo que encontré se describe en este artículo. Pero estoy seguro de que esto es solo la punta del iceberg. Imagine lo que un analista de seguridad con suficiente tiempo y presupuesto puede desenterrar ... Y deliberadamente busqué aquellas vulnerabilidades que podrían usarse para revelar información confidencial a terceros (por ejemplo, filtración de información en Facebook).

Realicé un estudio muy superficial y no entre en detalles. Hice esto en mi tiempo libre y ya no tengo la intención de hacerlo. Me puse un objetivo claro: evaluar la calidad del código en términos de seguridad y la presencia (o ausencia) de soporte para el software incluido en la aplicación Zoom (que es especialmente necesario cuando se utiliza una gran cantidad de bibliotecas de terceros).

Aplicación arcaica de 32 bits


¿Seriamente? ¡¿Pero por qué?! Microsoft agregó soporte para aplicaciones de 64 bits y varias mejoras de seguridad para procesadores de 64 bits, comenzando con Windows 7. Esto fue en 2009, hace once años. Y Windows 7 en sí mismo ha estado desactualizado (desde el 14 de enero de 2020, este sistema operativo ya no es compatible). Pero no, en 2020 Zoom todavía solo lanza aplicaciones de Windows de 32 bits.

zData.dll


zData.dll usa un componente con vulnerabilidades. La biblioteca de OpenSSL 1.0.2 en desuso (fechada el 27 de marzo de 2018) es conocida por sus vulnerabilidades que nadie solucionará.

Desde diciembre de 2019, el trabajo en OpenSSL 1.0.2 ha sido descontinuado. Esto es lo que escriben sus desarrolladores:

“Según las versiones actuales y futuras, el proyecto OpenSSL tomó las siguientes decisiones:

  • La próxima versión de OpenSSL será 3.0.0.
  • La versión 1.1.1 será compatible hasta 2023-09-11 (LTS).
  • La versión 1.0.2 ya no es compatible. El soporte pagado mejorado ya está disponible .
  • Las versiones 1.1.0, 1.0.1, 1.0.0 y 0.9.8 ya no son compatibles ".

O aqui :



Combinando sentencias SQL


  • CWE-89 : Neutralización incorrecta de elementos especiales de comandos SQL (inyección SQL)

En zData.dll, el backend se usa para almacenar varios datos de sesión y configuración en una base de datos cifrada de SQLite. En algunos casos, las declaraciones SQL en el código parecen estar simplemente concatenadas, como se muestra a continuación:

Ejemplo 1:



Ejemplo 2:



Dependiendo de la implementación del operador + =, zData.dll podría crear vulnerabilidades de inyección SQL que podrían conducir a la divulgación de información o ejecución de código arbitrario en dispositivos de usuario final de Zoom.

Oh, disculpe ... pero esto, por casualidad, ¿no es la clave para el descifrado criptográfico de una base de datos SQLite encriptada?



No estoy seguro, en realidad :-) Sin embargo, el cifrado de la base de datos, en principio, no interfiere con el acceso a los datos confidenciales almacenados allí. Parece que Zoom usa la base de datos SQLite para almacenar registros de historial, registros y posiblemente también para almacenar datos confidenciales como contraseñas y / o claves criptográficas. No profundicé en el uso de SQLite como contenedor de datos; dejo esta diversión a lectores más curiosos.

Zzhost.dll


Amenaza de desbordamiento del búfer


Mirando a través de las tablas de importación binarias, encontré una llamada a sprintf (). Pero sabes que sprintf () es una función potencialmente peligrosa, y los compiladores dan advertencias si la usas. Parece que tales advertencias no molestan a los desarrolladores de Zoom.

  • CWE-120 : copiando el contenido del búfer sin verificar primero el tamaño de los datos de entrada (en la función de registro)
  • CWE-676 : Uso de funciones potencialmente peligrosas (sprintf)



Para explotar con éxito esta vulnerabilidad, es necesario controlar el contenido del búfer de origen. No he tratado de hacer esto yo mismo. Sin embargo, dado que esta es una función de registro (es decir, registro), los atacantes podrían afectar teóricamente el contenido del búfer original. Una vez más, yo mismo no comprobé si esto es realmente posible. Pero incluso el hecho de que ocurra tal oportunidad e ignorar las advertencias sobre los peligros del uso de funciones es una práctica muy mala. Desarrolladores! ¡No hagas eso!

zCrashReport.exe


Guardar claves de registro de Windows


El registro de Windows contiene información bastante importante, especialmente cuando accedemos a través de un proceso con derechos privilegiados.

Encontré esto:



“Volcar las claves del registro” me suena como una función maliciosa, así que traté de averiguar si realmente guarda las claves y los valores del registro de Windows. Sí, es así, encontré el fragmento correspondiente en el código:



Captura de pantalla en Crash Reporter


zCrashReport.dll nos ofrece las siguientes funciones:



En crashReport.exe, las funciones API de Windows se utilizan para capturar la pantalla y las ventanas.



¿Crees que Zoom envía los datos capturados desde la pantalla a sus servidores? Si es así, esto puede considerarse como código malicioso.

Airhost.exe


Componentes con vulnerabilidades


Airhost.exe usa libcurl 7.36.0 (lanzado el 26 de marzo de 2014), en el que se encontraron 52 vulnerabilidades. Bueno, curl, a su vez, incluye libssh2, que también fue señalado por una serie de vulnerabilidades:




Afortunadamente, estas vulnerabilidades no representan una amenaza específica para los usuarios de Zoom. Sin embargo, ¿por qué usar bibliotecas obsoletas y vulnerables si te importa tu código? Es más fácil usar la última versión que adivinar si la próxima vulnerabilidad encontrada afectará su aplicación, ¿verdad?

Cifrado / descifrado de clave física


Airhost.exe utiliza la constante como clave de cifrado simétrica: la línea de salida SHA256 "0123425234234fsdfsdr3242" se utiliza para cifrar / descifrar AES-256 a través de OpenSSL.



Y la línea "3423423432325249" se usa como vector de inicialización IV.



Vulnerabilidades zWebService.dll y tp.dll


zWebService.dll y tp.dll usan libcurl 7.55.1. Aunque esta biblioteca no es tan antigua como libcurl 7.36.0 (que se usa en airhost.exe), todavía está un poco desactualizada. Si la seguridad del usuario final fuera realmente importante para los desarrolladores, examinarían esta lista de vulnerabilidades:



Vulnerabilidades turbojpeg.dll


Turbojpeg.dll usa libjpeg-turbo 2.0.0 (compilación 20190715). Aquí hay una lista de vulnerabilidades en la clase de ejecución remota de código turbojpeg / libjpeg-turbo:



¿Que sigue?


En este punto, dejé de profundizar en el interior de Zoom para Windows. Para aquellos que quieran continuar, con mucho gusto les doy la batuta:

sha256 sumas de verificación de los archivos ejecutables de Zoom 4.6.11 (20559.0413)


All Articles