В сървъра 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. При извикване на утилитата login, стойността на тази променлива на средата беше включена без допълнителна проверка и без екраниране на специални символи. Следователно, за да се свържете като потребител root, е достатъчно да зададете на променливата на средата USER стойността "-f root" и да се свържете с telnet сървъра, посочвайки опцията "-a": $ USER='-f root' telnet -a име_сървъра
Промяната, довела до уязвимостта, беше добавена в кода на telnetd през март 2015 г. и беше свързана с отстраняването на проблем, който не позволяваше определяне на името на потребителя в режим autologin без аутентификация в Kerberos. Като решение беше добавена поддръжка за предаване на името на потребителя за режим autologin чрез променливата на средата, но забравиха да добавят проверка на валидността на името на потребителя от променливата на средата.
Източник: opennet.ru
