Solarinverter: Sicherheit auf dem Prüfstand

Seite 8: Fröhliches Schaudern

Inhaltsverzeichnis

Zwar war ich froh darüber, etwas Sinn und Erkenntnisse in den Datenpaketen finden zu können, aber es bedeutete auch etwas anderes. Was auch immer da über die Leitungen ging, war aus Cybersecurity-Perspektive komplett ungeschützt. Wenn es jemandem gelänge, das Datenprotokoll, also die Interpretationsvorschrift der Bits nur richtig zu verstehen – und in der Regel auch einen Prüfsummen-Algorithmus –, dann wäre er oder sie in der Lage, Pakete so zu erstellen, wie es der Inverter oder das Backend tun. Da es, bis auf die Seriennummer im ungeschützten Payload, keine Authentifizierungsmechanismen zu geben scheint, anhand derer das Backend erkennt, wer da spricht, könnte jeder ein Gerät oder ein Backend selbst vortäuschen (engl. spoofing).

Das oben erwähnte PySolarman-Projekt war davon schon 90 Prozent des Weges gegangen. Es beschreibt zwar eher den generellen Aufbau und erlaubt dem Hersteller noch ein paar Freiheiten, dennoch ist es kein Hexenwerk eigene Pakete zu erzeugen. Das Projekt Deye Microinverter - Cloud-free hat das sogar schon vorgemacht und ein Fake-Backend erstellt, das sich für den Inverter so „anfühlt“ wie das echte. Es ist eine der Möglichkeiten, die Kommunikation mit dem echten Backend obsolet zu machen.

Mein Ziel war es aber nicht, Systeme anzugreifen, sondern zu analysieren. Hier eine Liste von Dingen, die ich dabei entdeckt habe:

Firmware-Update

Remote-Softwareupdates sind ja an sich eine gute Sache, aber in diesem Fall könnte man es besser machen. Problem Nr. 1 ist, dass durch das Protokoll auch jemand anders den Befehl an das Gerät senden könnte. Problem Nr. 2: Da auch beim Download kein HTTPS verwendet wird, überprüft das Gerät nicht einmal die Identität der Gegenstelle. Hier wäre zumindest ein Echtheits-Check der Firmware notwendig, sodass nur vom Hersteller signierte Firmware-Pakete installiert werden können.

Firmware-Update zum Mitlesen (3 Bilder)

Bild 20: Das Backend sendet den Befehl zum Update und liefert die URL zum Download gleich mit.

Ändern des Management-Servers

Auch hier bin ich etwas zwiegespalten: Mit einem Befehl kann der Hersteller den Management-Server auf einen anderen ändern. In diesem Fall ist das super, denn ab diesem Zeitpunkt sendet der Inverter die Daten nicht mehr in die USA, sondern zu einem Server bei AWS in Frankfurt. Dennoch ist hierüber leider auch möglich, einen x-beliebigen Server zu konfigurieren und damit die Kontrolle zu übernehmen.

Bild 23: Der Hersteller hat den Server geändert (hier rot markiert)

Unlimited Power?

Spätestens nach dem Verkauf von 800-W-Invertern, die man auch auf 600 W downgraden kann oder umgekehrt, habe ich mich gefragt, wie das wohl funktioniert. Der offizielle Weg ist, dass man ein Service-Ticket beim Hersteller oder seinem Händler erstellt, wobei man seine Seriennummer hinterlegen muss. Diese setzen dann die Werte aus der Ferne.

Nach etwas Recherche habe ich die notwendigen Befehle herausgefunden, mit denen es möglich ist, die Leistung in einem weiten Rahmen zu drosseln und sogar auf bis zu 120 Prozent zu setzen, ohne dass der Inverter eine Fehlermeldung herausgibt. Die tatsächliche Ausbeute würde das wohl in der Regel nicht erhöhen, doch zeigt das auch den weitreichenden Funktionsumfang des Remote Kanals: Geriete die Steuergewalt in falsche Hände, wäre es damit möglich, die betroffenen Geräte großflächig zu manipulieren oder gar die Geräte durch falsche Parameter zu zerstören.

Bild 24: Beispiel zur Leistungsreduktion per ATBefehl. Leider wäre das auch aus dem Internet möglich.