Protokoll seziert
Die letzten Bytes ab Stelle »0x29«
sind jeweils die Namen. Das Byte davor gibt deren Länge an. Ein Vergleich des Pakets mit den anderen Veränderungen ergibt, dass die zwei Bytes davor signalisieren, was geändert werden soll. Nun ist das Puzzle schon fast komplett.
Die Struktur des Switch-Protokolls sieht wie folgt aus: Zuerst kommt ein in der Länge konstanter Teil mit Typ und Flag sowie den MAC-Adressen von Sender und Empfänger. Nach dem Header folgt ab Stelle »0x20«
eine beliebige Anzahl an Befehlen. Ein solcher Befehl besteht aus 2 Bytes: eines für den Befehlstyp sowie eines für die Länge der folgenden Daten. Danach kommen die Nutzdaten, der letzte Befehl hat immer den Wert »0xFFFF«
, was das Ende signalisiert. Bei einer Query werden Daten vom Switch abgeholt und nicht gesendet, deshalb ist die Länge der Nutzdaten immer 0. Beim Transmit werden Daten im Switch geändert. Wie eine Passwortänderung aussieht, zeigt Listing 5.
Listing 5
Passwortänderung
01 Header 02 CMD=0x000a 03 Länge=12 04 Data=old_password 05 CMD=0x0009 06 Länge=12 07 Data=new_password 08 CMD=0xFFFF 09 Länge=0
Mit diesen Erkenntnissen konnte der Autor eine Python-Funktion schreiben, um Befehle an den Router zu schicken (Listing 6). Leider funktionierte das Skript nicht auf Anhieb wie gewünscht, die Passwortänderung schlug zunächst fehl. Sobald er jedoch die gleichen Zeichenketten für das alte und das neue Passwort wählte, funktionierte es plötzlich: Ein neues Passwort lässt sich ohne Kenntnis des alten setzen.
Listing 6
Befehl per Python schicken
01 def transmit(self, cmd_arr, mac):
02 ipadr = self.ip_from_mac(mac)
03 data = self.baseudp(destmac=mac, ctype=self.CTYPE_TRANSMIT_REQUEST)
04 for cmd, pdata in cmd_arr.items():
05 data += self.addudp(cmd, pdata)
06 data += self.addudp(self.CMD_END)
07 self.send(ipadr, self.SENDPORT, data)
08 time.sleep(0.7)
09 self.recv()
10
11 # Der Funktion einen cmd_arr Hash übergeben:
12
13 cmd_arr={
14 CMD_PASSWORD:"old_password",
15 CMD_NEW_PASSWORD:"new_password"
16 }
Eine Analyse der Kommunikation mit Wireshark zeigt, warum das funktioniert: Hashes sind in Python nicht sortiert. Das Programm schickt rein zufällig zuerst das neue Passwort und dann das alte. Damit hatte der Entwickler des Switch wohl nicht gerechnet und erlaubte daher die Passwortänderung. Hier liegt eine handfeste Sicherheitslücke vor.
Gewissensfrage
Der Entdecker einer Schwäche hat mehrere Handlungsoptionen. Er kann die Lücke an Kriminelle verkaufen, um sich zu bereichern. Er kann den Befund auch sofort im Internet publizieren. Damit wären alle Switches des Herstellers potenziell angreifbar und Netgear müsste reagieren. Freundlicher ist es, sich zunächst beim Hersteller zu melden.
Der Autor entschied sich für die zuletzt genannte Option: Am Pfingstmontag 2012 schickte er eine E-Mail an Netgear Deutschland. Danach passierte erst einmal gar nichts. Am Donnerstag beschloss er, ein Fax an den Hersteller zu schicken. Als auch das keine Reaktion hervorrief, versuchte er sein Glück bei der Telefonhotline, die allerdings die Seriennummer des Switch haben wollte. Die wollte der Verfasser Netgear aber nicht anvertrauen, weil sie als Standardpasswort dient, um sich bei Verlust des Passworts in das Gerät einzuloggen [6].
Also meldete er sich zähneknirschend auf der Webseite von Netgear an, denn dort brauchen Kunden für eine Anfrage zunächst keine Seriennummer, und verlangte dort einen persönlichen Ansprechpartner. Dem schickte er einen Mitschnitt der Pakete, eine Erklärung und ein Beispielskript. Der Ansprechpartner konnte aber auch 20 Tage später nicht beantworten, ob der Hersteller das Problem rekonstruiert habe. Stattdessen fragte auch dieser jetzt nach der Seriennummer des Geräts – und schloss das Ticket, als er keine erhielt.
Schließlich wandte sich der Autor an das Linux-Magazin, schilderte den Fall, legte die E-Mails vor und gab so den Anstoß zu diesem Artikel. Die Redaktion fragte über die Presseagentur bei Netgear an, ob die Meldung der Sicherheitslücke eingegangen sei. Der Hersteller antwortete, das Problem in der Firmwareversion 1.0.6 sei bekannt. Netgear möchte die Sicherheitslücke mit einem künftigen Update schließen. Bei Redaktionsschluss lag jedoch keine aktualisierte Firmware vor.
Diesen Artikel als PDF kaufen
Express-Kauf als PDF
Umfang: 4 Heftseiten
Preis € 0,99
(inkl. 19% MwSt.)
Als digitales Abo
Weitere Produkte im Medialinx Shop »
Versandartikel
Onlineartikel
Alle Rezensionen aus dem Linux-Magazin
- Buecher/07 Bücher über 3-D-Programmierung sowie die Sprache Dart
- Buecher/06 Bücher über Map-Reduce und über die Sprache Erlang
- Buecher/05 Bücher über Scala und über Suchmaschinen-Optimierung
- Buecher/04 Bücher über Metasploit sowie über Erlang/OTP
- Buecher/03 Bücher über die LPI-Level-2-Zertifizierung
- Buecher/02 Bücher über Node.js und über nebenläufige Programmierung
- Buecher/01 Bücher über Linux-HA sowie über PHP-Webprogrammierung
- Buecher/12 Bücher über HTML-5-Apps sowie Computer Vision mit Python
- Buecher/11 Bücher über Statistik sowie über C++-Metaprogrammierung
- Buecher/10 Bücher zu PHP-Webbots sowie zur Emacs-Programmierung
Insecurity Bulletin
Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...





