Am 12. Mai 2022 wurden Details zu einer Sicherheitslücke veröffentlicht, die mehrere VPN- und Firewall-Geräte von Zyxel Networks betrifft. Die als CVE-2022-30525 mit einem CVSS-Score von 9.8 (kritisch) eingestufte Schwachstelle ermöglicht es einem Angreifer, ohne Authentifizierung beliebige Befehle auf dem Gerät auszuführen. Die von Rapid7-Forschern entdeckte Schwachstelle lässt sich leicht ausnutzen und wurde bereits erfolgreich in der freien Wildbahn eingesetzt.
Censys war in der Lage, Fingerabdrücke zu erstellen und bestimmte laufende Versionen dieser Geräte zu identifizieren. Zum Zeitpunkt der Erstellung dieses Artikels beobachteteCensys 19.506 Zyxel Firewall/VPN-Gerätevon denen über 7.500 Geräte für diesen speziellen Angriff anfällig sein könnten.
Die gute Nachricht ist, dass viele dieser Geräte anscheinend automatische Updates aktiviert haben, da wir in den letzten Tagen bereits Tausende von Hosts mit der neuesten gepatchten Firmware-Version 5.30 beobachtet haben.
ATP-Reihe
Zusammenfassung
USG FLEX 50(W)
USG FLEX 100(W), 200, 500, 700
Identifizierung und Fingerabdrücke von Zyxel-Geräten
Um den tatsächlichen Umfang dieser Schwachstelle zu ermitteln, mussten wir eine Methode finden, um bestimmte Versionen der laufenden Software zu identifizieren. Manchmal ist das leichter gesagt als getan, und dieser Anbieter bildet da keine Ausnahme. In unseren Scandaten gibt es keine spezifischen Informationen über die tatsächliche Version der laufenden Software. Aber wir haben uns davon nicht abschrecken lassen, da wir schon früher erfolgreich nicht versionierbare Software versioniert haben.
Der erste Schritt bestand darin, die Artefakte und Daten, die wir jetzt haben, zu betrachten, um zu sehen, ob wir möglicherweise etwas verwenden können, um ein Gerät einer bestimmten Version zuzuordnen. Es schien, dass jedes Zyxel-Gerät, das wir in unseren Daten finden konnten, einen gemeinsamen Satz von Javascript-Dateien hatte, die das Gerät importierte:
Eine der Javascript-Include-Dateien, die unsere Aufmerksamkeit erregte, war die Datei "/ext-js/app/common/zld_product_spec.js", die auch ein Abfrageargument namens "v" gefolgt von einer Zahlenfolge enthielt. Zum Beispiel:
Da unsere Daten nur Informationen enthalten, die im Stammverzeichnis des HTTP-Dienstes zu finden sind, mussten wir diese spezielle, öffentlich zugängliche Datei manuell abrufen. Der Inhalt dieser Datei enthält über tausend Zeilen mit Javascript-Variablen, darunter eine Variable namens "ZLDCONFIG_CLOUD_HELP_VERSION".
Es scheint, dass diese Variable in der gesamten Software verwendet wird, um Links zur versionsspezifischen Dokumentation auf der Kundensupportseite von Zyxel zu generieren. Aber wenn unsere Annahmen richtig sind, können wir dies nutzen, um den Link "?v=220420024630" mit einer tatsächlichen Version des Geräts zu verknüpfen.
Wir mussten eine Liste der Hosts und der numerischen Zeichen generieren, die der Datei "zld_product_spec.js" folgten, indem wir nur die Daten in unserem Datensatz verwendeten. Dies geschieht am besten mit der BigQuery-Schnittstelle von Censys(verfügbar für Unternehmenskunden):
Das Ergebnis sieht wie folgt aus und kann als CSV-Datei gespeichert werden:
Wir haben dann die vollständige Liste genommen und ein kleines benutzerdefiniertes Skript geschrieben, das automatisch die Datei "/ext-js/app/common/zld_product_spec.js" vom Host abruft, die Ergebnisse analysiert und eine Protokolldatei erstellt, die die Zahlen nach dem Argument "v" und den Wert der Variablen "ZLDCONFIG_CLOUD_HELP_VERSION" enthält, die in der eigentlichen Javascript-Datei "zld_product_spec" gefunden wurde. Zum Beispiel,
Nach eingehender Analyse dieser Ergebnisse haben wir festgestellt, dass wir nur die ersten vier Ziffern dieser "v"-Nummer betrachten müssen, um sie mit einer bestimmten Firmware-Version in Verbindung zu bringen. Und da wir nur Versionen zwischen 5.00 und 5.30 identifizieren müssen, können wir mit unseren Daten Folgendes sagen:
- v5.00 hat einen "v"-Argumentwert im Bereich von '2106' und '2108'.
- v5.10 hat einen "v"-Argumentwert im Bereich von '2109' und '2111'.
- v5.20 hat einen "v"-Argumentwert im Bereich von '2201' und '2203'.
- v5.30 (die letzte und erste nicht anfällige Version) hat einen "v"-Argumentwert, der immer mit "2204" beginnt
Mit diesen Informationen können wir uns dann ein vollständiges Bild vom Internet und den Auswirkungen dieser Schwachstelle auf das Internet machen. Auch hier ist die beste Möglichkeit, dies zu tun, die Verwendung der Schnittstelle Censys BigQuery:
Das ergab insgesamt 71 Ergebnisse, die alle einer bestimmten Firmware-Version zugeordnet wurden. Aus diesen Daten haben wir dann die zusammenfassenden Berichte am Anfang dieses Beitrags erstellt.
Was kann getan werden?
- Censys ASM-Kunden haben Zugriff auf zwei neue Risiken, eines, das vor einer ungeschützten Zyxel-Verwaltungsschnittstelle warnt, und ein weiteres, das die in dieser Untersuchung entdeckten anfälligen Versionen abdeckt.
- Administratoren sollten die Anweisungen im Zyxel-Artikel über diese Sicherheitslücke befolgen .