Критическая уязвимость с мая 2015 года позволяет выполнить удалённый обход аутентификации в telnetd
Исследователь по безопасности Саймон Йозефссон сообщил, что в коде открытого сетевого компонента telnetd (входит в состав GNU InetUtils) с мая 2015 года находилась критическая уязвимость, позволяющая выполнить удалённый обход аутентификации в системе. Эта проблема затрагивает все версии GNU InetUtils, начиная с версии 1.9.3 и заканчивая версией 2.7 включительно.
Сервер telnetd вызывает /usr/bin/login (обычно запускаемый от имени пользователя root), передавая значение переменной пользовательской среды, полученной от клиента, в качестве последнего параметра.
«Если клиент предоставляет значение пользовательской среды, представляющее собой строку „‑f root“, и передает параметр telnet(1) ‑a или ‑login, чтобы отправить эту пользовательскую среду на сервер, клиент будет автоматически авторизован как пользователь root, минуя обычные процессы аутентификации. Это происходит потому, что сервер telnetd не выполняет очистку переменной пользовательской среды перед передачей её в login(1), а login(1) использует параметр ‑f в обход обычной аутентификации. Таким образом, если добиться подстановки опции „‑f“ в имени пользователя, можно подключиться без проверки пароля», — пояснил Йозефссон.
При обычном подключении использовать имя пользователя вида "-f root" не получится, но в telnet имеется режим автоматического подключения, активируемый опцией "-a". В данном режиме имя пользователя берётся не из командной строки, а передаётся через переменную окружения USER. При вызове утилиты login значение данной переменной окружения подставлялось без дополнительной проверки и без экранирования спецсимволов. Таким образом, для подключения под пользователем root достаточно выставить в переменную окружения USER значение "-f root" и подключиться к
Читать на habr.com