Odkryto lukę w zabezpieczeniach serwera telnetd pakietu GNU InetUtils. Luka ta umożliwia połączenie z dowolnym użytkownikiem, w tym root, bez weryfikacji hasła. Identyfikator CVE nie został jeszcze przypisany. Luka występuje od wersji 1.9.3 pakietu InetUtils (2015) i pozostaje niezałatana w obecnej wersji 2.7.0. Poprawka jest dostępna w poprawkach (1, 2).
Problem wynika z faktu, że w celu sprawdzenia hasła proces telnetd wywołuje narzędzie „/usr/bin/login”, przekazując jako argument nazwę użytkownika podaną przez klienta podczas łączenia się z serwerNarzędzie „login” obsługuje opcję „-f”, która umożliwia logowanie bez uwierzytelniania (opcja ta jest przeznaczona do użycia, gdy użytkownik został już uwierzytelniony). W związku z tym, zastępując nazwę użytkownika opcją „-f”, można połączyć się bez weryfikacji hasła.
W przypadku normalnego połączenia nie można używać nazwy użytkownika takiej jak „-f root”, ale Telnet ma tryb automatycznego połączenia aktywowany opcją „-a”. W tym trybie nazwa użytkownika nie jest pobierana z wiersza poleceń, lecz przekazywana przez zmienną środowiskową USER. Podczas wywołania narzędzia logowania wartość tej zmiennej środowiskowej była zastępowana bez dodatkowego sprawdzania i bez ucieczki znaków specjalnych. Dlatego, aby połączyć się jako użytkownik root, wystarczy ustawić zmienną środowiskową USER na „-f root” i połączyć się z serwerem Telnet za pomocą opcji „-a”: $ USER='-f root' telnet -a server_name
Zmiana, która wprowadziła lukę, została dodana do kodu telnetd w marcu 2015 roku i rozwiązała problem uniemożliwiający ustalenie nazwy użytkownika w trybie automatycznego logowania bez uwierzytelniania Kerberos. Rozwiązaniem było dodanie obsługi przekazywania nazwy użytkownika w trybie automatycznego logowania za pośrednictwem zmiennej środowiskowej, ale pominięto weryfikację nazwy użytkownika w zmiennej środowiskowej.
Źródło: opennet.ru
