Normalerweise vertritt man bei exploitee.rs ein als „Responsible Disclosure“ bekanntes Vorgehen bei gefundenen Sicherheitslücken. Dabei werden die Sicherheitslücken dem Hersteller gemeldet und diesem Zeit eingeräumt, entsprechende Patches und Updates bereit zu stellen, bevor die Lücken öffentlich gemacht werden. Dieses Vorgehen hat sich in sehr vielen Fällen auch bewährt, zumindest wenn die Hersteller sich ebenso verantwortungsvoll zeigen. Western Digital steht nun nicht im Ruf, auf gemeldete Sicherheitslücken schnell zu reagieren, im Gegenteil. Immerhin hat das Unternehmen nicht ohne Grund den „Pwnie for Lamest Vendor Response“ bei der letzten BlackHat gewonnen. Aus diesem Grund hat man sich in diesem Fall gegen das bewährte Verfahrne entschieden und die Bugs direkt veröffentlicht, zusammen mit der eindringlichen Warnung an alle Besitzer betroffener Geräte, diese so gut es irgend möglich ist, abzuschotten und vom Internet fern zu halten.
Betroffene Geräte
Die meisten – wenn nicht alle – der gefundenen Fehler sind auf die komplette My Cloud Serie anwendbar, auf jeden Fall betroffen sind folgende Devices:
- My Cloud
- My Cloud Gen 2
- My Cloud Mirror
- My Cloud PR2100
- My Cloud PR4100
- My Cloud EX2 Ultra
- My Cloud EX2
- My Cloud EX4
- My Cloud EX2100
- My Cloud EX4100
- My Cloud DL2100
- My Cloud DL4100
Die Fehler
Alle 85 Fehler sind komplett im Wiki von exploitee.rs beschrieben, sortiert nach betroffenem Bereich. Und da ist alles dabei, was man so braucht, um an die Daten auf so einem NAS heran zu kommen oder auch um so ein NAS zu übernehmen und eigenen Code darauf auszuführen. Bei den Fehlern handelt es sich teilweise um so grundlegende PHP-Anfänger-Fehler, dass man sich durchaus die Frage stellen darf, ob hier eine Qualitätskontrolle überhaupt stattfindet – von der Erfahrung der Entwickler mal abgesehen.
Der häufigste Fehler hier ist das Übernehmen von übermittelten Variablen ohne, zumindest ohne ausreichende Filterung und Prüfung, so dass man den Skripten damit auch Kommandos unterjubeln kann, die dann auf dem NAS ausgeführt werden. Dabei sollte es sich inzwischen doch herumgesprochen haben, dass man niemals den Usereingaben vertrauen darf.
Aber absolutes Highlight im negativen Sinn, ist der teilweise gefixte und dadurch noch verschlimmerte Fehler in der Anmeldung. Hier war es durch das einfache Senden von zwei Cookie-Werten möglich, sich als Admin einzuloggen: So lange der Cookie „username“ gesetzt und nicht leer und der Cookie „isAdmin“ den Wert 1 hat, war man eingeloggt. Und Cookies kann man natürlich auch an einen Server übermitteln, ohne dass die von diesem gesetzt wurden. Es wurde in einem Update versucht den Bug zu beheben oder zumindest zu entschärfen, indem ein zusätzlicher Check des Usernamens eingeführt wurde. Dieser Check setzt dabei aber dummerweise auf eine Prüfung per exec, also das Ausführen eines lokalen Kommandos. Da hier aber der übergebene Wert nicht ausreichend bereinigt wird, kann man auch diesen Check leicht umgehen und eigene Kommandos ausführen lassen. Diese Kommandos laufen dann mit dem lokalen User des Webservers, was in diesem Fall der User „root“ ist, also der Adminuser des Systems.
Aber selbst das lässt sich noch toppen: An manchen Stellen ist der Login-Check in den PHP-Skripten direkt auskommentiert, findet also gar nicht statt. Das ist besonders ungünstig bei einem Upload-Skript, welches einfach die gesendete Datei nimmt und an der vom User gewünschten Stelle speichert – ohne Check, ob der Nutzer überhaupt angemeldet ist.
To Do
Wer bereits ein betroffenes Gerät hat, der sollte es so gut es geht vor Zugriffen vor allem aus dem Internet schützen. Das mag in einigen Fällen dem gewünschten Einsatzzweck entgegen laufen, schließlich heißt die Serie nicht ohne Grund „My Cloud“, aber man möchte seine Daten ja nicht unkontrolliert mit aller Welt teilen. Dann heißt es natürlich genau darauf achten, ob es Updates von Western Digital gibt. Um diese zu beschleunigen könnte es womöglich helfen, wenn alle Besitzer eines solchen Geräts bei WD nach entsprechenden Updates fragen.
Vom Kauf dieser Geräte würde ich aus Gründen der Datensicherheit aber derzeit definitiv abraten. Klar, Fehler können immer passieren, jedem Hersteller, aber die hier gemachten Fehler sind gravierende Anfängerfehler, so etwas kann in einem schnell dahingerotzten Quick’n’Dirty Skript passieren, das niemals auf öffentlich zugänglichen Maschinen installiert wird, aber bei kommerziellen Produkten, die dazu noch immer wieder mit dem Schlagwort „safe“ angepriesen werden, dürfen solche Fehler nicht passieren.