В сервере telnetd из набора GNU InetUtils выявлена уязвимость, позволяющая подключиться под любым пользователем, включая пользователя root, без проверки пароля. CVE-идентификатор пока не присвоен. Уязвимость проявляется начиная с версии InetUtils 1.9.3 (2015 год) и остаётся неисправленной в актуальном выпуске 2.7.0. Исправление доступно в форме патчей (1, 2). Проблема вызвана тем, что для проверки пароля процесс telnetd вызывает утилиту "/usr/bin/login", передавая в качестве аргумента имя пользователя, указанного клиентом при подключении к серверу. Утилита "login" поддерживает опцию "-f", позволяющую осуществить вход без выполнения аутентификации (подразумевается, что эта опция используется, когда пользователь уже прошёл проверку). Таким образом, если добиться подстановки опции "-f" в имени пользователя, можно подключиться без проверки пароля. При обычном подключении использовать имя пользователя вида "-f root" не получится, но в telnet имеется режим автоматического подключения, активируемый опцией "-a". В данном режиме имя пользователя берётся не из командной строки, а передаётся через переменную окружения USER (клиент передаёт переменные окружения на сервер при помощи опции ENVIRON). При вызове утилиты login значение данной переменной окружения подставлялось без дополнительной проверки и без экранирования спецсимволов. Таким образом, для подключения под пользователем root достаточно выставить в переменную окружения USER значение "-f root" и подключиться к telnet-серверу, указав опцию "-a": $ USER='-f root' telnet -a имя_сервера Приведшее к уязвимости изменение было добавлено в код telnetd в марте 2015 года и было связано с устранением проблемы, не позволявшей определить имя пользователя в режиме autologin без аутентификации в Kerberos. В качестве решения была добавлена поддержка передачи имени пользователя для режима autologin через переменную окружения, но проверку корректности имени пользователя из переменной окружения добавить забыли. В 2007 году похожая проблема c передачей аргумента "-f" при вызове login была выявлена в telnet из состава Solaris, а в 1994 году в rlogin из AIX. ============== В telnetd версии InetUtils (1.9.3 и выше) существует уязвимость, позволяющая получить доступ к серверу без пароля, используя опцию "-f" при подключении через переменную окружения USER или режим autologin. Эта уязвимость возникла из-за отсутствия проверки имени пользователя, передаваемого в утилиту login.