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
