tbnobody / OpenDTU

Software for ESP32 to talk to Hoymiles/TSUN/Solenso Inverters
GNU General Public License v2.0
1.69k stars 471 forks source link

Sicherheitsproblem: WLAN-Passwort im Klartext in config.json #2055

Closed grasmax closed 3 weeks ago

grasmax commented 3 weeks ago

What happened?

WLAN-Passwort im Klartext in config.json

To Reproduce Bug

Konfig sichern

Expected Behavior

Passwort muss verschlüsselt abgespeichert werden

Install Method

Pre-Compiled binary from GitHub

What git-hash/version of OpenDTU?

v24.1.14

Relevant log/trace output

No response

Anything else?

No response

Please confirm the following

tbnobody commented 3 weeks ago

Wie genau stelltst du dir das dann vor? Das Passwort muss intern als Plaintext vorliegen damit es der WiFi API übergeben werden kann... Man kann jetzt das Passwort schon verschlüsselt ablegen, aber dafür muss intern der Schlüssel bekannt sein um es zu entschlüsseln. Wenn man diesen im Sourcecode hinterlegt kann man es sich genauso gut sparen. Vorschläge?

ms49434 commented 3 weeks ago

Ich packe die heruntergeladene Konfigurationsdatei in ein passwortgeschütztes Zip. Für mich ist das kein Bug, da die Verantwortung für die Daten immer in der Hand des Benutzers liegt.

Eine Option wäre es, Verschlüsselung für die config.json anzubieten über ein zusätzliches Eingabefeld für das Passwort der Zip-Datei und dann die Zip-Datei als Download zu schicken. Eine andere Option wäre, die config.json von vorneherein als verschlüsselte Zip-Datei mit dem Admin Passwort als Download zu schicken, allerdings ändern nur sehr wenige Benutzer das Standardpasswort.

tbnobody commented 3 weeks ago

All das währen Möglichkeiten wenn man mehr Resourcen zur Verfügung hat... Wir ersetzen also alle den ESP durch einen Raspi oder anderen ARM?

grasmax commented 3 weeks ago

Muss man das unverschlüsselte Passwort exportieren und importieren?

grasmax commented 3 weeks ago

Und bei Aufräumen/Löschen der Konfig-Dateien auch an den Papierkorb denken. Denn dort liegt es nach dem Löschen immer noch unverschlüsselt rum.

grasmax commented 3 weeks ago

Zur Ressourcen-Frage: Ich bin etwas erschrocken, als ich die OpenDTU geöffnet und gesehen habe, was da drin steckt. Und Strom braucht. Unklar wieviel. Einen Raspi hat doch jeder in Betrieb. Jetzt mal naiv gefragt: was braucht man zusätzlich, um den Raspi zum Sender/Empfänger zu machen?

tbnobody commented 3 weeks ago

Und bei Aufräumen/Löschen der Konfig-Dateien auch an den Papierkorb denken. Denn dort liegt es nach dem Löschen immer noch unverschlüsselt rum.

Wenn du so wenig vertrauen in die Unversehrtheit deines PCs hast solltest du ggf. auch kein WiFi am Laptop oder am PC verwenden. Wie meinst du werden die WiFi Credentials unter Windows gespeichert? Meinst du sie sind nicht lesbar?

tbnobody commented 3 weeks ago

Zur Ressourcen-Frage: Ich bin etwas erschrocken, als ich die OpenDTU geöffnet und gesehen habe, was da drin steckt.

Auch wenn das hier Offtopic ist... Du darfst dir gerne eine Original DTU von Hoymiles kaufen wenn du meinst das dort weniger drin steckt. Du MUSST das hier nicht verwenden. Du darfst auch gerne die Hardware so bauen wie du möchtest. Passt dir nicht was du bisher an Hardware hast? Dann bau es besser.

grasmax commented 3 weeks ago

Ich habe die größte Hochachtung vor Menschen, die einen großen Aufwand in solche Lösungen investieren und diese dann allen kostenlos zur Verfügung stellen. Leider scheint es Firmen zu geben, die damit Geld machen und unausgereifte Produkte mit schlechtem Service auf den Markt werfen. Mir ist nun klar, dass meine Kritik (Issue 2046) hier falsch war und besser dorthin adressiert werden muss. Aber das Passwort-Problem gehört nun einmal hierher. ms49434 hat dazu konstruktive Vorschläge gemacht. Meine erste Notlösung war, alle Konfig-Dateien zu löschen, auch aus dem Papierkorb, bzw. das Passwort rauszulöschen. Was man noch tun könnte: das Passwort nicht mit zu exportieren/importieren. Insgesamt bin ich zum dem Schluss gekommen, dass das Setzen eines Limits über OpenDTU nicht praktikabel und sicher ist. Deshalb kann ich all denen raten, die das Einspeisen nicht vergüteten Stroms vermeiden wollen oder Überangebot in ihrer PV-Insel vermeiden müssen, einen Leistungsschütz in die Verbindung zum Wechselrichter einzubauen und diese Verbindung vom Raspi aus zu kappen, wenn der überflüssige Strom nicht abgenommen werden kann. Anregungen dazu finden sich in https://github.com/grasmax/AcOnOff