Sie gehören zu uns: Erkundung von Schwachstellen und bösartigem Code in Zoom für Windows

Wer hat diese "Rosine" zu Zoom hinzugefügt?


In letzter Zeit hört man oft die folgenden Bemerkungen:

„Wir / ich verwenden Zoom nicht für vertrauliche Gespräche.“



Aber was ist, wenn sich jemand außer dem Datenschutz der Zoom-Sitzung um die Integrität der Daten auf seinem Gerät kümmert? Und nicht umsonst, denn wie sich herausstellte, gibt es dafür Gründe. Es geht nicht nur um Zoom-Konferenzdaten, sondern auch um die Integrität und Vertraulichkeit von allem, was ein Konferenzteilnehmer auf seinem Computer speichert.

Also habe ich zwei Abende (insgesamt ca. 5-6 Stunden) damit verbracht, Zoom für Windows (Version 4.6.11 (20559.0413)) zu analysieren. Ich beschäftigte mich nur mit statischen Analysen und beobachtete die Anwendung nicht in Echtzeit. Aber das hat mir gereicht. Alles, was ich gefunden habe, ist in diesem Artikel beschrieben. Aber ich bin sicher, das ist nur die Spitze des Eisbergs. Stellen Sie sich vor , was ein Sicherheitsanalytiker mit genug Zeit und Budget ausgraben kann ... Und ich bewusst für diese Schwachstellen gesucht , die verwendet werden könnten , um zu offenbaren vertrauliche Informationen an Dritte (zum Beispiel Informationen Leckage auf Facebook).

Ich habe eine sehr oberflächliche Studie durchgeführt und bin nicht auf Details eingegangen. Ich habe das in meiner Freizeit gemacht und ich habe nicht mehr vor, das zu tun. Ich habe mir ein klares Ziel gesetzt - die Qualität des Codes im Hinblick auf die Sicherheit und das Vorhandensein (oder Fehlen) von Unterstützung für die in der Zoom-Anwendung enthaltene Software zu bewerten (was insbesondere bei Verwendung einer großen Anzahl von Bibliotheken von Drittanbietern erforderlich ist).

Archaische 32-Bit-Anwendung


Ernsthaft? Aber warum?! Microsoft hat die Unterstützung für 64-Bit-Anwendungen und verschiedene Sicherheitsverbesserungen für 64-Bit-Prozessoren hinzugefügt, beginnend mit Windows 7. Dies war 2009, vor elf Jahren. Und Windows 7 selbst ist seit langem veraltet (seit dem 14. Januar 2020 wird dieses Betriebssystem nicht mehr unterstützt). Aber nein, im Jahr 2020 veröffentlicht Zoom immer noch nur 32-Bit-Windows-Anwendungen.

zData.dll


zData.dll verwendet eine Komponente mit Schwachstellen. Die veraltete OpenSSL 1.0.2-Bibliothek (vom 27. März 2018) ist bekannt für ihre Schwachstellen , die niemand beheben kann.

Seit Dezember 2019 wurden die Arbeiten an OpenSSL 1.0.2 eingestellt. Die Entwickler schreiben

Folgendes : „Gemäß aktuellen und zukünftigen Versionen hat das OpenSSL-Projekt die folgenden Entscheidungen getroffen:

  • Die nächste Version von OpenSSL wird 3.0.0 sein.
  • Version 1.1.1 wird bis 2023-09-11 (LTS) unterstützt.
  • Version 1.0.2 wird nicht mehr unterstützt. Erweiterter kostenpflichtiger Support ist jetzt verfügbar .
  • Die Versionen 1.1.0, 1.0.1, 1.0.0 und 0.9.8 werden nicht mehr unterstützt. "

Oder hier :



SQL-Anweisungen kombinieren


  • CWE-89 : Falsche Neutralisierung spezieller Elemente von SQL-Befehlen (SQL-Injection)

In zData.dll werden im Backend verschiedene Sitzungs- und Konfigurationsdaten in einer verschlüsselten SQLite-Datenbank gespeichert. In einigen Fällen scheinen die SQL-Anweisungen im Code einfach verkettet zu sein, wie unten gezeigt:

Beispiel 1:



Beispiel 2:



Abhängig von der Implementierung des Operators + = kann zData.dll möglicherweise SQL-Injection-Schwachstellen erzeugen, die zur Offenlegung von Informationen führen können oder willkürliche Codeausführung auf Zoom-Endbenutzergeräten.

Oh, entschuldigen Sie ... aber dies ist zufällig nicht der Schlüssel für die kryptografische Entschlüsselung einer verschlüsselten SQLite-Datenbank?



Eigentlich weiß ich es nicht genau :-) Die Verschlüsselung der Datenbank beeinträchtigt jedoch grundsätzlich nicht den Zugriff auf die dort gespeicherten vertraulichen Daten. Zoom scheint eine SQLite-Datenbank zum Speichern von Verlaufsdatensätzen, Protokollen und möglicherweise auch zum Speichern vertraulicher Daten wie Kennwörter und / oder kryptografischer Schlüssel zu verwenden. Ich habe mich nicht eingehend mit SQLite als Datencontainer befasst und überlasse diesen Spaß eher neugierigen Lesern.

Zzhost.dll


Pufferüberlaufbedrohung


Beim Durchsuchen der binären Importtabellen stieß ich auf einen Aufruf von sprintf (). Sie wissen jedoch, dass sprintf () eine potenziell gefährliche Funktion ist, und Compiler geben Warnungen aus, wenn Sie sie verwenden. Es scheint, dass solche Warnungen Zoom-Entwickler nicht stören.

  • CWE-120 : Kopieren des Pufferinhalts ohne vorherige Überprüfung der Größe der Eingabedaten (in der Protokollierungsfunktion)
  • CWE-676 : Verwenden potenziell gefährlicher Funktionen (sprintf)



Um diese Sicherheitsanfälligkeit erfolgreich auszunutzen, muss der Inhalt des Quellpuffers gesteuert werden. Ich habe nicht versucht, dies selbst zu tun. Da es sich jedoch um eine Protokollierungsfunktion (d. H. Protokollierungsfunktion) handelt, könnten Angreifer theoretisch den Inhalt des ursprünglichen Puffers beeinflussen. Ich selbst habe noch einmal nicht geprüft, ob dies tatsächlich möglich ist. Aber selbst die Tatsache, dass sich eine solche Gelegenheit ergibt und Warnungen vor den Gefahren der Verwendung von Funktionen ignoriert werden, ist eine sehr schlechte Praxis. Entwickler! TU das nicht!

zCrashReport.exe


Speichern von Windows-Registrierungsschlüsseln


Die Windows-Registrierung enthält sehr wichtige Informationen - insbesondere, wenn wir über einen Prozess mit privilegierten Rechten darauf zugreifen.

Ich fand



Folgendes : "Registrierungsschlüssel ausgeben" klingt für mich nach einer böswilligen Funktion, daher habe ich versucht herauszufinden, ob die Schlüssel und Werte der Windows-Registrierung wirklich gespeichert werden. Ja, ich habe das entsprechende Fragment im Code gefunden:



Screenshot in Crash Reporter


zCrashReport.dll bietet uns die folgenden Funktionen:



In crashReport.exe werden die Windows-API-Funktionen zum Erfassen des Bildschirms und der Fenster verwendet.



Denken Sie, dass Zoom die erfassten Daten vom Bildschirm an seine Server sendet? Wenn ja, kann dies als schädlicher Code angesehen werden.

Airhost.exe


Komponenten mit Sicherheitslücken


Airhost.exe verwendet libcurl 7.36.0 (veröffentlicht am 26. März 2014), in dem 52 Sicherheitslücken gefunden wurden . Nun, Curl enthält wiederum libssh2, was auch durch eine Reihe von Sicherheitslücken festgestellt wurde :




Diese Sicherheitslücken stellen glücklicherweise keine spezifische Bedrohung für Zoom-Benutzer dar. Warum jedoch veraltete und anfällige Bibliotheken verwenden, wenn Sie sich überhaupt für Ihren Code interessieren? Es ist einfacher, die neueste Version zu verwenden, als zu erraten, ob sich die nächste gefundene Sicherheitsanfälligkeit auf Ihre Anwendung auswirkt, oder?

Hard Key Verschlüsselung / Entschlüsselung


Airhost.exe verwendet die Konstante als symmetrischen Verschlüsselungsschlüssel: Die SHA256 Ausgangsleitung „0123425234234fsdfsdr3242“ wird verwendet zum Verschlüsseln / Entschlüsseln AES-256 via OpenSSL.



Und die Zeile „3423423432325249“ wird verwendet als Initialisierungsvektor IV.



Sicherheitslücken zWebService.dll und tp.dll


zWebService.dll und tp.dll verwenden libcurl 7.55.1. Obwohl diese Bibliothek nicht so alt ist wie libcurl 7.36.0 (das in airhost.exe verwendet wird), ist sie immer noch etwas veraltet. Wenn die Sicherheit der Endbenutzer für Entwickler wirklich wichtig wäre, würden sie diese Liste von Sicherheitslücken untersuchen:



Sicherheitslücken turbojpeg.dll


Turbojpeg.dll verwendet libjpeg-turbo 2.0.0 (Build 20190715). Hier ist eine Liste von Schwachstellen in der Remotecode-Ausführungsklasse turbojpeg / libjpeg-turbo:



Was weiter?


Zu diesem Zeitpunkt hörte ich auf, mich mit den Innenseiten von Zoom für Windows zu befassen. Für diejenigen, die fortfahren möchten, übergebe ich gerne den Staffelstab:

sha256 Prüfsummen der ausführbaren Dateien von Zoom 4.6.11 (20559.0413)


All Articles