Page 3 of 3

Re: Sicherheit - Ausführen von beliebigem Code per Webserver möglich

Posted: 29 May 2018, 12:53
by Wulf
volker wrote: 05 Mar 2018, 19:12 Das versprochene Update ist heute online gestellt worden und sollte die diversen Lücken schließen.
Ich hab mir das mit dem Default-Passwort nochmal angeschaut ;-)
Das ist immernoch dasselbe wie vorher, vermutlich weil es außen auf dem Gehäuse steht.
Geändert hat sich der Algorithmus zum Berechnen des 10-stelligen Hostnamens. Der Angriff ist deutlich aufwendiger geworden, aber ist immernoch praktisch durchführbar.
Der einfachste und sinnvollste Schutz ist es nach wie vor, einfach das Default-Passwort zu ändern, sobald man seinen RevPi das erste mal anschaltet.

Die Seriennummer des CryptoChips (48 Bits) wird mit 24 fixen Bytes auf 30 Bytes erweitert und durch md5 geschoben. Von dem 128 Bit langen Hash werden dann 50 Bits in den Hostnamen konvertiert.
Das rauszufinden und nachzuimplementieren war der einfache Teil. Das Binary zu strippen (changelog zu 1.4.0-2) verhindert nicht, dass man sich den Code durchlesen kann, das spart nur etwas Platz :-)

Der schwierige Teil war es, aus den bekannten 50 Bits (d.h. der Hostname) wieder auf die Seriennummer zu schließen. Aber dafür gibt es https://en.wikipedia.org/wiki/Hashcat und AWS.
Mit der stärksten (und leider auch teuersten...) Instanz p3.16xlarge dauert die Berechnung knappe 20 Minuten. Oder als Preis ausgedrückt: 7€ bei aktuellem $-Wechselkurs. Das mit den Spot-Instanzen hat irgendwie nicht funktioniert, sonst wäre ich am Ende bei ca. 2-3 € rausgekommen. Wer selbst eine (oder möglichst mehrere) tolle Grafikkarten besitzt, kann es auch bei sich zu Hause cracken und zahlt nur die Stromrechnung ;-)

@Kunbus
Die Idee mit dem Hash finde ich gut. Mit einer sicheren Hashfunktion (z. B. argon2 oder scrypt) anstatt md5 wäre der Angriff nicht durchführbar gewesen.

Bei Interesse kann ich das neue Skript gerne hier reinposten.

Zeitaufwand für mich waren ca. 2 Tage. Ich wollte schon immer mal irgendwas mit Grafikkarten machen, nun bin ich endlich dazu gekommen.

Re: Sicherheit - Ausführen von beliebigem Code per Webserver möglich

Posted: 29 May 2018, 14:28
by Mathias
Hallo Wulf,
Respekt, was du alles herausgefunden hast.
Ja, die Passwortberechnung ist wie bisher, das kann ich bei Geräten die schon beim Kunden sind ja nicht nachträglich ändern.
Mit dieser Vorgehensweise wollten wir erreichen, dass jedes Gerät ein anderes Passwort bekommt. Damit erhöht sich die Sicherheit für Kunden, die vergessen das Passwort zu ändern, doch beträchtlich.
Da mittlerweile der Hostname nicht mehr verwendet wird und die Seriennummer nur jemand auslesen kann, der schon Zugriff auf den RevPi hat, sehe ich in dem Vorgehen kein Problem.
Wenn man den RevPi ans Internet hängt, so dass er von außern erreichbar ist, sollte man sich eh nicht auf ein sechsstelliges Passwort verlassen. Da muss man ein paar mehr Dinge umkonfigurieren.
Gruß
Mathias