jens-maus / RaspberryMatic

:house: A feature-rich but lightweight, buildroot-based Linux operating system alternative for your CloudFree CCU3/ELV-Charly 'homematicIP CCU' IoT smarthome central. Running as a pure virtual appliance (ProxmoxVE, Home Assistant, LXC, Docker/OCI, Kubernetes/K8s, etc.) on a dedicated embedded device (RaspberryPi, etc.) or generic x86/ARM hardware.
https://raspberrymatic.de
Apache License 2.0
1.54k stars 188 forks source link

Proposed changes for general security hardening of WebUI #2175

Open jens-maus opened 1 year ago

jens-maus commented 1 year ago

Describe the solution you'd like

Because of certain common security concerns in the CCU/OCCU ecosystem and especially due to the point that users still unfortunately tend to make a CCU available via plain router port forwarding from the internet a CCU is commonly prone to public hacking attempts (see https://homematic-forum.de/forum/viewtopic.php?f=26&t=77643&p=753591#p753517, etc.)

It is therefore desirable to think about introducing certain changes for a general security hardening so that public hacking attempts or attack vectors are significantly reduced or even completely eliminated. Therefore, a list should be maintained with changes in the CCU/OCCU/RaspberryMatic ecosystem which could be performed with the potential of hardening the general security of the WebUI or other internal APIs of the CCU/OCCU ecosystem:

Describe alternatives you've considered

n/a

Is your feature request related to a problem?

Due to internal feature constraints security of the whole CCU/OCCU including its WebUI is an general concern.

Additional information

https://homematic-forum.de/forum/viewtopic.php?f=26&t=77643&p=753591#p753517

MichaelN0815 commented 1 year ago

Abschaffung von Password-less Account - würde ich unterstützen. Die Komplexität oder gar zwangsweise Erneuerung des PWD würde ich nicht einführen. Das ist nur eine Scheinsicherheit. Als allererstes würde ich vor allem den AutoLogin abschaffen und beim nächsten FW-Update auch abschalten, falls es aktiv ist. Denn für diesen Angriffsvektor benötigt man aktuell NULL Hacking-Skills, da die WebUI einfach offen darliegt. Ach so: HTTPS nützt da auch nichts.

Und was ggf. Helfen könnte - ähnlich wie bei der Fritz! Box - Jeder Login oder mindestens jeder Zugriff auf die User-Konfiguration löst eine Meldung per Mail aus. Haken ist natürlich: es müsste eine Mail-Adresse und ein Mail-Server konfiguriert sein. Also bei 99% der User wird dann nichts passieren.

Sineos commented 1 year ago

Dann bitte auch auch eine (ggf. versteckte) Möglichkeit schaffen auch ohne diese Sicherheitsverrenkungen drauf zu kommen und auch solche Zwangsmaßnahmen wieder abstellen zu können.

Auch wenn es einem "höheren Ziel" dient, brauchen doch nicht diejenigen, die sensibel mit solchen Themen umgehen bestraft und gegängelt werden. Irgendwo kann man auch ein gewisses Maß an Eigenverantwortung annehmen und einfordern.

dirkbe commented 1 year ago

Remove user name buttons at login screen Idea: User name buttons unnecessarily disclose existing user accounts. Although this can be configured in the user section many installations likely show user names on the home page. Unused or forgotten accounts may also have weak passwords and represent entry points.

Security assistant: Report Idea: Add a report or security guide under control panel/security assistant to scan for recommended settings, e.g. user names with simple passwords, users with admin rights, weak security settings, e.g. http, open API ports, firewall settings, last backup, old (vulnerable) firmware/additional software, ...

jens-maus commented 1 year ago

@dirkbe Danke für die zusätzlichen Ideen. Hab das einfach mal in den Hauptbeitrag ganz oben 1:1 so übernommen!

jp112sdl commented 1 year ago

Der ganze Handstand nur für die par Hanseln, die selbstverschuldet ein Portforwarding einrichten... Hoffentlich führt das nicht zu Komfortverlust für die Mehrheit der Nutzer.

Aus meiner Sicht wäre für mich nur der Punkt sinnvoll, standardmäßig per iptables ausschließlich private Netze zuzulassen.

Letztendlich sind 99,8% der offenen CCUen über Port 8181 erreichbar. Das müsste zu allererst gefixt werden. Da hilft weder das Ausblenden von Nutzern, komplexere Passwörter oder HTTPS-Zwang.

MichaelN0815 commented 1 year ago

Wie wäre es denn mit folgender Idee: Ein gravierende Problem beim retten der gehackten Installation ist ja jedesmal der Sicherheitsschlüssel. Könnte man das anlegen eines neuen Schlüssel mit der Betätigung der CCU Taste koppeln? Also nur wer physischen Zugang hat kann einen neuen anlegen.

Zusammen mit einer Freischalt Möglichkeit im recovery System sollte man so relativ einfach das System wieder übernehmen können.

dirkbe commented 1 year ago

Man könnte auch bei fehlerhaften Anmeldungen eine (sich erhöhende) Wartezeit einführen und ein blockieren, z.B. für 24h, nach n falschen Eingaben. Das könnte auch eine Servicemeldung/Email CCU Plug-In Nachricht auslösen. Natürlich vermeidet das kein Security Problem, nervt aber Angreifer und automatisierte Skripte.

Silverstar commented 1 year ago

Das bringt nur nichts, wenn sich die Sicherheitslücke ohne Login ausnutzen lässt. Daher bin ich ja auch der Meinung, dass jeglicher Zugriff von außerhalb privater Netze blockiert werden sollte.