Im telnetd-Server des GNU InetUtils wurde eine Schwachstelle entdeckt, die es ermöglicht, sich als beliebiger Benutzer, einschließlich des root-Benutzers, ohne Passwortüberprüfung anzumelden. Eine CVE-Identifikation wurde bislang nicht zugewiesen. Die Schwachstelle tritt ab Version InetUtils 1.9.3 (2015) auf und bleibt in der aktuellen Version 2.7.0 unbehoben. Ein Patch ist in Form von Patches (1, 2) verfügbar.
Das Problem entsteht dadurch, dass der Prozess telnetd zur Passwortüberprüfung das Dienstprogramm „/usr/bin/login“ aufruft und den vom Client beim Verbindungsaufbau angegebenen Benutzernamen als Argument übergibt. zu einem Server. Das Dienstprogramm „login“ unterstützt die Option „-f“, die es ermöglicht, sich ohne Authentifizierung anzumelden (diese Option wird verwendet, wenn der Benutzer bereits erfolgreich überprüft wurde). Somit kann, wenn es gelingt die Option „-f“ im Benutzernamen zu substituieren, eine Verbindung ohne Passwortüberprüfung hergestellt werden.
Bei einer regulären Verbindung ist es nicht möglich, einen Benutzernamen wie „-f root“ zu verwenden, jedoch gibt es im telnet einen automatischen Verbindungsmodus, der durch die Option „-a“ aktiviert wird. In diesem Modus wird der Benutzername nicht über die Befehlszeile übergeben, sondern über die Umgebungsvariable USER bereitgestellt. Bei dem Aufruf des Dienstprogramms login wurde der Wert dieser Umgebungsvariable ohne zusätzliche Überprüfung und ohne Escape von Sonderzeichen eingesetzt. Daher reicht es aus, die Umgebungsvariable USER auf den Wert „-f root“ zu setzen und sich mit der Option „-a“ mit dem telnet-Server zu verbinden: $ USER=’-f root’ telnet -a servername
Die zur Schwachstelle führende Änderung wurde im März 2015 in den telnetd-Code eingefügt und war mit der Behebung eines Problems verbunden, das die Identifizierung des Benutzernamens im Autologin-Modus ohne Kerberos-Authentifizierung verhinderte. Als Lösung wurde die Unterstützung zur Übertragung des Benutzernamens für den Autologin-Modus über eine Umgebungsvariable hinzugefügt, jedoch wurde vergessen, die Validierung des Benutzernamens aus der Umgebungsvariable zu implementieren.
Quelle: opennet.ru
