
Analyse der Sicherheitslücke CVE 2024 3273: Befehlsinjektion bei D-Link-Geräten
D-Link Network Attached Storage (NAS), auch Netzwerkspeicher genannt, ist ein Gerät, das über eine Festplatte (oder mehrere Festplatten) an ein Computernetzwerk angeschlossen wird, um Dateien zu speichern und gemeinsam zu nutzen. Im Gegensatz zu einer normalen externen Festplatte, die direkt an einen Computer angeschlossen wird, verbindet sich ein NAS-Gerät mit dem lokalen Netzwerk und ermöglicht mehreren Benutzern oder Geräten, Dateien gleichzeitig zu nutzen und zu teilen. NAS-Geräte werden sowohl in Heim- als auch in Geschäftsumgebungen eingesetzt.
Das Sicherheitsforschungsunternehmen VulDB Coordination entdeckte bei einigen D-Link NAS-Geräten eine kritische Sicherheitslücke (CVE-2024-3273), die es böswilligen Benutzern ermöglicht, über das Netzwerk eine Befehlsinjektion durchzuführen und schädliche Befehle im Gerät des Opfers auszuführen.
Diese Sicherheitslücke betrifft nur bestimmte D-Link-Geräte, deren Lebenszyklus bereits beendet ist und für die der Hersteller die Software- und Hardware-Unterstützung eingestellt hat. Betroffen sind die folgenden Modelle:
Diese Sicherheitslücke erfordert außerdem die gleichzeitige Ausnutzung einer weiteren Schwachstelle. Besonders anfällig macht das NAS-Gerät eine Hintertür, die durch hartkodierte Anmeldeoptionen verursacht wird. Bei dieser Hintertür handelt es sich um die Sicherheitslücke (CVE-2024-3272), bei der ein Benutzer die Authentifizierung umgehen kann, indem er den in allen betroffenen Geräten standardmäßig vorhandenen „Systembenutzer“ messagebus verwendet.
Mit diesem Benutzer des standardmäßig in Linux-Systemen vorhandenen System-Daemons (system daemon) kann man sich zwar nicht direkt am System anmelden, aber ein geschickt präparierter HTTP-Request an einen bestimmten Endpunkt reicht aus, um bereits Schaden anzurichten.
Außerdem muss die IP-Adresse des angegriffenen Geräts bekannt sein.
Die Sicherheitslücke befindet sich in der Funktion zur Verarbeitung von HTTP-GET-Anfragen in der Datei /cgi-bin/nas_sharing.cgi des NAS-Geräts. Ein böswilliger Benutzer kann eine GET-Anfrage über das Netzwerk an das Opfergerät senden und dabei als Parameter den Benutzernamen "messagebus" und Passwort leer lassen angeben. Die Befehlsinjektion erfolgt hier über den Parameter system, indem der Wert des Parameters auf den gewünschten Befehl gesetzt wird.
Der Befehl wird mit Base64-Kodierung versteckt und als Wert des Parameters system angehängt. Beim späteren Dekodieren erscheint das schädliche Befehlsfragment, das im angegriffenen Gerät als Shell-Befehl ausgeführt wird.
🗒️ CVSS Basisscore: 7.3 Hoch
Die Ursache der Sicherheitslücke CVE-2024-3273 ist CWE-77, eine Befehlsinjektion. Das bedeutet, dass ein Angreifer schädliche Befehle einschleusen kann, die das angegriffene System anschließend ausführt, da der eingegebene Befehl nicht validiert wird.
Da der Quellcode der Geräte nicht öffentlich ist, müsste zur Vermeidung dieses Problems vermutlich eine Validierungsfunktion in die Methode eingefügt werden, die die Anfragen verarbeitet. Beispielsweise könnte es eine Liste erlaubter Systembefehle geben, um die Ausführung beliebiger Befehle zu verhindern.
Die Sicherheitslücke verletzt hauptsächlich die folgenden Sicherheitsziele:
Diese Sicherheitslücke betrifft nur Geräte, deren Lebenszyklus bereits beendet ist. Daher empfiehlt der Hersteller, die Geräte zu ersetzen und die anfälligen Geräte nicht mehr zu verwenden.
Da diese Geräte nicht mehr unterstützt werden, erhalten sie auch keine Software-Sicherheitsupdates mehr, was bedeutet, dass die Sicherheitslücke nicht behoben wird. Die einzige Lösung ist daher, die Verwendung der betroffenen Produkte einzustellen.
Wenn ein Ersatz des anfälligen Geräts nicht möglich ist, sollte das Gerät auf jeden Fall aus dem öffentlichen Netzwerk entfernt werden und im äußersten Fall nur für Geräte im lokalen Netzwerk verwendet werden (eine Firewall sollte installiert werden, um externe Anfragen zu blockieren).
Ersten Berichten zufolge waren zum Zeitpunkt der Entdeckung der Sicherheitslücke über 92.000 Geräte im Netzwerk. Einer späteren Untersuchung zufolge könnte diese Zahl jedoch erheblich geringer gewesen sein und bei etwa 5500 Geräten gelegen haben. Trotzdem sind auch heute wahrscheinlich noch viele alte Geräte mit dem Netzwerk verbunden und dadurch anfällig.
Es wurden mehrere Proof-of-Concept-Exploits (PoC) veröffentlicht, und die Sicherheitslücke wird wahrscheinlich weiterhin weithin ausgenutzt. Bislang wurden mindestens 146 Fälle entdeckt, in denen versucht wurde, die Sicherheitslücke CVE-2024-3273 auszunutzen.
Ein Ausschnitt aus dem Beispielcode:
def execute_command(ip, command: str = "id", verbose: bool = True) -> str:
command_hex = ''.join(f'\\\\x{ord(c):02x}' for c in command)
command_final = f"echo -e {command_hex}|sh".replace(' ', '\t')
base64_cmd: str = base64.b64encode(command_final.encode()).decode()
url: str = f"{ip}/cgi-bin/nas_sharing.cgi"
params: dict = {
"user": "messagebus",
"passwd": "",
"cmd": "15",
"system": base64_cmd,
}