
Proof-of-Concept-Skripte für 2 nicht authentifizierte RCEs in Samba (CVE-2026-4408 & CVE-2026-4480) und lokale Rechteausweitung in TelnetD (CVE-2026-28372)
Dieses Repository enthält Proof-of-Concept-Skripte für die Schwachstellen, die im Vortrag „Forgotten but Not Gone: Unauthenticated RCEs and LPEs in Legacy Linux Services“ auf der Black Hat USA 2026 und der DEF CON 34 vorgestellt wurden.
Lokale Privilegieneskalation in TelnetD: Nicht privilegierte Angreifer können die Umgebungsvariablen-Funktion von TelnetD ausnutzen, um sich eine Shell mit Root-Rechten zu verschaffen. Von Haus aus und gemäß seiner RFC ermöglicht das Telnet-Protokoll seinen Clients, Umgebungsvariablen für die Shell-Sitzung zu setzen. Diese Funktion war aus Sicherheitssicht schlecht gestaltet. Der Dienst erlaubte es nicht authentifizierten Clients, Umgebungsvariablen für den telnetd-Prozess selbst und für alle seine Unterprozesse zu setzen. Einer seiner Unterprozesse ist /usr/bin/login. Das Setzen von Umgebungsvariablen durch einen entfernten Telnet-Client ermöglichte es uns, /usr/bin/login mit der Umgebungsvariablen „CREDENTIALS_DIRECTORY“ zu starten. Dies führt dazu, dass der Login-Prozess in dem durch „CREDENTIALS_DIRECTORY“ angegebenen Verzeichnis nach einer Datei namens „login.noauth“ sucht. Wenn die Datei die Zeichenkette „yes“ enthält, überspringt der Login-Prozess die Authentifizierung und stellt dem Client eine Shell bereit, die mit dem vom Client angegebenen Benutzer läuft. Dabei kann es sich um jeden Benutzer handeln, sogar um root.
Nicht authentifizierte Remote-Codeausführung in Samba über SAMR: Samba verlässt sich auf Shell-Befehle, die in seiner Konfigurationsdatei (smb.conf) festgelegt sind, um verschiedene von seinen Clients angeforderte Vorgänge auszuführen, z. B. eine neue Netzwerkfreigabe hinzuzufügen, einen neuen Drucker hinzuzufügen und mehr. Einige dieser Shell-Befehle erhalten Parameter, die auf der vom Client gesendeten Anfrage basieren. In den meisten Fällen werden die Parameter bereinigt und Sonderzeichen maskiert, bevor der Befehl ausgeführt wird, um Shell-Injection zu verhindern.
Die Schwachstelle liegt in der Funktion „check_password_complexity“, die eine vom Client angegebene Zeichenkette ohne Bereinigung in einen Shell-Befehl formatiert. Die Schwachstelle erfordert zwei Bedingungen:
Um den RPC-Daemon von Samba (samba-dcerpcd) für die Verwendung von NCACN_IP_TCP zu konfigurieren, muss er als separater Systemdienst gestartet werden und nicht als Teil des Haupt-Samba-Dienstes. Außerdem muss die Option „rpc start on demand helpers“ in der Konfigurationsdatei auf „no“ gesetzt werden.
Nicht authentifizierte Remote-Codeausführung in Samba über SPOOLSS: Die Funktion generic_job_submit formatiert ebenfalls eine vom Client kontrollierte Zeichenkette ohne Bereinigung in einen Shell-Befehl. Die Kombination der folgenden Konfigurationen führt zu dieser Schwachstelle: