Serie neuer Schwachstellen in telnetd, die Root-Rechte im System gewÀhren

Nach der Ende Januar entdeckten Schwachstelle, die es ermöglichte, sich als Benutzer root ohne PasswortĂŒberprĂŒfung anzumelden, wurden im Telnet-Server telnetd aus dem GNU InetUtils-Paket mehrere Möglichkeiten zur Erhöhung der Privilegien festgestellt, die sich aus der unvollstĂ€ndigen Behebung der Schwachstelle im Jahr 1999 (CVE-1999-0073) ergeben haben.

Die Schwachstellen entstehen durch die Möglichkeit, dass telnetd Umgebungsvariablen durch den Client mithilfe der Option ENVIRON an den Server ĂŒbertrĂ€gt. Solche Umgebungsvariablen werden im Kontext des telnetd-Prozesses gesetzt und bearbeitet und an die von ihm gestarteten Kindprozesse, einschließlich des mit root-Rechten gestarteten Prozesses /bin/login, weitergeleitet. Die Schwachstelle CVE-1999-0073 ermöglichte es dem Telnet-Client, die Umgebungsvariable LD_LIBRARY_PATH zu ĂŒbergeben, deren Festlegung dazu fĂŒhrt, dass die vom Benutzer angegebene Shared Library beim Start des login-Prozesses geladen wird. Bei der Möglichkeit, Dateien in ein System, das die Telnet-Protokollverbindung unterstĂŒtzt, hochzuladen, kann der Angreifer eine speziell gestaltete Bibliothek hochladen und deren Laden mit root-Rechten organisieren.

Im telnetd des GNU InetUtils-Pakets wurde die Schwachstelle durch das Verbot gefĂ€hrlicher Umgebungsvariablen durch Filterung nach den Masken „LD_“, „LIBPATH“, „ENV“, „IFS“ und „_RLD_“ behoben. Dabei blieb die Umgebungsvariable „CREDENTIALS_DIRECTORY“, die beim Start von /usr/bin/login verarbeitet wird, jedoch unblockiert. Mit dieser Umgebungsvariable konnte der Benutzer das Verzeichnis fĂŒr die Anmeldeinformationen Ă€ndern und eine Datei login.noauth mit dem Wert „yes“ im neuen Verzeichnis ablegen, die eine Anmeldung ohne Passwort aktiviert (Ă€hnlich wie das Übergeben des Flags „-f“ an den login-Prozess). Diese Einstellung gilt fĂŒr alle Benutzer, einschließlich root.

Der Angriff besteht darin, dass ein unprivilegierter Benutzer ein Unterverzeichnis in seinem Home-Verzeichnis erstellt, eine Datei login.noauth in dieses hochlĂ€dt und versucht, sich mit der festgelegten Umgebungsvariable „CREDENTIALS_DIRECTORY=erstellt Verzeichnis“ und der Übermittlung der Umgebungsvariable „USER=root“ anzumelden (in Telnet gibt es einen automatischen Verbindungsmodus, in dem der Benutzername nicht aus der Befehlszeile, sondern ĂŒber die Umgebungsvariable USER ĂŒbergeben wird). Beispiel fĂŒr einen Exploit.

Im Folgenden wurde eine weitere Methode entdeckt, um root-Zugriff ĂŒber telnetd zu erhalten, die mit der Manipulation der Umgebungsvariablen OUTPUT_CHARSET und LANGUAGE zusammenhĂ€ngt, die von der GNU gettext-Bibliothek verarbeitet werden, sowie der Umgebungsvariablen GCONV_PATH, die in glibc verwendet wird. Durch das Setzen der Umgebungsvariablen OUTPUT_CHARSET und LANGUAGE kann der Angreifer die FunktionalitĂ€t zur Konvertierung von Zeichencodierungen in gettext aktivieren, die die Funktion iconv_open() aufruft. Bei der AusfĂŒhrung der Funktion iconv_open() wĂ€hrend des Ladens der Konfigurationsdatei gconv-modules wird der Pfad unter BerĂŒcksichtigung der Umgebungsvariable GCONV_PATH berechnet. Durch das EinfĂŒgen der gconv-modules-Datei kann das Laden einer eigenen gemeinsam genutzten Bibliothek wĂ€hrend der Ausgabe einer lokalisierten Zeichenfolge durch den Prozess login organisiert werden.

CVE-Identifikatoren fĂŒr die identifizierten Schwachstellen wurden bisher nicht zugewiesen. Als Schutzmaßnahme wird die Implementierung einer Whitelist von erlaubten Werten („TERM“, „DISPLAY“, „USER“, „LOGNAME“ und „POSIXLY_CORRECT“) in Betracht gezogen, wobei alle anderen Umgebungsvariablen blockiert werden, Ă€hnlich wie es mit Umgebungsvariablen in OpenSSH gehandhabt wird. Die Schwachstellen wurden im GNU InetUtils-Paket bestĂ€tigt, das die Server telnetd-Implementierung enthĂ€lt, die in Debian, Ubuntu und verwandten Distributionen geliefert wird. Korrekturen fĂŒr GNU InetUtils stehen derzeit nicht zur VerfĂŒgung. In Rocky Linux 9 wird eine modifizierte telnetd-Version geliefert, die nicht anfĂ€llig fĂŒr diese Schwachstellen ist und anstelle der Filterung gefĂ€hrlicher Umgebungsvariablen eine Whitelist-PrĂŒfung implementiert. Eine Whitelist-Filterung wurde auch in der telnetd-Version von FreeBSD implementiert. In OpenBSD wurde telnetd im Jahr 2005 aus dem System entfernt.

Quelle: opennet.ru

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster