Hauptmenü

FHEM Security

Begonnen von r0x0r, 25 Dezember 2015, 16:21:13

Vorheriges Thema - Nächstes Thema

r0x0r

Hi there!

Ich bin ein Frischling bzgl. FHEM und setze gerade ein System auf Raspi auf. Mir sind dabei einige Sachen aufgefallen, die aus Security-Sicht ziemlich übel sind und habe deshalb mal ein paar generelle Fragen:

1) Mein erster Eindruck ist, dass Security bei FHEM überhaupt keine Rolle spielt. Sachen wie Code Execution, Cross-Site Scripting und File Disclosure sind fast schon ein Feature und die Latte, um ein System mit FHEM zu übernehmen, liegt meiner Meinung nach richtig niedrig. Gibt es Bestrebungen da mal grundsätzlich was zu verbessern?
2) Meint ihr, den Usern ist bewusst, dass sie sich da eventuell ein riesen Loch in ihre Infrastruktur reißen, wenn sie nicht selbst Maßnahmen ergreifen, um die FHEM Instanz abzusichern/zu isolieren?
3) Wäre es vielleicht eine gute Idee, darauf ein bisschen expliziter hinzuweisen?

Gruß,

Flo

rudolfkoenig

Ich tu mich schwer mit generischen Anschuldigungen, muss immer bis 10 zaehlen, und nicht unhoeflich zu werden. Koenntest du bitte konkret erklaeren, was nicht passt?

r0x0r

Hi!

Ich kann euch gerne ein paar PoCs liefern, aber nicht im public Forum. Soll ich dir das direkt schicken oder wie machen wir das?

Gruß,

Flo

herrmannj

Ein fhemweb / fhem telnet Zugang entspricht einem root Zugang. Also absichern (VPN/Passwort basic Auth).

Nur die Vektoren die dann noch bleiben sind relevant.

vg
joerg

rudolfkoenig

Warum nicht oeffentlich?

Und bevor du loslegst, bitte sicherstellen, dass du die Attribute allowedCommands und CORS passend gesetzt hast.

r0x0r

Arbitrary File Disclosure:
/fhem/FileLog_logWrapper?dev=Logfile&type=text&file=/etc/passwd

Cross-Site Scripting:
/fhem/FileLog_logWrapper?dev=Logfile&type=<script>alert(1)</script>&file=/etc/passwd

Code Execution:
/fhem?cmd=%7Bsystem%28%22id+%3E+%2Ftmp%2Ffoo%22%29%7D

Ich bin von der default config ausgegangen. Auf den ersten Blick würde ich sagen, dass die zwei Einstellungen an der Problematik nix verändern würden. Hab ich aber nicht getestet.

Gruß,

Flo!

herrmannj

ZitatEin fhemweb / fhem telnet Zugang entspricht einem root Zugang.

ZitatArbitrary File Disclosure:
cat /etc/passwd funktioniert bei mir direkt über die cmd line, ganz ohne fhem :) Fehler im os ?

vg
joerg

Dr. Boris Neubert

/etc/passwd hat per default auf Unix 644 als Rechte, /etc/shadow 640. Eigentümer root:root.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

vbs

Zitat von: herrmannj am 25 Dezember 2015, 17:05:07
Ein fhemweb / fhem telnet Zugang entspricht einem root Zugang. Also absichern (VPN/Passwort basic Auth).
Aber warum? Also mein FHEM läuft nicht mit root-Rechten.

herrmannj

Ich versuche es gleichzeitig nochmal so: wenn Du Zugang zur fhemweb / fhem telnet hast dann kannst Du das System konfigurieren inklusive jedem Blödsinn der dazugehört.

Wenn Dein fhem unter root läuft hast Du root Zugang. Den ganzen Mummenschanz oben benötogst Du nicht denn Du kannst direkt in die Kommandozeile Systembefehle eingeben und im Kontext des users ausführen unter dem fhem läuft.

Wenn Du etc/passwd sehen möchtest darfst Du das (!!!) ganz ohne Trick. Du darfst Systembefehle ausführen denn Du hast Zugang !

Das ist auch kein Hack. Ehrlich nicht. DU DARFST DAS !

vg
joerg

herrmannj

Zitat von: vbs am 25 Dezember 2015, 17:34:58
Aber warum? Also mein FHEM läuft nicht mit root-Rechten.

Ja. Schon klar. Meins auch nicht- wäre auch doof. Ich versuche das nur irgendwie klar zumachen das es eben kein Hack whatever ist.

Der Punkt den ich damit, zugegebenermaßen überspitzt, platziere: wenn ein nicht autorisierter user Zugang zu fhemweb oder telnet bekommt ist dort der Fehler.

Und andersherum, der user der Zugang bekommt weil er darf hat eben die Macht !
(und darf sich im Rahmen der user rechte bewegen)

vg
joerg

r0x0r

Kinners,

es geht doch nicht um die passwd sondern darum, dass man damit arbitrary Files lesen kann für die man Berechtigungen hat. Aber ok. Ist offensichtlich n Feature von FHEM.

Was sagt ihr denn zum Rest?

justme1968

wenn du deinem FHEM nicht verbietest beliebigen perl oder shell code auszuführen ist es ein festure und kein bug tun zu können wozu die berechtigung hast. 

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

herrmannj

:)

Das ausführen von System Befehlen und perl code (im kontext des users fhem) ist dokumentiert! Ein ganz legales verhalten.
Mit einigen attributen kann man das etwas einschränken.

Trotzdem:

(Ich vertrete generell diesen Standpunkt:) wem Du keinen ssh Zugriff geben würdest dem darfst Du auch keinen fhemweb Zugriff geben. Für den Rest gelten und greifen alle üblichen Linux Absicherungsmaßnahmen wie user Rechte beschränken etc.

Fhem ist nun mal keine "webseite" zur Ansicht sondern ein System mit aktiven Komponenten.

Das ist gemacht damit man code eingibt der etwas bewirkt. Dazu hat der code natürlich Zugriff aufs filesystem (uva).

Was soll ein Auto welches nicht fährt ? Und wenn es fährt ist der Fahrer verantwortlich das er die Regeln beachtet und nicht in den Gegenverkehr fährt.

Beschränke (wie beim ssh auf jeden x-beliebigen Server) den Zugriff und sichere ihn ab! Welche "Risiken" bleiben dann - das ist die Frage die relevant ist.

vg
joerg

r0x0r

Hi!

Jetzt werden wir wieder konstruktiv. ;)

Zwei Punkte habe ich noch:

* Secure by Default ist ein erstrebenswerter Zustand, den ich mir für FHEM auch wünschen würde. BASIC auth würde ich mandatory machen. Interesant wäre auch ein hardening guide für FHEM, das macht es den Leuten vielleicht einfacher. Ich bin einfach der Meinung, dass aufgrund der hohen Angriffsfläche den Leuten klarer mit auf den Weg gegeben werden sollte, was das heisst. ;)

* Basic Auth und Kram ändert nix an dem (vermutlich eher den) XSS. Da solltet ihr meiner Meinung nach unbedingt nachziehen, denn das wird im Zweifelsfall mit der Code Exec echt hässlich.

Gruß,

Flo!