Hinter den Kulissen

Gesucht und gefunden: Sicherheitslücke in Zyxel Router

Martin Wrona
14.4.2025

Im Zuge der Vorbereitung auf die Einführung unseres Internetangebots haben wir als Security Team von Digitec Galaxus den von uns ausgelieferten Zyxel Router etwas genauer angeschaut. Während der Analyse des Routers stiessen wir schliesslich auf eine bis anhin unbekannte Schwachstelle (CVE-2024-12010) über die ich diesen Bericht schreibe.

Als Security-Team sind wir stets bestrebt, die neuesten Technologien und Angebote unseres Unternehmens auf Herz und Nieren zu prüfen. Als wir von unserem Internetangebot erfahren haben, war für unseren Teamleiter Thomas Houiellebecq sofort klar, dass wir dieser Umsetzung besondere Aufmerksamkeit schenken sollten, um etwaige Sicherheitsrisiken frühzeitig zu identifizieren. Das ist wichtig für uns, da wir dadurch direkt die Sicherheit unserer Kunden beeinflussen können.

Es dauerte nicht lange, bis wir vom verantwortlichen Projektteam einen der vorgesehen Zyxel Router erhielten und mit unserer Analyse beginnen konnten. Da wir von Zyxel eine personalisierte Firmware erhalten, wollten wir speziell den für uns angepassten Teil prüfen und anschliessend noch oberflächlich den Basisteil, der von allen Zyxel Kunden genutzt wird.

Admin Interface

Unser erster Schritt im Auditprozess besteht darin, uns einen Überblick zu verschaffen wie der Router aufgebaut ist und welche Funktionalitäten angeboten werden. Dazu starten wir Burp Suite, ein beliebtes Tool zum mitschneiden und manipulieren von Web Traffic. Damit sammeln wir alle Routen um diese im Anschluss einzeln zu prüfen.

Admin Interface Login
Admin Interface Login
Admin Interface
Admin Interface

Zu unserem Erstaunen sind alle POST Payloads und Responses verschlüsselt, was es für uns unglaublich aufwändig macht, einen Überblick zu verschaffen. Im ersten Moment bin ich davon ausgegangen, dass dies den Reverse-Engineering-Prozess aufwändiger machen soll, aber dazu später mehr. Zu diesem Zeitpunkt haben wir uns dazu entschlossen einen anderen Ansatz zu verfolgen.

Burp Request
Burp Request

Firmware Analyse

Glücklicherweise haben wir die unverschlüsselte Firmware die auf dem Gerät läuft und können diese auseinandernehmen. Da wir nicht alltäglich IoT / Closed Source Projekte analysieren hat Thomas einen Kollegen bei ONEKEY angefragt um einen PoC auf ihrer Platform durchzuführen.

ONEKEY ist eine Sicherheitsplattform für IoT-Geräte, die sich auf die automatisierte Analyse von IoT-Firmware spezialisiert hat. Ein zentraler Bestandteil der Plattform ist die Firmware-Binäranalyse, welche die Firmware entpackt, alle Assemblies klassifiziert, identifiziert und optional dekompiliert und anschliessend den Code auf potenzielle Sicherheitslücken prüft. Die automatisierten Prozesse der Plattform ermöglichen eine schnelle Identifikation von potentiellen Sicherheitsrisiken.

Nachdem die Firmware durch die Platform analysiert wurde, hatten wir eine Liste von Punkten, die wir genauer anschauen wollten.

ONEKEY Platform
ONEKEY Platform

Auf den ersten Blick haben wir einige potenzielle Schwachstellen, die es wert sind, genauer untersucht zu werden. Bei einer tiefergehenden Analyse zeigt sich jedoch, dass die meisten dieser Schwachstellen entweder nicht direkt zugänglich sind oder keine Benutzereingaben verarbeitet werden, die es ermöglichen würde die Schwachstelle auszunutzen. Dies bedeutet, dass die reale Bedrohung dieser Schwachstellen geringer ist, als es auf den ersten Blick erscheint.

Das spannendste Finding auf das ich hier genauer eingehe, wurde von der Platform als “Command Injection“ erkannt.

Zur genaueren Analyse und Verifizierung der Erkennungen habe ich die entsprechende Library aus der Firmware in Ghidra geladen, einem Open Source Reverse-Engineering-Tool der NSA. In der Ansicht des dekompilierten Codes sehen wir eine Funktion, die ein mailsend command mit Daten aus einem JSON zusammenbaut und anschliessend ausführt. Das Finding sieht vielversprechend aus, weil Daten wie Absender- und Empfänger-Email mit hoher Wahrscheinlichkeit Benutzereingaben sein sollten.

Ansicht des dekompilierten Codes
Ansicht des dekompilierten Codes

Exploit

Wir haben also eine verwundbare Aktion für die wir herausfinden müssen ob diese mit Benutzereingaben erreichbar ist und wie diese aufgerufen werden kann. Nach kurzer Suche wurde ich in den Log-Einstellungen fündig. Diese erlauben in regelmässigen Intervallen Syslogs an eine bestimmte E-Mail zu senden.

Um die Funktion auszunutzen, muss unser Payload einen Command innerhalb des eigentlichen Commands ausführen. Weitere Informationen zu Command Injection auf HackTricks

Sonderzeichen im UI
Sonderzeichen im UI

Das Admin-Panel hat uns jedoch keine Sonderzeichen eingeben lassen, die wir für unseren Angriff benötigten. Was wäre wenn es sich dabei nur um eine Client-Side Validierung handelt?

Um Requests zum Backend manipulieren zu können, mussten wir erstmal die Client-Side Verschlüsselung umgehen. Dazu habe ich im Chrome-Debugger einen Breakpoint in der entsprechenden Javascript AES-Verschlüsselungsfunktion gesetzt und konnte anschliessend über die Konsole den Wert vor der Verschlüsselung anpassen. Danach wurde der Programmfluss fortgesetzt und die manipulierte Anfrage an den Server übermittelt.

Chrome Debugger
Chrome Debugger

Das Resultat der manipulierten Anfrage sah wie folgt aus. Wie wir sehen handelte es sich bei der Sonderzeichenvalidierung lediglich um eine clientseitige Prüfung, die wir erfolgreich umgangen haben.

Log Einstellungen mit Payload
Log Einstellungen mit Payload

Die Konfiguration der Email Einstellungen war vorbereitet und wir mussten die Funktion auslösen damit unser Payload ausgeführt wird. Dazu verwendeten wir die Log Funktion “E-mail Log Now“.

Syslog Übersicht
Syslog Übersicht

Nachdem wir die Funktionalität der Command Injection verifiziert haben habe ich in Python einen einfachen Proof of Concept gebaut, welcher den vollständigen Ablauf automatisiert.

Während dieser Umsetzung musste ich die clientseitige Verschlüsselung nachbauen und habe folgenden Ablauf nachgestellt.

  1. Client generiert einen random AES Key
  2. Client holt sich einen Public Key über den Endpunkt /getRSAPublickKey
  3. Client sendet während des Logins den generierten AES Key verschlüsselt mit dem Public Key des Routers
  4. Client verschlüsselt bzw. entschlüsselt alle nachfolgenden Requests / Responses mit dem AES Key

Dieser Prozess ähnelt einer vereinfachten Implementierung von TLS. Die Geräte werden möglicherweise ohne oder wie bei uns mit einem selbstsignierten Zertifikat ausgeliefert, was darauf schliessen lässt, dass diese Methode als zusätzliche Schutzmassnahme gegen Man-in-the-Middle-Angriffe gedacht ist.

PoC Exploit

Wir haben Zyxel das Script zugesendet und ihr Security Team konnte das Problem in ihrer Standard Firmware reproduzieren.

Timeline:

Nov 25, 2024 Report
Nov 29, 2024 Review / Repro
Dez 10, 2024 CVE assigned
Dez 12, 2024 Fix Released
Mär 11, 2025 Public Advisory

Betroffene Geräte:

42 Geräte, von DSL/Ethernet CPE, Fiber ONT bis Wi-Fi extender. Siehe Zyxel Advisory

Fazit

Das Zyxel Security Team hat die gemeldeten Schwachstellen mit hoher Priorität behandelt und sie an die zuständige Produktgruppe weitergeleitet. Die Zusammenarbeit verlief professionell, und Dank des von mir bereitgestellten Proof of Concept konnte ein Patch zügig entwickelt und an die Kunden verteilt werden. Die ONEKEY-Plattform hat es uns ermöglicht, schnell einen umfassenden Überblick über die betroffene Firmware zu erhalten, was den gesamten Prozess erheblich beschleunigte.

Wusstest du, dass wir bei Digitec Galaxus ein Vulnerability Disclosure Program haben? Ethical Hackers können unter Einhaltung der Regeln auch bei uns nach Sicherheitslücken suchen. Weitere Informationen dazu gibt es auf unserer Security Seite.

32 Personen gefällt dieser Artikel


User Avatar
User Avatar
Martin Wrona
Senior Security Software Engineer
Martin.Wrona@digitecgalaxus.ch

Diese Beiträge könnten dich auch interessieren

  • Hinter den Kulissen

    Lego und iPhone: Danach sucht die Kundschaft am häufigsten

    von Manuel Wenk

  • Hinter den Kulissen

    Sicherheit beim Onlineshopping: So gehst du Internetbetrügern nicht ins Netz

    von Tobias Billeter

  • Hinter den Kulissen

    Gesucht und gefunden: Sicherheitslücken bei Microsoft Azure

    von Martin Wrona

2 Kommentare

Avatar
later