Ils sont parmi nous: explorer les vulnérabilités et les codes malveillants dans Zoom pour Windows

Qui a ajouté ce «raisin sec» à Zoom?


Récemment, on entend souvent les remarques suivantes:

«Nous / je n'utilise pas Zoom pour des conversations confidentielles»



Mais que se passe-t-il si quelqu'un d'autre que la confidentialité de la session Zoom se soucie de l'intégrité des données sur son appareil? Et pas en vain, car il s'est avéré qu'il y avait des raisons à cela. Non seulement les données de la conférence Zoom sont en jeu, mais aussi l'intégrité et la confidentialité de tout ce qu'un participant à la conférence enregistre sur son ordinateur.

J'ai donc passé deux soirées (un total d'environ 5-6 heures) à disséquer Zoom pour Windows (version 4.6.11 (20559.0413)). Je n'étais engagé que dans l'analyse statique, sans observer l'application en temps réel. Mais cela me suffisait. Tout ce que j'ai trouvé est décrit dans cet article. Mais je suis sûr que ce n'est que la pointe de l'iceberg. Imaginez ce qu'un analyste de sécurité avec suffisamment de temps et de budget peut déterrer ... Et j'ai délibérément recherché les vulnérabilités qui pourraient être utilisées pour divulguer des informations confidentielles à des tiers (par exemple, une fuite d' informations sur Facebook).

J'ai mené une étude très superficielle et je ne suis pas entré dans les détails. Je l'ai fait pendant mon temps libre et je n'ai plus l'intention de le faire. Je me suis fixé un objectif clair: évaluer la qualité du code en termes de sécurité et la présence (ou l'absence) de prise en charge du logiciel inclus dans l'application Zoom (ce qui est particulièrement nécessaire lors de l'utilisation d'un grand nombre de bibliothèques tierces).

Application archaïque 32 bits


Sérieusement? Mais pourquoi?! Microsoft a ajouté la prise en charge des applications 64 bits et diverses améliorations de sécurité pour les processeurs 64 bits, à partir de Windows 7. C'était en 2009, il y a onze ans. Et Windows 7 lui-même est depuis longtemps dépassé (depuis le 14 janvier 2020, ce système d'exploitation n'est plus pris en charge). Mais non, en 2020, Zoom ne publie toujours que des applications Windows 32 bits.

zData.dll


zData.dll utilise un composant avec des vulnérabilités. La bibliothèque OpenSSL 1.0.2 obsolète (datée du 27 mars 2018) est connue pour ses vulnérabilités que personne ne corrigera.

Depuis décembre 2019, les travaux sur OpenSSL 1.0.2 ont été interrompus. Voici ce que ses développeurs écrivent :

«Selon les versions actuelles et futures, le projet OpenSSL a pris les décisions suivantes:

  • La prochaine version d'OpenSSL sera 3.0.0.
  • La version 1.1.1 sera prise en charge jusqu'au 2023-09-11 (LTS).
  • La version 1.0.2 n'est plus prise en charge. Une assistance payante améliorée est désormais disponible .
  • Les versions 1.1.0, 1.0.1, 1.0.0 et 0.9.8 ne sont plus prises en charge. "

Ou ici :



Combinaison d'instructions SQL


  • CWE-89 : Neutralisation incorrecte des éléments spéciaux des commandes SQL (injection SQL)

Dans zData.dll, le backend est utilisé pour stocker diverses données de session et de configuration dans une base de données SQLite chiffrée. Dans certains cas, les instructions SQL dans le code semblent être simplement concaténées, comme illustré ci-dessous:

Exemple 1:



Exemple 2:



Selon la mise en œuvre de l'opérateur + =, zData.dll pourrait potentiellement créer des vulnérabilités d'injection SQL qui pourraient conduire à la divulgation d'informations ou l'exécution de code arbitraire sur les appareils de l'utilisateur final Zoom.

Oh, excusez-moi ... mais cela, par hasard, n'est-ce pas la clé du décryptage cryptographique d'une base de données SQLite cryptée?



Je ne sais pas vraiment, en fait :-) Cependant, le cryptage de la base de données, en principe, n'interfère pas avec l'accès aux données confidentielles qui y sont stockées. Zoom semble utiliser une base de données SQLite pour stocker des enregistrements d'historique, des journaux et éventuellement également pour stocker des données sensibles telles que des mots de passe et / ou des clés cryptographiques. Je n'ai pas approfondi l'utilisation de SQLite comme conteneur de données; je laisse ce plaisir aux lecteurs les plus curieux.

Zzhost.dll


Menace de dépassement de tampon


En parcourant les tables d'importation binaires, je suis tombé sur un appel à sprintf (). Mais vous savez que sprintf () est une fonction potentiellement dangereuse et les compilateurs donnent des avertissements si vous l'utilisez. Il semble que de tels avertissements ne dérangent pas les développeurs de Zoom.

  • CWE-120 : copier le contenu du tampon sans d'abord vérifier la taille des données d'entrée (dans la fonction de journalisation)
  • CWE-676 : Utilisation de fonctions potentiellement dangereuses (sprintf)



Pour exploiter avec succès cette vulnérabilité, il est nécessaire de contrôler le contenu du tampon source. Je n'ai pas essayé de le faire moi-même. Cependant, comme il s'agit d'une fonction de journalisation (c'est-à-dire de journalisation), les attaquants pourraient théoriquement affecter le contenu du tampon d'origine. Encore une fois, je n'ai moi-même pas vérifié si cela était réellement possible. Mais même le fait même de l'occurrence d'une telle opportunité et d'ignorer les avertissements sur les dangers de l'utilisation des fonctions est une très mauvaise pratique. Développeurs! Ne faites pas cela!

zCrashReport.exe


Enregistrement des clés de registre Windows


Le registre Windows contient des informations assez importantes - en particulier lorsque nous y accédons via un processus avec des droits privilégiés.

J'ai trouvé ceci:



«Vider les clés de registre» me semble être une fonction malveillante, j'ai donc essayé de savoir si cela enregistrait vraiment les clés et les valeurs du registre Windows. Oui, c'est vrai, j'ai trouvé le fragment correspondant dans le code:



Capture d'écran dans Crash Reporter


zCrashReport.dll nous offre les fonctions suivantes:



Dans crashReport.exe, les fonctions de l'API Windows sont utilisées pour capturer l'écran et les fenêtres.



Pensez-vous que Zoom envoie les données capturées de l'écran à ses serveurs? Si c'est le cas, cela peut être considéré comme un code malveillant.

Airhost.exe


Composants présentant des vulnérabilités


Airhost.exe utilise libcurl 7.36.0 (publié le 26 mars 2014), dans lequel 52 vulnérabilités ont été trouvées . Eh bien, curl, à son tour, inclut libssh2, qui a également été noté par un certain nombre de vulnérabilités:




ces vulnérabilités, heureusement, ne constituent pas une menace spécifiquement pour les utilisateurs de Zoom. Cependant, pourquoi utiliser des bibliothèques obsolètes et vulnérables si vous vous souciez de votre code? Il est plus facile d'utiliser la dernière version que de deviner si la prochaine vulnérabilité trouvée affectera votre application, n'est-ce pas?

Cryptage / décryptage des clés matérielles


Airhost.exe utilise la constante comme clé de chiffrement symétrique: la ligne de sortie SHA256 «0123425234234fsdfsdr3242» est utilisée pour chiffrer / déchiffrer AES-256 via OpenSSL.



Et la ligne "3423423432325249" est utilisée comme vecteur d'initialisation IV.



Vulnérabilités zWebService.dll et tp.dll


zWebService.dll et tp.dll utilisent libcurl 7.55.1. Même si cette bibliothèque n'est pas aussi ancienne que libcurl 7.36.0 (qui est utilisée dans airhost.exe), elle est toujours un peu dépassée. Si la sécurité des utilisateurs finaux était vraiment importante pour les développeurs, ils examineraient cette liste de vulnérabilités:



Vulnérabilités turbojpeg.dll


Turbojpeg.dll utilise libjpeg-turbo 2.0.0 (build 20190715). Voici une liste de vulnérabilités dans la classe d'exécution de code à distance turbojpeg / libjpeg-turbo:



Et après?


À ce stade, j'ai arrêté de creuser l'intérieur de Zoom pour Windows. Pour ceux qui veulent continuer, je suis heureux de passer le relais :

sha256 checksums of Zoom 4.6.11 (20559.0413) executable files


All Articles