Werdet gehackt – oder werft zehntausende Geräte weg

Als Video ansehen
Bereitgestellt über YouTube

Werdet gehackt – oder werft zehntausende Geräte weg

Mehr als 60.000 funktionierende NAS-Geräte auf den Schrott werfen? Was nach wahnsinniger Verschwendung klingt, empfiehlt D-Link seinen Kunden: Mehrere Modelle wurden mit schwerwiegenden, leicht ausnutzbaren Sicherheitsmängeln ausgeliefert. Das Unternehmen will sie nicht korrigieren und rät daher zum Austausch. Es ist zudem nicht das erste mal, dass der Hersteller mit fragwürdiger Qualität aufgefallen ist. Der Skandal betrifft weitaus mehr, als einen einzelnen GAU.

CVE-2024-10914: Wenn jeder Code auf deinem NAS ausführen kann

Es handelt sich um einen kritischen Sicherheitsmangel, der mit einem Schweregrad von 9,2 auf der CVSS-Skala von 1 bis 10 bewertet wurde.1 Die hohe Einstufung hat zwei Gründe: Zum einen ermöglicht die Schwachstelle das ausführen von beliebigem Code (RCE) aus der Ferne ohne Authentifizierung. Und ist dazu trivial über einen HTTP GET Parameter in der Adresse ausnutzbar, wie folgendes Beispiel zeigt:

curl "http://[Ziel-IP]/cgi-bin/account_mgr.cgi?cmd=cgi_user_add&name=%27;[SHELL_BEFEHL];%27"

Das kann jeder mit einem Konsolenbefehl oder wenigen Zeilen Python-Code ausnutzen.2 Die Informationen über den verwendeten Kernel lässt sich ermitteln, in dem wie folgt der Befehl uname -a ausgeführt wird:

curl "http://<Ziel-IP>/cgi-bin/account_mgr.cgi?cmd=cgi_user_add&name=';uname -a;'"

Die Sicherheitslücke offenbart 3-Faches Versagen

Abgesehen davon steckt im obigen Satz bereits 3-Faches versagen:

  • Es kann beliebiger Code ausgeführt werden (RCE)
  • Die Ausnutzung ist aus der Ferne möglich (remote)
  • Keine Authentifizierung nötig

Schon ersteres ist ein Totalschaden. Wenn unbefugte beliebigen Code auf fremden Systemen ausführen können, ist das für die der Jackpot: Von Kopieren/Manipulieren der gespeicherten Dateien über Infektionen mit Schadsoftware bis hin zum Missbrauch des Systems für illegale Zwecke ist alles möglich. Vor allem letzteres hatte ich schon an anderen Stellen erwähnt, weil ich es für unterbewertet halte: Kündigt jemand über deinen Internetanschluss einen Amoklauf, Terroranschlag oder andere Verbrechen an bzw. begeht diese (Kreditkartenbetrug usw), wird man von einer Hausdurchsuchung geweckt. Inklusive aller damit zusammenhängenden Folgen: Beschlagnahmung aller technischen Geräte auf unbestimmte Zeit, Rufschädigung usw.

Für Betroffene ist es also eine Katastrophe, wenn fremde unkontrolliert Code ausführen können. Noch schlimmer wird es, wenn das aus der Ferne notwendig ist und nicht mal eine Authentifizierung verlangt. Hat man auf dem NAS eine Hand voll Benutzer, sind die irgendwie bekannt. Natürlich ist es schlecht, dass die damit unbefugt alles machen können – die Angriffsfläche verkleinert sich jedoch sehr stark im Vergleich zu jede Person aus dem Internet, wenn das NAS online erreichbar ist.

Nachgebaut in Minuten: So trivial ist die Schwachstelle

Die NAS-Software von D-Link ist proprietär. Wir können (und vor allem dürfen) also nicht ohne weiteres in den Quellcode schauen um zu sehen, was das Skript account_mgr.cgi für eine derart haarsträubende Schwachstelle falsch macht. Allerdings sind derartige Lücken so alt, dass es sie schon vor meiner Zeit gab. Es ist daher leicht nachzustellen, was dort im Kern passiert sein muss. Folgendes Beispiel demonstriert dies mit PHP:

$username = $_GET['name'];
$cmd = "sudo /usr/sbin/useradd -m -s /usr/bin/bash -p `openssl passwd -1 password123` $username";
system($cmd);

Es wird aus der Skriptsprache heraus ein Shell-Befehl ausgeführt. Da D-Links Skript offensichtlich einen neuen Benutzer anlegen soll, erhält es per GET-Parameter name dessen Nutzername. Diesen übergibt das Skript an den Befehlsaufruf. Übergibt man max als Nutzername, sieht der vom Skript ausgeführte Befehl so aus:

sudo /usr/sbin/useradd -m -p `openssl passwd -1 password123` max

Somit wird ein Nutzer namens max mit dem Kennwort password123 angelegt. Das Kennwort ist hier als Platzhalter hart eingefügt, da mir nicht bekannt ist, wie D-Link Kennwörter zuweist – spielt an dieser Stelle für die Sicherheitslücke keine Rolle, weil sie die Anmeldung umgeht. Da keinerlei Filterung stattfindet, kann man den Platzhalter $username beliebig manipulieren. Mit einem Semikolon lassen sich weitere Befehle ausführen, etwa das oben bereits gezeigte uname für die Kernelversion:

sudo /usr/sbin/useradd -m -p `openssl passwd -1 password123` max; uname -a

Damit der Webserver diesen privilegierten Aufruf per sudo tätigen darf, muss dieser natürlich noch über visudo berechtigt werden. In der Regel läuft dieser unter dem Benutzer www-data:

www-data ALL=NOPASSWD: /usr/sbin/useradd

Rufen wir nun das PHP-Skript auf, können wir im GET-Parameter name den Benutzername übergeben und mit einem Semikolon beliebige Befehle ausführen. Im Falle von PHP sendet system() die Standardausgabe automatisch zurück, sodass dieses Beispiel die Kernel-Version im Browser anzeigt:

Parallel ist der Nutzer angelegt, weil der schadhafte Befehl (hier zur Demonstration uname -a) nach dem beabsichtigten useradd ausgeführt wird.

$ tail -n 1 /etc/passwd
test2:x:1003:1003::/home/test2:/usr/bin/bash

Und so leicht wäre sie zu verhindern gewesen

Schaut man in die PHP-Dokumentation zu system,3 muss man nicht weit scrollen, um unter den Anmerkungen eine rote Box zu sehen. Sie warnt vor der goldenen Regel, die D-Link offenbar ignoriert hat: Traue keinen Nutzerdaten, weil damit leicht Injektionen und damit Codeausführungen möglich sind.

Es wird auch auf escapeshellarg hingewiesen, womit sich für die Shell gefährliche Zeichen entschärfen lassen. Die Funktion ist für den gesamten Befehl vorgesehen. Um einzelne Parameter zu maskieren, ist escapeshellarg vorgesehen. Diese schwere Sicherheitslücke lässt sich also verhindern, in dem der von Außen stammende name Parameter maskiert wird:

$username = escapeshellarg($_GET['name']);

Nun wissen wir zwar nicht, welche Technologie sich bei D-Link konkret hinter dem CGI-Skript verbirgt. Dies hat jedoch keine Relevanz. In so ziemlich jeder halbwegs gängigen Sprache gibt es Möglichkeiten, derartige Injections zu verhindern. Das zu tun, ist Aufgabe des Entwicklers. Und solche grundlegenden Mängel zu finden, bevor sie Kunden gefährden, ist Aufgabe der Qualitätssicherung des Unternehmens.

Man stelle sich dieses Niveau in anderen Branchen vor:

  • In Lebensmitteln wären gefährliche Schadstoffe, weil das Unternehmen vergessen hat, die Sicherheit zu prüfen
  • Im Auto funktioniert plötzlich die Bremse nicht mehr
  • Der Arzt verschreibt tödliche Dosen eines Medikaments, weil er nicht weiß wie man es sicher einsetzt

So etwas ist die Ausnahme. Wenn es passiert, haben die Verantwortlichen danach ein ordentliches Problem. Bei Software hingegen ist es die Regel, weil es aus kommerzieller Sicht keinen Grund dazu gibt. Im Gegenteil: Wer für Qualität sorgt (z.B. durch Tests), gibt Geld aus und schmälert damit seinen Gewinn – während die Konkurrenz das als Profit einsackt und den Mittelfinger zeigt.

Bingo auf der OWASP Top 10

Wenn man ohne Authentifizierung Skripte zum Anlegen eines NAS-Nutzers aufrufen kann, sehe ich das nicht nur als Injection. Das ist auch mindestens Broken Access Control, ggf. sogar Security Misconfiguration. Auch zutreffend ist die neue Kategorie Insecure Design. So was muss auf einen angemeldeten Benutzer mit entsprechender Rolle (Admin) beschränkt sein. Schon damit wären die Auswirkungen der Schwachstelle an sich weniger schlimm.

Es ist noch viel schlimmer: Mehrere Hintertüren bei D-Link?

Das ist nur die Spitze des Eisbergs bei diesem Hersteller. Im April 2024 wurde bekannt, dass im nas_sharing.cgi eine ähnliche Sicherheitslücke steckt. Dort kann über den GET-Parameter system beliebiger Code ausgeführt werden. Lediglich eine Base64 Kodierung ist dafür notwendig.4 Bereits das wirft die Frage auf: Hat D-Link katastrophal schlecht entwickelt, oder wurde eine Hintertür verbaut? Schwer zu sagen – zur Krönung gibt es ein Systemkonto mit dem Benutzername <code>messagebus ohne Kennwort. Angreifer haben also gleich die Wahl aus zwei Angriffswegen, die beide trivial auszunutzen sind.

Zwar sind scheinbar weniger als die über 92.000 Geräte betroffen, wie zuerst berichtet wurde.5 Die Liste der betroffenen Geräte ist jedoch deutlich länger geworden, als zunächst behauptet.6 Unabhängig davon lassen derart katastrophale Schwachstellen, von denen es gleich zwei gab, erhebliche Zweifel an der Qualität des Herstellers. Bereits als die Geräte noch unterstützt waren, ist D-Link mit 53 (!!!) Sicherheitsmängeln aufgefallen. Darunter keineswegs Kleinigkeiten, sondern z.B. der Login mit root ohne Passwort. Schon das lässt kaum Spielraum für Steigerungen, doch es gibt noch welche: Ein Pentester hat über ein Jahr lang gebettelt, damit D-Link die katastrophalen Mängel endlich beseitigt.7

D-Links Horrorgeschichte

Wer denkt: D-Link ist ganz unten am Boden angekommen – nun werden sie sicher einsehen, dass es auf dem Niveau nicht weiter gehen kann. Der irrt sich gewaltig.

2015 mussten Sicherheitsforscher das Unternehmen über Monate hinweg anbetteln, um ihre Sauerei aufzuräumen. Was sagt der Hersteller dazu? Ausmustern und Wegwerfen.8

Ende 2023 entdecken deutsche Sicherheitsforscher Schwachstellen im WLAN-Repeater D-Link DAP-X1860, die DoS und das Injizieren von Befehlen ermöglichen. Wieder wurde der Hersteller mehrfach unentgeltlich & freiwillig auf die Schwachstellen hingewiesen – ohne darauf zu reagieren.9

Wer seine Produkte derart schlecht absichert und noch schlechter auf gefundene Mängel reagiert, der wird das bei seiner eigenen Infrastruktur nicht viel besser machen. So kam es wie es kommen musste: Ende 2023 konnte ein Angreifer das Unternehmen erfolgreich attackieren.10 Als Einfallstor diente ein veraltetes D-View 6 System, welches bereits 2015 sein Lebensende erreicht hat. Trotzdem war es als „Testsystem“ ganze 7 Jahre lang im Internet erreichbar. Den Kunden Wasser predigen und Wein trinken, die haben es im Griff! Aber hey, sind ja nur alte Nutzerdaten, fast nicht der Rede wert…11

Im Mai 2024 werden – wieder mal – schwere Sicherheitsmängel und eine Hintertür in D-Link Routern gefunden.12 CVE-2024-6044 ist eine path traversal vulnerability: Man kann mit z.B. „..“ ein Verzeichnis höher wechseln und damit Inhalte aus dem Dateisystem einsehen, auf die man keinen Zugriff hat. Natürlich ohne Authentifizierung, wie es sich bei dem Unternehmen als Tradition eingebürgert hat.

CVE-2024-6045 schaltet telnet beim Aufruf einer bestimmten Adresse ein. Anschließend kann man sich mit hart kodierten Administrator-Zugangsdaten anmelden und hat Vollzugriff auf das System.

Alle guten Dinge sind vier: Im September 2024 werden gleich vier Sicherheitsmängel gefunden, die Codeausführung aus der Ferne (RCE) ermöglichen. Betroffen ist der DIR-846W WLAN-Router. Der Schweregrad liegt zwischen 8.8/10 und 9.8/10). D-Link will die Mängel nicht korrigieren, da das Modell bereits 2020 sein vom Unternehmen vorgegebenes Lebensende erreicht hatte.13

Aber es geht noch mehr – nur wenige Tage später werden 5 schwere Sicherheitsmängel (3x 9.8 score, 2x 8.8). Die will der Hersteller zur Abwechslung mal beheben – lässt sich dafür allerdings Zeit. Bereits seit Juni 2024 sind sie ihm bekannt. Und jammert, man habe sich nicht an die 90 Tage gehalten. Als ob sie die Zeit genutzt hätten, statt wie in zig anderen Fällen die Lücken zu ignorieren, selbst wenn sie ihnen jemand immer wieder meldet.1415

Gegen Ende November wieder mal Remote Code-Ausführung ohne Authentifizierung in insgesamt 6 verschiedenen Modellen. Für 4 davon war das von D-Link vorgegebene EOL erst vor wenigen Monaten erreicht worden. Selbst das ist kein Grund, wenigstens nach Bekanntwerden derart gravierende Mängel aus Respekt zur Kundschaft zu beseitigen: Man habe die Unterstützung eingestellt, betroffene Kunden sollen die Geräte entsorgen. Wer sie weiter verwende, setzt den angeschlossenen Geräten ein Risiko aus.16

Die Folgen sind mehrfach verheerend

Kunden von D-Link sind durch solche schwerwiegenden und oft trivial ausnutzbaren Sicherheitsmängel in erster Linie akut gefährdet: Angreifer können die Kontrolle über das Gerät übernehmen. Dadurch ist eine Vielzahl an Angriffen denkbar: Von Datendiebstahl/Manipulation bis hin zu kriminellen Aktivitäten, wodurch gegen den Anschlussinhaber ermittelt wird – im schlimmsten Falle mit Hausdurchsuchung inklusive Beschlagnahmung sämtlicher technischer Geräte.

Folgen Sie dem Rat des Herstellers, wird das Sicherheitsrisiko hoffentlich beseitigt. Doch den Schaden zahlen der Kunde und die Umwelt durch das Entsorgen funktionsfähiger Geräte, bloß weil der Hersteller seine Software vermurkst hat. Während sich Ersteres manch einzelner Kunde vielleicht noch leisten kann, sieht es bei ärmeren Menschen anders aus. Die Ausrede des Lebensendes ist hier schwach. Schließlich bestand der Fehler schon längere Zeit vorher – und ist derart gravierend, dass er als grob fahrlässig anzusehen ist.

Das Verschrotten funktionsfähiger Geräte verschwendet unnötig Ressourcen aus Profitgier. Sowohl finanzielle bei den Kunden, als auch Rohstoffe in der Hardware – beides in großem Stil. Dabei wäre es technisch möglich, die Mängel softwareseitig zu beseitigen. Und noch viel wichtiger: Grundlegende Sicherheitsmaßnahmen zu ergreifen, damit zukünftige Software ein gewisses Mindestniveau erfüllt. Seit Jahrzehnten bekannte, triviale Sicherheitsmängel auf Anfänger-Niveau sind ein Armutszeugnis für einen Konzern.

Quellen

  1. https://winfuture.de/news,146659.html ↩︎
  2. https://www.jaspreet.net/2024/12/01/2881/understanding-and-exploiting-cve-2024-10914-a-critical-vulnerability-in-d-link-nas-devices/ ↩︎
  3. https://www.php.net/manual/en/function.system.php ↩︎
  4. https://www.heise.de/news/Am-besten-abschalten-Alte-NAS-Geraete-von-D-Link-fuehren-Fremdcode-aus-9680520.html?view=print ↩︎
  5. https://www.bleepingcomputer.com/news/security/over-92-000-exposed-d-link-nas-devices-have-a-backdoor-account/ ↩︎
  6. https://www.heise.de/news/Am-besten-alle-abschalten-Noch-mehr-D-Link-NAS-fuer-Codeschmuggel-anfaellig-9682099.html?view=print ↩︎
  7. https://www.heise.de/news/Ueber-50-Schwachstellen-in-Netzwerkspeichern-von-D-Link-2671220.html ↩︎
  8. https://supportannouncement.us.dlink.com/security/publication.aspx?name=SAP10383 ↩︎
  9. https://www.bleepingcomputer.com/news/security/d-link-wifi-range-extender-vulnerable-to-command-injection-attacks/ ↩︎
  10. https://www.bleepingcomputer.com/news/security/d-link-confirms-data-breach-after-employee-phishing-attack/ ↩︎
  11. https://www.borncity.com/blog/2023/10/19/d-link-besttigt-datenschutzvorfall-alte-nutzerdaten-erbeutet/ ↩︎
  12. https://supportannouncement.us.dlink.com/security/publication.aspx?name=SAP10398 ↩︎
  13. https://www.bleepingcomputer.com/news/security/d-link-says-it-is-not-fixing-four-rce-flaws-in-dir-846w-routers/ ↩︎
  14. https://www.bleepingcomputer.com/news/security/d-link-fixes-critical-rce-hardcoded-password-flaws-in-wifi-6-routers/ ↩︎
  15. https://www.heise.de/news/Sicherheitspatch-Hintertuer-in-einigen-D-Link-Routern-erlaubt-unbefugte-Zugriffe-9870648.html?view=print ↩︎
  16. https://www.golem.de/news/wegen-sicherheitsluecke-d-link-draengt-auf-entsorgung-aelterer-router-2411-191007.html ↩︎

Leave a Reply